====== 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.