Eggdrop
Bold textEggdrop é o bot para IRC mais popular do mundo, desenvolvido desde 1993. O Programa é basicamente um cliente para IRC, que não é controlado por um utilizador humano, mas pelo computador. É ideal para executar tarefas automáticas na rede ou na internet em geral desde que programado para tal.
Funcionamento
Esta ferramenta foi desenvolvida sobre a linguagem C, executando scripts escritos em TCL. Basicamente, são estes scripts que contém as tarefas que devem ser executadas pelo bot. Portanto, para adicionar uma nova função ao bot, basta modificar ou inserir um novo script.
Nem todas as redes IRC aceitam bots, visto que suas funcionalidades podem ser aplicadas tanto para o bem quanto para o prejuízo da rede, dependendo dos scripts programados. Portanto, um bot é uma ferramenta poderosíssima, mas que deve ser usada com cautela.
No projecto wirelesspt.net o uso de eggdrops é permitido desde que respeite as regras de rede e o seu proprietário notifique a administração da rede para que possa ser aprovado.
Instalar
Recomenda-se que a instalação de programas em linux seja feita via aplicativos de administração de pacotes da distribuição utilizada como por exemplo, emerge, apt-get, yum, pacman, etc. No entanto e por questões de segurança e personalização, recomenda-se que um eggdrop seja compilado manualmente e numa conta de utilizador especifica e restrita ao apenas ao mesmo.
Gentoo
Este passo é opcional mas recomendado.
Para distribuições baseadas em Gentoo, Pentoo, Sabayon, Funtoo Linux e derivados uma conta de utilizador cria-se da seguinte forma com o utilizador root:
useradd -m -s /bin/bash eggdrop passwd eggdrop Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Utilizador normal deve executar na sua shell:
eggdrop-installer
Debian
Este passo é opcional mas recomendado.
Para distribuições baseadas em debian como por exemplo, ubuntu, mint, kali e derivados uma conta de utilizador cria-se da seguinte forma com o utilizador root:
adduser eggdrop
Adding user `eggdrop' ...
Adding new group `eggdrop' (1003) ...
Adding new user `eggdrop' (1003) with group `eggdrop' ...
Creating home directory `/home/eggdrop' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for eggdrop
Enter the new value, or press ENTER for the default
Full Name []: eggdrop
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Compilar manualmente
Processo recomendado:
Antes poderemos á compilação do software é necessário ter determinados pacotes de software instalado como os seguintes ou equivalentes:
gcc make tcl-dev tcl-tls openssl libssl-dev
Procedemos de seguinte à entrada na nova conta de utilizador:
su eggdrop cd ~
Para obter o software do eggdrop:
wget https://ftp.eggheads.org/pub/eggdrop/source/eggdrop1.9-latest.tar.gz wget https://ftp.eggheads.org/pub/eggdrop/source/eggdrop1.9-latest.tar.gz.asc
Extrair o software:
tar -xvzf eggdrop-1.9-latest.tar.gz
Entrar no directório:
cd eggdrop-1.9.1
Proceder á preparação do software para compilar digitando:
./configure --prefix=/home/eggdrop/nome_do_meu_bot --enable-tls --enable-debug
Onde se lê nome_do_meu_bot deverá ser usado o nome escolhido para o eggdrop
This is Eggdrop's GNU configure script. It's going to run a bunch of tests to hopefully make your compile work without much twiddling. checking for gcc... gcc..........
Escolhendo os módulos a utilizar:
Type 'make config' to configure the modules, or type 'make iconfig' to interactively choose which modules to compile.
Caso saibamos o que estamos a fazer podemos digitar make iconfig e devemos escolher pelo menos os seguintes módulos: channels, dns, irc, server, console e pbkdf2.
Caso queiramos suporte completo, ou sejamos inexperientes digitamos:
make config ; make ; make install
Após instalação completada, o bot estará disponível no directório /home/eggdrop/nome_do_meu_bot e devemos proceder á configuração mínima para que possa ser executado.
Configurar
A seguinte configuração é mínima e funcional para a rede de IRC do projecto e embora possamos utilizar o ficheiro eggdrop.conf disponível vamos criar uma configuração simples e funcional para a rede:
Entrar no directório:
cd /home/eggdrop/nome_do_meu_bot
Criar a configuração:
nano -w wpt.conf
De seguida inserimos os seguintes parâmetros:
## EGGDROP BOT CONFIGURATION ## ## http://eggwiki.org/Eggdrop.conf set use-ssl 1 # Modules loadmodule server loadmodule dns loadmodule irc loadmodule channels loadmodule console loadmodule pbkdf2 # Nickname set keep-nick 1 set nick "nome_do_eggdrop" set altnick "nome_alternativo_do_eggdrop" set realname "nome_real_do_bot" set username "nome_de_utilizador_da_shell" set init-server { putserv "MODE $botnick +BiT-ws" } # Firewall / TOR socks4 # set firewall "ip:port" # Network set net-type 5 set network "wirelesspt" set servers { irc.wirelesspt.net:+6697 } # Channels set opchars "@&~" channel add #wirelesspt #channel add #outrocanal #channel add #outrocanal { chanmode "+k password" } #channel add #outrocanal { need-key { putserv "JOIN #outrocanal password" } } #channel add #outrocanal { need-key { putserv "JOIN #outrocanal +k password" }} # Consola set console "jkpsbcowx" set raw-log 0 set timestamp-format {[%H:%M:%S]} # Files/Directories set userfile "wpt.user" set chanfile "wpt.chan" set pidfile "wpt.pid" set help-path "help/" set text-path "text/" set temp-path "/tmp" set motd "text/motd" set telnet-banner "text/banner" unbind msg - ident *msg:ident unbind msg - addhost *msg:addhost # Telnet listen 6666 users set protect-telnet 0 set open-telnets 0 # SSL Certificate Settings # http://docs.eggheads.org/mainDocs/tls.html set ssl-verify-dcc 0 set ssl-verify-bots 0 set ssl-verify-server 0 set ssl-verify-clients 0 set ssl-ciphers ECDHE-RSA-AES256-GCM-SHA384 set ssl-privatekey certs/nick.key set ssl-certificate certs/nick.crt # Scripts source scripts/alltools.tcl source scripts/action.fix.tcl #source scripts/shelluptime.tcl #scripts/nome_do_meu_script.tcl
Nota: O nome_do_eggdrop, nome_alternativo_do_eggdrop, nome_real_do_bot e nome_de_utilizador_da_shell devem ser personalizados ao gosto do utilizador.
Concluímos e gravamos premindo a tecla ctrl+x
Certfp
Iremos agora gerar certificados de criptografia com ssl e durante este processo serão feitas algumas perguntas que devem ser respondidas ao gosto do utilizador.
Exemplo:
openssl req -x509 -nodes -days <dias> -utf8 -newkey <tipo>:<bits>-sha512 -keyout nick.key -out nick.crt -subj /CN=nick
Executar:
openssl req -x509 -nodes -days 3650 -utf8 -newkey rsa:4096-sha512 -keyout nick.key -out nick.crt -subj /CN=nick
cat nick.crt nick.key > nick.pem
chmod 400 nick.{key,crt,pem}
Podemos confirmar e ver a nossa fingerprint criada digitando:
openssl x509 -noout -fingerprint -text < nick.pem -sha256 | grep Fingerprint
Para adicionar a fingerprint ao nickserv caso tenhamos o nick registado na rede basta digitar na linha de comandos:
openssl x509 -sha256 -noout -fingerprint -in nick.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
Criar directoria e mover os certificados de criptografia para o eggdrop
mkdir -p /home/eggdrop/nome_do_meu_bot/certs
mv *.{key,crt,pem} /home/eggdrop/nome_do_meu_bot/certs
E no cliente de irc basta digitar:
/msg NickServ cert add fingerprint
Executar
Para executar o eggdrop pela primeira vez devemos executar com -mn para criar o ficheiro de utilizador e ver se existem erros problemáticos ao funcionamento do eggdrop
./eggdrop -mnt wpt.conf
...Connected to irc.wirelesspt.net
Crontab
Crontab é um programa do linux que edita o arquivo onde são especificados os comandos a serem executados e a hora e dia de execução pelo cron, um programa que executa comandos agendados nos sistemas operativos do tipo Unix como o Linux. O crontab encarrega-se de verificar a hora e determinar se o programa existe ou não e executa-o na hora e data solicitada.
Vamos criar o executável de verificação de actividade do eggdrop digitando:
ln -s scripts/autobotchk . ./autobotchk wpt.conf
Em seguida devemos editar o cron do utilizador eggdrop como utilizador root:
crontab -e -u eggdrop
e adicionar:
@reboot cd /home/eggdrop/nome_do_meu_bot/ && ./eggdrop wpt.conf 0,10,20,30,40,50 * * * * /home/eggdrop/nome_do_meu_bot/wpt.botchk
Scripts
Todos e quaisquer scripts para serem executados pelo eggdrop devem ficar colocados dentro da directoria scripts e referenciados no ficheiro de configuração do eggdrop.
# TCL scripts - specify any TCL scripts you wish to load. source scripts/alltools.tcl source scripts/action.fix.tcl #source scripts/shelluptime.tcl #scripts/nome_do_meu_script.tcl
Shell uptime
Script para indicar o uptime da maquina onde se encontra o eggdrop. Este código deverá ser colocado num ficheiro com a extensão .tcl dentro da directoria com o nome scripts.
# Returns O.S. Uptime (Linux only)
proc osuptime {} {
set ut [exec uptime]
set ut [string trimright [lrange $ut 1 4] ,]
return "my box uptime is currently: $ut"
}
proc pub:uptime {nick uhost hand chan args} {
if {[string match -nocase #beach $chan]} {
putmsg $chan [osuptime]
}
}
bind pub * !up pub:uptime
bind pub * !uptime pub:uptime
putlog "shelluptime.tcl by wist"
Após a execução do comando !uptime numa sala de chat de irc pré definida no script e onde o eggdrop se encontra; este publicará algo semelhante à seguinte informação:
system | System Uptime is: up 6 days, 16:25
Ver ainda
Links externos
- Página official do eggdrop (em Inglês)
- Downloads para irc
- O que é e como usar um eggdrop?
- Eggdrop na wikipédia (em Inglês)
- Scripts para eggdrop (em Inglês)
- Configuração simples para o eggdrop
- Arquivo ftp de modulos para eggdrop