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.