----------------------------------------------------------------------[ 05 ]

     	                 .: IRC Bots - Eggdrops :.
                             --=[ sicario ]=--
                               

Vamos a tratar sobre del robot  para IRC mas popular, el Eggdrop.  Este robot
esta creado bajo sentencias de C, existiendo versiones tanto para  Unix/Linux
asi como  para el  windows, como  es de  suponer, aqui  solo trataremos de la
version para Unix/Linux. Nos basaremos en la version 1.6.3

1.Requerimientos :
- Una cuenta Shell, con permisos para compilar y jecutar programas.
- Cerciorate de tener el TCL instalado en tu maquina: 
  Utiliza el comando tclsh para cambiar al shell del TCL y verificar si lo 
  tienes instalado.
Podras descargar la ultima version del TCL de
  ftp://ftp.scriptics.com/pub/tcl
El TCL es un lenguaje  para crear scripts, desarrollado por  John Ousterhout,
algunas distribuciones de Linux vienen con el TCL ya instalado.

2.Descarga del Software :
  Hay muchos  lugares de  donde puedes  descargar el  archivo comprimido  del
  Eggdrop. Aqui alguno de ellos :
http://www.eggdrops.net/
http://www.eggheads.org/
http://www.egghelp.org/

3.Instalacion :
Una vez descargado, procede a descomprimirlo :
  #tar -zxvf eggdrop1.6.3.tar.gz
Ahora ingresas al directorio del archivo descomprimido :
  #cd eggdrop1.6.3
y procedes a configurarlo y compilarlo.
  #./configure
  #make config
  #make

Con esto  ya tienes  instalado el  eggdrop en  tu sistema,  ahora tendras que
crear un robot con las necesidades que requieras. Lo ideal es tener  agrupado
los bots  que vayas  a crear  por directorios,  en el  caso de   que vayas  a
instalar mas de uno.
Suponiendoce que nuestro robot se ira a llamar  Bot y nuestro  home directory 
sea \home\robot
  #make install DEST="\home\robot\Bot"
Esto creara un directorio dentro de nuestro home llamado Bot, donde tendremos
que editar el  archivo de configuracion  para nuestro robot.  Encontraras uno
como ejemplo  llamado eggdrop.simple.conf.  Editalo con  tus requerimientos y
renombralo para mayor facilidad de uso.
A continuacion te pongo un  archivo de configuracin, con parametros  creados
para el servidor de IRC Dalnet :

------

#En esta linea configuras la ruta donde se encuentra el binario 
#del Eggdrop.

#! /home/robot/bot/eggdrop

#Aqui configuras el Nick del robot y su password en variables 
#que se utlizan luego.

set eggnick "Bot"
set botpass "password"

#Aqui configuras los datos generales del Bot.

set username "Robot"
set admin "sicario <sicario@sicario.net>"
set network "DALnet"
set timezone "EST"
set offset "5"

#Si deseas tener logs de tu canal, los configuras aqui.

set max-logs 5
set max-logsize 0
set quick-logs 0
logfile mco * "sicario.log"
logfile jkp #canal "/home/robot/bot/logs/Bot.log"
set log-time 1
set keep-all-logs 0
set switch-logfiles-at 300
set quiet-save 0
set console "mcobxs"

#Aqui configuras el nombre del file de usuarios del bot y las 
#rutas de ayuda, temporales, del MOTD y del banner al hacer 
#telnet o un dcc chat al robot.

set userfile "Bot.user"
set sort-users 1
set help-path "help/"
set temp-path "/tmp"
set motd "motd"
set telnet-banner "telnet-banner"

#Aqui configuras los datos de tu bot si estara linkado a 
#otros bots.

set botnet-nick "Bot"
listen 4567 all
set protect-telnet 1
set dcc-sanitycheck 0
set ident-timeout 6
set require-p 0
set open-telnets 0
set stealth-telnets 0
set use-telnet-banner 1
set connect-timeout 15
set dcc-flood-thr 6
set telnet-flood 5:5
set paranoid-telnet-flood 0
set resolve-timeout 20

##### MORE ADVANCED STUFF #####

set ignore-time 10
set hourly-updates 00
set owner "sicario"
set notify-newusers "sicario"
set default-flags "hp"
set whois-fields "url birthday"
set remote-boots 0
set share-unlinks 0
set die-on-sighup 0
set die-on-sigterm 0
set must-be-owner 1
set max-dcc 50
set dcc-portrange 1024:65535
set enable-simul 1
set allow-dk-cmds 1

#Aqui configuras la ruta de los modulos. Los modulos son 
#sentencias adicionales en C, que te proporcionan 
#utilidades fuera del propio eggdrop.

set mod-path "modules/"

#Aqui levantas el modulo de canales y lo configuras.
loadmodule channels
set chanfile "bot.chan"
set ban-time 300
set exempt-time 60
set invite-time 60
set force-expire 1
set share-greet 0
set use-info 1

#Lo que sigue son los parametros globales para control de 
#canales.

set global-flood-chan 6:6
set global-flood-deop 0
set global-flood-kick 0
set global-flood-join 0
set global-flood-ctcp 6:6
set global-chanset {
        -clearbans      -enforcebans
        +dynamicbans    +userbans
        -autoop         -bitch
        +greet          +protectops
        +statuslog      -stopnethack
        -revenge        -secret
        +autovoice      +cycle
        +dontkickops    -wasoptest
        -inactive       +protectfriends
        -shared         -seen
	+userexempts	+dynamicexempts
	+userinvites	+dynamicinvites
}

set global-chanmode "nt"

#Si deseas tener un canal especifico con protecciones distintas 
#las adicionas a partir de aqui.

channel add #canal {
  chanmode "+nt"
  idle-kick 0
  need-op { needop "#canal" }
  need-invite { needinvite "#canal" }
  need-unban { needunban "#canal" }
  need-key { needinvite "#canal" }
  need-limit { needinvite "#canal" }
  flood-chan 6:6
  flood-deop 0
  flood-kick 0
  flood-join 0
  flood-ctcp 6:6
}

channel set #canal -clearbans -enforcebans +dynamicbans +userbans +userinvites
channel set #canal -autoop -bitch +greet +protectops +protectfriends
channel set #canal -stopnethack -revenge +autovoice -secret -shared +cycle
channel set #canal +dontkickops -wasoptest -inactive -seen +statuslog

#estos son algunos procesos que se ejecutan automaticamente si 
#el robot necesita Op, necesita ser invitado al canal o 
#quitarce un ban.

proc needop {channelname} {
global botnick nick botpass eggnick
putserv "PRIVMSG NickServ@services.dal.net :identify $eggnick $botpass"
putserv "PRIVMSG ChanServ@services.dal.net :op $channelname $botnick"
}

proc needinvite {channelname} {
global botnick nick botpass eggnick
putserv "PRIVMSG NickServ@services.dal.net :identify $eggnick $botpass"
putserv "PRIVMSG ChanServ@services.dal.net :invite $channelname $botnick"
}

proc needunban {channelname} {
global botnick nick botpass eggnick
putserv "PRIVMSG NickServ@services.dal.net :identify $botpass"
putserv "PRIVMSG ChanServ@services.dal.net :unban $channelname all"
}

#Aqui levantas el modulo de servidor y lo configuras.
loadmodule server
set net-type 3
set nick "Bot"
set altnick "Bot_"
set realname "http://home.dal.net/sicario/"
set init-server { start }
proc start {} {
global botnick botpass eggnick
putserv "NickServ IDENTIFY@services.dal.net $eggnick $botpass"
putlog "Identifying to NickServ@services.dal.net (Auto-Identification)"
putserv "MODE $botnick +iw-xs"
}

#Aqui configuras la lista de servidores al cual se conectara el 
#robot.
set servers {
  tsunami.dal.net
  ced.se.eu.dal.net
  paranoia.se.eu.dal.net
}
set keep-nick 1
set use-ison 1
set strict-host 0
set quiet-reject 0
set lowercase-ctcp 0
set answer-ctcp 3
set flood-msg 3:3
set flood-ctcp 3:3
set never-give-up 1
set strict-servernames 0
set default-port 6669
set server-cycle-wait 10
set server-timeout 10
set servlimit 0
set check-stoned 0
set use-console-r 1
set debug-output 0
set serverror-quit 0
set max-queue-msg 350
set trigger-on-ignore 0
set double-mode 1
set double-server 1
set double-help 1

#Aqui levantas el modulo para CTCP eventos.
loadmodule ctcp
set ctcp-version "Eggdrop 1.6.3 admin: sicario"
set ctcp-finger "Eggdrop 1.6.3 admin: sicario"
set ctcp-userinfo "Eggdrop 1.6.3 admin: sicario"
set ctcp-mode 2

#Aqui levantas el modulo para IRC.
loadmodule irc
set bounce-bans 1
set bounce-modes 0
set kick-bogus-bans 0
set bounce-bogus-bans 1
set max-bans 45
set max-modes 45
set allow-desync 1
set kick-bogus 0
set ban-bogus 0
set kick-fun 0
set ban-fun 0
set learn-users 0
set wait-split 600
set wait-info 1
set mode-buf-length 200
set no-chanrec-info 1
set revenge-mode 1

set bounce-exempts 0
set bounce-invites 0
set max-exempts 20
set max-invites 20
set bounce-bogus-exempts 0
set kick-bogus-exempts 0
set bounce-bogus-invites 0
set kick-bogus-invites 0
set prevent-mixing 1



##### TRANSFER MODULE #####

#loadmodule transfer
#set max-dloads 2
#set dcc-block 0
#set copy-to-tmp 1
#set xfer-timeout 35

##### SHARE MODULE #####

#loadmodule share
#set allow-resync 1
#set resync-time 900
#set private-owner 1
#set private-global 1
#set private-globals "mnot"
#set private-user 1

##### FILESYSTEM MODULE #####

#loadmodule filesys
#set files-path "/home/robot/bot/filesys"
#set incoming-path "/home/robot/bot/incoming"
#set upload-to-pwd 0
#set filedb-path ""
#set max-file-users 2
#set max-filesize 700000

##### NOTES MODULE #####

loadmodule notes
set notefile "seafish.notes"
set max-notes 5
set note-life 90
set allow-fwd 1
set notify-users 1
set notify-onjoin 1

##### CONSOLE MODULE #####

loadmodule console
set console-autosave 1
set force-channel 0
set info-party 1

##### WOOBIE MODULE #####

# this serves absolutely no purpose and is for demonstrative
# purposes only
#loadmodule woobie

##### SEEN MODULE #####

##### BLOWFISH MODULE #####

checkmodule blowfish

##### ASSOC MODULE #####

# uncomment this line to load assoc support, i.e naming channels on
# the botnet
#loadmodule assoc

##### WIRE MODULE #####

# this module provides all the standard .wire commands via dcc.
# it's an encrypted partyline communication tool, compatible with wire.tcl
# uncomment this line to load it
#loadmodule wire

#Aqui colocas los scripts que vayas a usar, estos son algunos 
#ejemplos. Recuerda que los scripts necesitan alguna 
#configuracion adicional en el eggdrop o en el mismo script, 
#lee la ayuda de cada script.

source scripts/bnc.tcl
source scripts/randversion.tcl
source scripts/bseen.tcl
source scripts/responde.tcl
source scripts/count.tcl
source scripts/ping.tcl
source scripts/chatstats.tcl

--------- End


Una vez que hayas terminado de editar el archivo de configuracin, procedes a
ejecutar  el  robot, como  esta  sera la  primera  vez, tendras  que  usar la
siguiente linea de comando : 

  #./eggdrop -m conf

Suponiendoce que hayas renombrado el archivo eggdrop.simple.conf por conf

Una vez que el robot se haya conectado, procedes a enviarle un privado por el
IRC, poniendo la siguiente linea :

  /msg Bot hello

El bot te reconocera como su propietario u Owner, procedes a configurar tu clave

  /msg Bot PASS tuclave

Ahora  le haces  un DCC  Chat, pones  tu clave  y digitas  .die ,  todos los
comandos del robot dentro del Chat son precedidos por un . como indicador  de
comando. Tambien puedes matar el PID del proceso ejecutandoce del Bot.

  #kill -9 <#PID>

Luego de haber echo esto, procedes a ejecutar el robot sin necesidad de poner
el parametro -m

  #./eggdrop conf

Aqu te muestro los parametros para ejecucion del bot :
    -n   Ejecuta el robot en modo no background, mostrandote todos los 
         procesos del bot en la terminal de la consola.
    -nt  Ejecuta el robot en modo no background, mostrandote un entorno 
         parecido al ircII.
    -nc  Ejecuta el robot en modo no background, mostrandote informacin 
         del canal cada 10sg.
    -m   Se utiliza la primera vez en la ejecucion de un eggdrop, para 
         crear el archivo de usuarios.
    -v   Solo muestra la version del eggdrop al momento de desconectarce.

Niveles de acceso al robot.
Los comandos  que puedas  ejecutar tanto  por DCC  chat como  por MSG,  estan
definidos de acuerdo al nivel de acceso que tengas al robot.

    n  (owner)  es el creador del robot, el maximo nivel.

    m  (master) tiene acceso a adicionar/eliminar/modificar 
       usuarios en el canal.

    o  (op)      Puede tener estado de operador en el canal.

    d  (deop)    No puede tener estado de operador en el canal.

    k  (kick)    Un usario con este flag, es automaticamente 
       expulsado del canal.
 
    f  (friend)  Este flag indica estar en la lista de Friends 
       del robot.
 
    a  (auto-op) El robot da automaticamente el modo de 
       Operador al entrar al canal, siempre en cuando el parametro 
       autoop de la configuracion este +autoop
       
    v  (auto-voice) El robot da automaticamente el modo de 
       Voice al entrar al canal, siempre en cuando el parametro 
       autovoice de la configuracion  este en +autovoice

Para visualizar los comandos a los que tienes acceso, solo digita .help

Comentarios/sugerencias a sicario@phreaker.net
  

