====== catgirl ======
**catgirl** é um cliente IRC bem simples e de interface de texto (__ncurses__).
Para se ter idéia da simplicidade, você pode se conectar ao servidor IRC do [[admin:irc:start|Slackjeff]] executando o seguinte comando no terminal:
$ catgirl -h irc.slackjeff.com.br
* **Obs.:** Assume-se aqui que o sinal ''$'' é o //prompt// do seu terminal.
Logo veremos com mais detalhes o que é possível fazer com ele, e formas mais elaboradas de configurar a conexão.
===== Instalação =====
Toda instalação precisa ser realizada com privilégios de superusuário. Portanto esses comandos devem ser executados como root, ou utilizando ferramentas para elevação de privilégio (como __doas__ ou __sudo__).
Em um sistema derivado do Debian/Ubuntu:
$ apt install catgirl
Em um sistema derivado do Arch:
$ pacman -S catgirl
No FreeBSD:
$ pkg install irc/catgirl
No OpenBSD/NetBSD:
$ pkg_add catgirl
===== Parametrização =====
Como mostrado no início, tudo pode ser realizado por uma única linha de comando. Vamos então expandir as possibilidades.
==== Apelido ====
Use a opção ''-n'' para definir um apelido (//nickname//). Quando não informado, será usado o nome do seu usuário no sistema operacional. Por exemplo, para se conectar ao servidor ''irc.slackajeff.com.br'' usando o apelido ''nick'', basta digitar:
$ catgirl -h irc.slackjeff.com.br -n nick
==== Autorizando certificados autoassinados ====
Alguns servidores IRC não utilizam um certificado de uma autoridade certificadora (CA) confiável. Em vez disso utilizam um certificado autoassinado no servidor. Isto é algo muito comum em servidores Intranet ou servidores .onion.
Muitos clientes de IRC (incluindo o __catgirl__) rejeitam a conexão TLS, uma vez que os clientes não conseguem validar esse certificado com nenhuma CA. Alguns clientes de IRC permitem que você ignore ou aceite manualmente o certificado, para que a conexão possa prosseguir. Para fazer isso no __catgirl__, obtenha uma cópia do certificado, com o comando:
$ catgirl -h hostname -o > /caminho/para/o/certificado.pem
Dessa forma você gravou o certificado autoassinado do servidor no arquivo ''/caminho/para/o/certificado.pem'', e agora pode apontar para ele como um certificado confiável (se realmente você confiar, claro). Com a opção ''-t'' você informa o caminho para o certificado a ser autorizado. Assim, poderá se conectar no servidor sem problemas.
$ catgirl -h hostname -t /caminho/para/o/certificado.pem
Lembrado aqui também, que várias outras opções (como ''-n'' que vimos anteriormente) podem ser utilizadas em conjunto durante a conexão.
==== Arquivo de configuração ====
Tudo pode ser feito via linha de comando, e essa é uma forma muito boa para testar todas as configurações de servidor e autenticação que você queira fazer usando o __catgirl__ como cliente IRC. Porém, depois que tudo está indo bem, convém persistir toda a parametrização em um arquivo de configuração.
Para cada serviço IRC você deverá ter um arquivo de configuração diferente. O diretório padrão para armazenar esses arquivos é
o ''$XDG_CONFIG_DIRS/catgirl/'' (que geralmente se traduz para ''$HOME/.config/catgirl/''). Dentro desse diretório você deve salvar os arquivos de configuração de cada serviço. Por exemplo, você pode criar o arquivo ''slackjeff.conf'' dentro dele, para guardar as configurações de acesso ao IRC do Slackeff.
Até o momento vimos as opções: ''-n'' para o nick; ''-h'' para o host; ''-t'' para expecificar a confiança no certificado do servidor que você baixou usando a opção ''-o'', essas informações podem ser resumidas num arquivo de configuração da seguinte forma:
host = irc.slackjeff.com.br
trust = /caminho/para/o/certificado.pem
nick = seunickname
Agora com esse arquivo salvo, por exemplo em ''$HOME/.config/catgirl/slackjeff.conf'' basta se conectar usando o comando:
$ catgirl slackjeff.conf
==== Autenticação com senha ====
Se seu nick é registrado, você pode querer que a autenticação por senha ou por certificado seja feita pelo cliente IRC e você não precise ficar entrando com o comando ''/msg NICKSERV IDENTIFY nick password'' toda vez que se conecta.
Caso você não queira registrar um certificado no ''nickserv'' basta fornecer o //password// ao __catgirl__, use a opção ''-w'' e o __catgirl__ irá pedir sua senha antes de se conectar, é possível passar ela já pela linha de comando ou pelo arquivo de configuração.
$ catgirl -h irc.slackjeff.com.br -n seunickregistrado -e -w suasenha
Deixe a senha em branco se preferir digitá-la no prompt.
A opção ''-e'' dev ser usada se você vai fornecer dados de autenticação externa, o equivalente no arquivo de configuração será então:
host = irc.slackjeff.com.br
nick = seunick
#pass = minhasenha
pass
sasl-external
**Observações:**
* Na opção ''pass'' é possível informar a senha (''pass = minhasenha''). No exemplo acima, porém, não foi informada, o que significa que ela será solicitada ao iniciar o programa.
* A opção ''sasl-external'' equivale à opção ''-e'' nas configurações
==== Autenticação via certificado externo ====
O __catgirl__ fornece uma facilidade para a autenticação via certificado, você pode usar ele para gerar seu próprio certificado de cliente que poderá ser adicionado ao ''nickserv'' para sua autenticação, basta digitar:
$ catgirl -p ~/.config/catgirl/certificado.pem
O local escolhido ser ''~/.config/catgirl/certificado.pem'' facilita usar o certificado poteriormente. Pronto, após adicionar o //fingerprint// deste certificado no ''nickserv'' via ''/msg NICKSERV CERT ADD'' você pode se conectar-se sem senha com o seguinte arquivo de configurações
host = irc.slackjeff.com.br
nick = seunick
cert = certificado.pem
sasl-external
O equivalente em linha de comando é:
$ catgirl -h irc.slackjeff.com.br -n seunick -c certificado.pem -e
Lembrando que deve ser utilizado o nome do arquivo ''certificado.pem'' apenas se ele estiver salvo no diretório padrão definido em ''$HOME/.config/catgirl/'', caso contrário deve ser utilizado o caminho absoluto de onde está localizado o certificado.
Caso seu certificado tenha uma chave privada também, basta extender um pouco a linha de comando para especificar o arquivo da chave com a opção ''-k'':
$ catgirl -h irc.slackjeff.com.br \
> -n seunick \
> -c certificado.pem \
> -k chave.pem \
> -e
Ou de forma equivalente no arquivo de configurações:
host = irc.slackjeff.com.br
nick = seunick
cert = certificado.pem
priv = chave.pem
sasl-external
Lembrando que a ''chave.pem'' e o ''certificado.pem'' devem estar no diretório padrão definido em ''$HOME/.config/catgirl/'', caso contrário deve ser utilizado o caminho absoluto de onde está localizado o certificado e a chave privada.
==== Ingressar automaticamente em canais ====
É possível fornecer uma lista de canais para não necessitar ficar usando o comando ''/join #canal'' para ingressar em ''#canal'' sempre que quiser interagir neste. Use ''-j #canal1,#canal2,#etc'' na linha de comando ou adicione a linha no arquivo de configuração:
join = #canal1,#canal2,#canal3,#etc
===== Configurando a interface =====
É possível alterar alguns elementos da interface de usuário, bem como salvar as mensagens recebidas ao longo de sua conexão para serem vistas em conexões futuras, uma vez que o comportamento padrão é não carregar mensagem alguma a cada nova conexão. Vamos listar algumas opções para interface.
==== Salvar mensagens ====
A opção ''-s nome'' irá salvar o histórico de mensagens em ''nome'', esse arquivo ficará localizado em ''~/.local/share/catgirl/nome'' o equivalente no arquivo de configurações é adicionar a linha
save = nome
==== Horário nas mensagens ====
Na interface padrão cada mensagem chega sem o registro de data e hora, caso você queira adicionar o horário adicione a opção ''-T'' ou a opção ''timestamp'' no arquivo de configuração. Sem fornecer uma //string// de data cada mensagem recebida estará no fomato ''%X'' que é o mesmo que ''%H:%M:%S'' (hora, minuto e segundo). Particularmente gosto de fornecer a //string// para apenas hora e minuto
timestamp = %H:%M
Ou adicione a opção ''-T %H:%M'' na linha de comando para conexão.
==== Cores dos nicks e canais ====
Podemos definir a semente inicial e o limite para as cores que que o **catgirl** irá definir para os //nicknames// e canais conforme você vá abrindo as telas ou os usuários vão chegando ao canal. Se não usar essa opção os valores serão o padrão de ''0'' para semente inicial e ''75'' para o limite de cor.
Eu gosto de usar apenas 16 cores pois uso meu emulador de terminal com fundo muito escuro e apenas 16 cores dá um contraste bom, os valores padrão aparecem //nicknames// e canais com tons de vermelho escuro ou azul escuro que não constrastam bem. Para isso adicione ''-H 0,15'' na sua linha de comando, ou a linha
hash = 0,15
Caso você queira desabilitar o colorido, é só usar o valor ''0,0''.
==== Notificações ====
Caso queira ser informado em seu ambiente gráfico a respeito das menções ao seu nickname ou demais notificações que o IRC envia é necessário especificar a aplicação de notificações manualmente. Use a opção ''-N nome_utilitario'' ou acrescente a linha ao arquivo de configurações
notify = fyi
Neste exemplo escolhi como a aplicação __fyi__, que é uma implementação leve do __notify-send__ muito mais comum nas distribuições Linux.
===== Movendo-se pelo catgirl =====
O __catgirl__ possui uma interface de terminal, sem suporte a ações de mouse, apenas de teclas. Portanto, seguem algumas dicas para você se mover pelas telas de cada canal, //chanserv//, global, etc.
Você pode usar ''Ctrl'' + ''n'' para a próxima tela e ''Ctrl''+ ''p'' para a tela anterior.
As combinações ''Alt'' + ''0'', ''Alt'' + ''1'', e assim por diante (até ''Alt'' + ''9'') podem ser usadas para navegar para as telas número 0, 1, e assim por diante (até a tela 9).
Atalhos de navegação que geralmente funcionam para edição de comandos no shell (como no __bash__, por exemplo) também funcionam aqui, para redigir as mensagens:
* ''Ctrl'' + ''e'' vai para o fim a linha;
* ''Ctrl'' + ''a'' vai para o início da linha;
* ''Ctrl'' + ''w'' apaga uma palavra a partir do seu fim;
* ''Ctrl'' + setas (''🠜 🠝 🠟 🠞'') muda o cursor palavra por palavra na direção da seta.
===== Anonimato via tor =====
O __catgirl__ não possui de forma nativa uma opção para se conectar usando //proxy//. Porém é bem simples utilizar um //proxificador// para obter essa possibilidade, veja esse tópico no [[howto:irconion|livre de receitas]] desta wiki.
===== Conclusão =====
Confira abaixo um exemplo de arquivo com todas as opções abordadas até aqui, para se conectar ao servidor ''irc.slackjeff.com.br'':
host = irc.slackjeff.com.br
# Se houver necessidade de aceitar certificado autoassinado
trust = cert_autoassinado.pem
# Autenticação via certificado e chave privada
cert = meucert.pem
priv = minhachave.pem
# Se não for autenticação por certificaco, use a linha abaixo
#pass = suasenha
# Demais configurações
nick = meunickname
sasl-external
join = #canal1,#canal2,#canal3,#etc
save = meusave
timestamp = %H:%M
hash = 0,15
notify = fyi
Lembrando que os arquivos de certificado devem estar na pasta ''~/.config/catgirl/''. Um bom exercício é testar graudalmente as configurações via linha de comando. Assim que todos os parâmetros desejados fazem a conexão do jeito que você espera, transponha essas opções para o arquivo de configurações.