David's Blog

Configurando Znc Server + Xchat

Por muito tempo eu fiz uso do cliente de irc weechat para conectar em servidores como o freenode, e interagir com as comunidades de SL. Infelizmente a infra da minha faculdade, bloqueia portas altas, inclusive a porta 6667, que é a porta em que o freenode aceita requisições. Uma alternativa que encontrei, foi dentro de uma VM na digital ocean, executar uma seção do tmux, e dentro dessa sessão executar o weechat. Para acessar o irc eu fazia:

    ssh david@<ip_da_minha_vm> -t 'tmux attach; bash -l'

Isso me permitia acessar o freenode, e outros servers(como o oftc), por fora da rede da minha faculdade, além de me manter sempre conectado nos canais do irc, uma vez que a seção do tmux fica sempre aberta, enquanto você não a fecha. Esse workaround me permitiu ficar sempre online no irc, além de conseguir usar o weechat de dentro da infra porca da minha faculdade.

Com o tempo, essa solução se mostrou bem amadora, e por indicação de um amigo, comecei a usar o glorioso znc.

Bouncer é um conceito similar a um proxy. Você acessa ao bouncer com o seu ip, e ele acessa determinado serviço na internet com o ip do servidor aonde ele(o bouncer) está sendo executado. No contexto de servidores irc isso é muito útil, porquê o bouncer sempre ficará online, mesmo que o cliente encerre a requisição. O znc é construido em cima desse conceito, mas te permite fazer diversas configurações a mais, que simplesmente rodar um weechat dentro de uma seção do tmux não permite.

A configuração do znc é muito simples, com um comando você realiza toda a configuração, instala modulos, adiciona canais e servidores, cria usuários no servidor e gerencia suas permissões, entre diversas outras coisas.

    znc --makeconf

Durante essa configuração eu recomendo adicionar o módulo webadmin, que permite gerenciar todas as configurações do znc pelo browser.

Com o znc, o cliente de irc que você tiver usando(no meu caso o xchat), não precisará fazer configuração nenhuma, tudo é feito via znc. A unica coisa que o cliente precisa fazer, é mandar as credênciais de acesso, para poder usar o znc. Em resumo o cliente conecta no znc, e o znc conecta nos servidores irc.

Configurando o cliente

Para acessar n redes irc(freenode e oftc por exemplo) você precisará fazer n requisições a essas determinadas redes. No xchat você pode definir em quais redes o cliente vai se conectar quando a aplicação iniciar. No meu caso eu defini duas redes, o znc-oftc e o znc-freenode. Ambos conectam no mesmo servidor znc, a diferença está no momento de passar as credenciais para o servidor.

O gif abaixo mostra como definir no xchat o endereço e a porta do znc. Essa configuração é a mesma para as duas redes. +

Mas se em ambas as redes, conectamos no mesmo servidor, e na mesma porta, como o znc vai saber que a rede znc-oftc(definida no xchat) tem que ser redirecionada para o servidor irc.oftc.net ? O xchat, dentro das configurações de uma rede, possui o campo password do servidor. É nesse campo que você irá informar o nome do usuário(que foi definida na configuração do znc), a rede que esse usuário quer acessar e a senha desse usuário.

    Ex: davidCarlos/oftc:12345abcd

Isso é expecífico para o xchat, em outros clientes essa configuração pode mudar.

Dessa forma, quando você inicializar o xchat, ele irá conectar no znc, informando o usuário, a sua senha e em para qual rede esse acesso deve ser redirecionado. É no znc que você irá configurar o ip e a porta do servidor oftc, e não no cliente.

WebAdmin

Para configurar o znc via navegador, basta acessar o ip do servidor aonde o znc está rodando:a porta que você definiu no makeconf

Lembre-se que para fazer esse acesso, você precisa habilitar o modulo do webadmin durante a configuração do znc.

Como o znc permite que você adicione vários usuários ao servidor, as possibilidades de uso se estendem para organizações e empresas que querem definir uma configuração padrão de acesso a servidores irc para todos os usuários. O funcionário só precisa conectar no no ip/rede que lhe é de interesse, e todas as configurações(modulos adicionais, scripts, permissões) estarão centralizadas em um único lugar.

OBS: O znc não necessariamente precisa executar no intervalo de portas que é informado no momento do makeconf. No meu caso, o meu znc roda na porta 8081, justamente porque a infra da minha faculdade, bloqueia a saida de pacotes por portas altas.

Comments