LP-BR-SP/ConfigNights/2012-12-01: IRC e Weechat

From LibrePlanet
Jump to: navigation, search

O 0-ésimo config night ocorreu no IC/Unicamp no dia 1o. de dezembro de 2012, entre as 18:00 e as 2:00 do dia seguinte, onde configuramos o WeeChat, discutimos sobre IRC e comemos pizza. bitlbee estava na lista mas não conseguimos passar por ele.

Todo o material abaixo foi produzido durante o config night e foi editado colaborativamente nesse pad (que pode expirar a qualquer momento) por Sergiodj, ISF, Raniere, Panaggio e Krisman, que foram os participantes do config night.

O que é o IRC?

O IRC é um "protocolo" de comunicação utilizado nos primórdios da internet e ainda utilizado atualmente por repestear.

A conexão é feita acessando um servidor, e as mensagens são trocadas dentro de canais.

O que é preciso para utilizar o IRC?

É necessário um cliente. Aqui iremos utilizar o WeeChat WeeChat.

Hierarquia no IRC

Por ser uma rede que permite a interação entre diversos usuários ao mesmo tempo (em canais), o IRC utiliza uma hierarquia de usuários para facilitar a administração de servidores e canais.

Wallops/ircop

São os administradores do servidor. Em geral, podem fazer qualquer coisa nele :-).

OPs (operadores)

Símbolo: @USER

+o

São os "roots" de um canal, e podem executar comandos de admistração, como trocar o tópico, banir ou "kickar" qualquer usuário.

Na Freenode, o esquema é um pouco mais complexo: um operador pode ter mais permissão para executar tarefas do que outro. Mas em geral, todos os operadores podem executar as tarefas básicas: kick e ban e troca de tópico. O kick é geralmente utilizado quando um usuário está sendo inconveniente (de acordo com as regras de cada canal), mas que merece apenas uma advertência. Quando o usuário é "kikcado", ele poderá retornar ao canal quando quiser. Já o ban é um comando mais drástico: ele impede que usuário volte ao canal. Veja abaixo, na lista de comandos, alguns comandos que podem ser utilizados pelos operadores.

halpOP (half operator; meio operadores)

Símbolo: %USER

+h

São quase operadores. Em geral, um half op pode trocar o tópico do canal e "kickar" ou banir usuários.

- Voice:

Símbolo: +USER

+v

É apenas uma marcação especial que, em geral, não serve para nada. No entanto, em alguns casos bem particulares, um canal pode ter modos especiais, com os quais apenas operadores e voices podem "falar" no canal. Não é muito utilizado hoje em dia.

Usuário normal

Não tem privilégios especiais.

Serviços existentes em alguns servidores (freenode, por exemplo)

Alguns servidores IRC utilizam serviços para facilitar algumas tarefas dos usuários. Os mais famosos são:

Chanserv

Serviço utilizado para administrar canais no IRC. É possível registrar um canal, obter informações sobre ele, setar modos diferentes, setar tópicos, etc. Alguns servidores utilizam versão extendidas do Chanserv (freenode, por exemplo), que aceitam muito mais opções do que o "geral". Com o Chanserv, também é possível alterar a lista de acesso de operadores ao canal.

Nickserv

Serviço utilizado para registrar nicknames. É possível registrar, obter informações, setar opções de segurança de um nick, etc. Na freenode, por exemplo, também é possível setar algumas opções a mais.

Memoserv (história)

Serviço utilizado nos primórdios do IRC para trocar mensagens entre usuários sem a necessidade dos dois estarem online. Foi uma solução encontrada pelos servidores IRC para igualar a feature oferecida pelos messengers (na época, novidade). O Memoserv ainda existe (na freenode, por exemplo), mas praticamente não é utilizado.

É importante mencionar que os serviços são, na verdade, usuários da freenode. Portanto, você pode optar por dois comandos para comunicar-se com eles (veja abaixo a diferença entre eles): o `/msg` e o `/query`.

Dicas básicas sobre a utilização dos serviços na Freenode

Nickserv

  • Obter ajuda:
 /msg nickserv help [COMANDO]
  • Registrar seu nick:
 /msg nickserv SENHA EMAIL

É obrigatório fornecer um e-mail para o registro. O nickname que você está utilizando obviamente não será registrado caso uma outra pessoa já tenha feito isso.

  • Identificar-se no servidor:
 /msg nickserv id SENHA
  • Obter informações sobre um nick:
 /msg nickserv info NICK
  • Esconder seu e-mail (quando alguém listar as informações sobre seu nick, RECOMENDADO):
 /msg nickserv set hidemail on
  • Esconder informações sobre você quando alguém requisitar informações sobre seu nick:
 /msg nickserv set private on
  • Proteger seu nick (leia abaixo, RECOMENDADO):
 /msg nickserv set enforce on

Em algun servidores (freenode, por exemplo), se você não habilitar a proteção do nickname e um outro usuário utilizar seu nick (quando você não estiver online), o servidor irá apenas alertá-lo de que este nick já é registrado, e irá pedir para que ele se autentique. No entanto, se o usuário ignorar essa mensagem e não se autenticar, o servidor não irá tomar nenhuma outra atitude. Por isso, recomenda-se que essa opção seja habilitada para evitar que outras pessoas possam se passar por você.

Chanserv

Apesar de o registro de canais ser liberado a todos os usuários, recomenda-se fortemente que se faça uma pesquisa para saber se um determinado canal já existe ou não (às vezes, um canal sobre determinado assunto já existe mas não utiliza o nome que você está pensando). Veja abaixo sobre o comando "/join", utilizado para entrar em canais.

  • Obter ajuda:
 /msg chanserv help [COMANDO]
  • Registrar um canal
 /msg chanserv register #CANAL
  • Pedir ao Chanserv para ficar no seu canal:
 /msg chanserv set #CANAL guard on
  • Alterar lista de permissões para um canal (veja abaixo):
 /msg chanserv flags #CANAL [NICK|HOST|GROUP FLAGS]

É altamente recomendado que o "help" do comando "flags" seja lido e compreendido, pois ele é bastante importante. É com o comando "flags" que você pode adicionar/retirar operadores no seu canal, e setar exatamente quais permissões cada usuário possui.

Padrões

  • Quando enviar mensagem `foo` para o usuário `bar` utilize:
   bar: foo

Comandos

  • Para encerrar o WeeChat:
   /exit
   /quit
  • Para obter ajuda
   /help COMANDO
  • Para entrar em/sair de um servidor:
   /connect SERVER[/PORT]
   /disconnect SERVER[/PORT]

Nota sobre WeeChat: SERVER pode ser o nome de um servidor (caso ele já esteja cadastrado no WeeChat), ou o endereço do servidor.


  • Para entrar no canal (note que o canal começa com #):
   /join CANAL
  • Para ver informações sobre um usuário:
   /whois USER
  • Para dar/retirar voice de um usuário:
   /voice USER
   /devoice USER
  • Para dar/retirar OP de um usuário:
   /op USER
   /deop USER
  • TODO
   /halfop
   /dehalfop
  • Para convidar um usuário a um canal:
   /invite USER [USER...USER] CANAL
   /ison
   /kick USER
   /kickban USER|PATTERN
   /kill
  • Para mencionar a si mesmo no canal:
   /me MENSAGEM
  • Alterar o modo de um usuário ou um canal
   /mode [CANAL] [+|-]o|p|s|i|t|n|m|l|b|e|v|k [ARGUMENTOS] USER [+|-]i|s|w|o

Adciona (+) ou remove (-) modos para o usuário USER ou um canal CANAL.

  • Para abrir a tela de PVT de um usuário
 /query USER
  • Para enviar mensagem a um usuário, sem abrir a tela de PVT.
   /msg USER MENSAGEM
  • Para ignorar as mensagens de um usuário:
   /ignore USER
   /mute USER
  • Para trocar seu nickname
   /nick NICK
  • Enviar uma nota para um usuário:
   /notice [-server SERVER] USER|SERVER mensagem
  • Adiciona ou remove notificações sobre usuários entrando em canais:
   /notify add NICK [SERVER -away]
   /notify del NICK|-all [SERVER]
  • Para sair de um canal:
   /part [CANAL[,CANAL...CANAL]] [MSG]

Se você utilizar o comando sem especificar um canal, sairá do canal onde estiver.

  • Vê o ping para um servidor, opicionalmente encaminhando para outro servidor
   /ping SERVER1 [SERVER2]
  • Para reconectar a um servidor:
   /reconnect
  • Para alterar o tópico do canal atual:
   /topic novo topico

Dicas

  • Auto-complete pode ser usado tanto para comandos quando para nicks de usuários.
  • Lembre que todo comando começam com `/`. Use espaço entre a barra e o comando quando estiver falando sobre ele para evitar que seja executado.

Plugins

Como instalar

  • Na mão: copie o arquivo do plugin disponível em [1] para $HOME/.weechat/<linguagem de programação do script>/autoload
  • Usando weeget (weechat < 0.3.8):
 /weeget list (lista todos os plugins)
 /weeget install <nome do plugin>
 /weeget remove <nome do plugin>

- Usando o plugin builtin do weechat (weechat >= 0.3.8)

 - /script list
 - /script install <nome do script>

Como atualizar

  • Na mão: instale de novo (igual o processo de instalação) só que usando a versão atual do script
  • Usando weeget:
 /weeget update
 /weeget upgrade
  • Usando plugin builtin:
 /script update
 /script upgrade

Plugins úteis

  • buffers: gera uma listagem de todos os buffers abertos
  • go: permite navegação entre buffers com Control+g e fuzzy matching
  • grep: permite grepar expressões em um buffer
  • urlbuf: cria um buffer que armazena todas as urls enviadas em todos os canais, permitindo copiar/colar facilmente
  • typing_notice: mostra quantos caracters
  • iset: permite navegar pelas configurações do weechat com /iset PADRÂO
  • weeget (não é necessário a partir do weechat 0.3.9 em diante): instalação/upgrade de plugins
  • identify_me: script meu [ https://github.com/ISF/identify_me] para identificação via /msg pro nickserv (miguezento mas funciona)
  • selective-away - script meu (Sergio) para setar away quando o xscreensaver der lock na tela. O script também seta away "seletivo", i.e., somente nos servidores que você quer. Ainda não o coloquei em nenhum repositório :-).

Versão mais nova: 0.3.9.2

Veja como instalar a versão mais recente nas seguintes distros:

Ubuntu/Debian/...

Utilize o ppa disponibilizado em https://launchpad.net/%7Enesthib/+archive/weechat-stable.

# add-apt-repository ppa:nesthib/weechat-stable
# apt-get update
# apt-get install weechat

Arch

A versão mais recente (0.3.9.2) está disponível no repositório extra. Instale usando:

$ pacman -S weechat

Fedora

A versão atual no Fedora 17 (última versão estável do Fedora na data deste documento) é a 0.3.8.

Para instalá-la, utilize o comando "yum install weechat"

Se quiser utilizar a versão mais recente do WeeChat, instale a versão do pacote que está no Koji:

yum install http://kojipkgs.fedoraproject.org//packages/weechat/0.3.9.2/1.fc17/x86_64/weechat-0.3.9.2-1.fc17.x86_64.rpm # (para x86_64)

Você pode obter pacotes para outras arquiteturas ou versões do Fedora em [2].

Troubleshooting

  • Formatação errada no weechat (dentro do tmux)
    • Causado pelo valor incorreto do TERM, originalmente xterm-256color. O correto é TERM=screen-256color.
    • A treta na verdade é do tmux, mas impacta o weechat (e outras coisas como por exemplo pms)
  • Autocomplete decente
   /set weechat.completion.partial_completion_command on
   /set weechat.completion.partial_completion_command_arg on
   /save
  • Fechar buffer quando um `/part` for usado
   /set irc.look.part_closes_buffer on
   /save
  • Organizar a lista de buffers:
    • Instalar buffers.pl
   /script install buffers.pl
    • Mover buffer para uma posição:
   /buffer move POSITION
   /save
    • Trocar dois buffers de posição:
   /buffer swap BUFFER_NUMBER_1 BUFFER_NUMBER_2
   /save
    • Fazer com que novos canais e novas conversas privadas fiquem organizadas sob seus respectivos servidores
   /set irc.look.new_channel_position near_server
   /set irc.look.new_pv_position near_server
   /save
    • autoreconnect:
   /set irc.server_default.autoreconnect on
   /save

ou

   /set irc.server.SERVER.autoreconnect on
   /save

para ter controle individual para cada servidor

    • autorejoin:
   /set irc.server_default.autorejoin on
   /save

ou

   /set irc.server.SERVER.autorejoin on
   /save

para ter controle individual para cada servidor

  • Como se auto:
   /set irc.server.SERVER.autojoin "#channel1,#channel2,#channel3"
   /save
  • iset.pl:
   /script install iset.pl
    • Procurar por settings que tenham um padrão:
   /iset PATTERN
    • Para trocar o valor, navegue com as setas e use alt + enter para alterar o valor.
  • Notificações (libnotify):
   /script install lnotify.py
  • Rodar um comando num shell e jogar a saída no canal atual:
   /shell -o ifconfig

Para instalar:

   /script install shell.py
  • Auto identify
   /set irc.server.SERVER.command "/msg nickserv identify SERVER_PASSWORD"
   /save
  • SSL
   /set irc.server_default.ssl on
   /set irc.server_default.ssl_dhkey_size 1024

e por servidor, altere a porta para 6697

   /set irc.server.SERVER.addresses "your.server.adress.com/6697"
   /save

ou defina os valores individualmente por servidor

   /set irc.SERVER.ssl on
   /set irc.SERVER.ssl_dhkey_size 1024
   /set irc.server.SERVER.addresses "your.server.adress.com/6697"
   /save

Atente para o tamanho da chave do servidor que você usa. Freenode e Mozilla usam 1024. OFTC usa 2048.

TODO

  • highlight
  • urlgrab
  • Bitlbee: fazer todos os buffers do gtalk abrirem no buffer do bitlbee
  • Usar aspell/hunspell pra corrigir a grafia das mensagens


[1] http://weechat.org/scripts/ [2] https://github.com/ISF/identify_me [3] http://koji.fedoraproject.org/koji/packageinfo?packageID=4442