Eggdrop

Fonte: wirelesspt.net

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

Editor

Cmsv