Primeros pasos con eggdrop

 ¿Cómo uso un Eggdrop?

Ya has conseguido instalarlo y ahora no sabes por dónde empezar. Eggdrop está hecho por la vieja escuela y por eso necesitamos prestar atención a la configuración por defecto ya que puede ser muy distinta de la que queremos. Y ya que no tiene ventanas, necesitamos conectarnos a él desde telnet, ellos le llaman partyline. Desde ahí nuestro eggdrop nos irá diciendo los errores que ocurren cuando hacemos algún cambio o nos permitirá ir ejecutando las nuevas configuraciones.

Después de asegurarnos de que el eggdrop no le quitará op a la gente, ni vaciará la lista de bans cuando quiera, ni que hará nada raro, podemos añadir scripts, Puedes aprender cómo hacerlo con varias alternativas desde aquí

Todo lo que pueda pasar en el bot, que el usuario deba saber, saldrá en party line. Sin ninguna duda, lo primero que hay que hacer después de instalar un eggdrop es configurar correctamente la party line. Además, todos los comandos necesarios y oportunos para la manipulación del bot están sólo disponibles a través de esta interfaz. Acceder a la party line es sencillo, pero es necesario tener acceso a él a través de un usuario y contraseña que el dueño del bot nos habrá proporcionado.

Se puede acceder a party line a través de DCC Chat, via IRC o desde telnet, con un cliente de telnet cualquiera. El aspecto de party line es muy parecido al de una consola o un privado de IRC, y para que nos funcione es necesario tener claro varios conceptos:

  • El fichero de configuración correctamente configurado
  • El acceso desde la red al puerto configurado abierto
  • Un nombre de usuario configurado para el acceso
  • Un cliente de IRC oportuno para aceptar o enviar DCC Chat

Además, hay que entender que el uso de un eggdrop puede ser intrínseco y necesita conocimientos sobre IRC o informática avanzados. Si no se tiene una base firme respecto al IRC o su funcionamiento, a duras penas podríamos administrar un bot que maniobra sobre esa plataforma. Es por ello que es necesario tener paciencia, y leer todo lo que sea necesario para que la prisa no nos obligue a abandonar el proyecto.

Accediendo a party line a través de DCC Chat
El DCC Chat es un protocolo implementado en los clientes IRC, y es posible que éste no exista en todos los programas de chat como por ejemplo algún obsoleto o sencillo webchat. Sin embargo, los que sí lo llevan, comparten el mismo estándard de sintaxis. Debido a las restricciones o desconfiguración que pudiera haber en cada cliente IRC, es posible que podamos recibir DCC pero no enviar, por eso hay dos maneras de establecer una conexión DCC.

Enviando una solicitud de DCC Chat que el receptor deberá aceptar, tecleando en nuestro cliente IRC cualquiera de estos dos comandos:

/DCC <nick> chat
/CHAT <nick>

Obligar al bot a que nos envie una petición de DCC Chat que nosotros aceptaremos, también tecleando a través de nuestro cliente IRC:

/CTCP <bot> CHAT

Al establecerse el DCC debemos especificar nuestro nombre de usuario en el bot y la contraseña.

Usando telnet para acceder a party line
Telnet es el protocolo de comunicación más simple de todos. Si no es posible acceder a party line desde telnet, teniendo acceso a internet y proporcionando los datos correctos es porque el bot no está bien configurado. Telnet es algo ajeno al IRC y desde luego a nuestro cliente IRC, no tiene nada que ver con que el bot esté conectado también al IRC o no, sólo es necesario que esté el proceso eggdrop en marcha. Desde un intérprete de consola en windows, o una consola en linux, el comando para acceder es el siguiente:

telnet ejemplo.bot.es 3333

Donde ejemplo.bot.es es el host o ip del servidor que alberga nuestro bot, si es nuestra propia máquina podemos sustituirlo por localhost.
3333 es el puerto que nosotros hemos especificado en nuestro fichero de configuración. Por alguna razón, por defecto, esa opción viene desactivada y hay que activarla y ser consciente de qué número ponemos porque nos hará falta en el futuro.

Usando la consola de Eggdrop
Una vez dentro de party line, estamos delante de una consola de comandos para eggdrop. De la misma manera, party line es una especie de mini red con su propio minichat, donde existen canales independientes (véase .chat <número>). Además de para ver los mensajes que eggdrop devuelve, se usa para charlar de manera ajena al IRC entre los operadores del bot o incluso otros dueños de bot si éste está conectado en botnet con demás eggdrops. Por eso, todo lo que enviemos a party linecomenzado por un punto será considerado como la ejecución de un comando y eggdrop tratará de ejecutarlo. Todo lo demás, será enviado al resto de usuarios que pudieran estar conectados en ese momento a party line.

Comandos por msg
Eggdrop tiene un número limitado de comandos por privado, pero algunos de ellos son muy importantes, como por ejemplo el comando ident o el op. Para una lista de comandos completa, puedes poner /msg eggdrop help. Adicionalmente se pueden añadir comandos al eggdrop con scripts en tcl. Hay que tener especial cuidado con estos comandos porque se puede mostrar sin querer la contraseña y que cualquiera la use.

Comandos públicos
El único comando que eggdrop tiene para canales es ‘seen‘ y éste depende del módulo seen que debe ser cargado previamente. Muesta información de usuarios como la última vez que se le ha visto. Existen montones de scripts tcl que añaden comandos públicos para canales. Cosas como juegos o información está bien, pero usar comandos públicos de administración del bot tales como añadir usuarios o saltos de servidor pueden crear agujeros de seguridad y provocar serios problemas irreparables. Ciertos scripts pueden permitir comandos maliciosos y usuarios pueden obtener el control del eggdrop o del canal, así pues, es una buena idea que los comandos de los scripts que se añadan tengan un buen sistema de autorización de comandos y preferiblemente que solo operadores de canal puedan usarlo. Sin embargo, alguna gente cree que usar comandos públicos es algo ideal.

El fichero de usuarios
El fichero de usuarios de tu eggdrop contiene la información de sus privilegios, y acceso que ellos tienes. También contiene listas de bans e ignores. El mantenimiento de este fichero es algo fundamental y es necesario aprender a usarlo efectivamente.

Cuando se inicia el bot por primera vez y ha introducido los datos del primer usuario que ha dicho hello o el comando equivalente, serás añadido con todos los privilegios de owner (dueño) (si el set learn-users está desactivado, el comando hello se desactivará una vez eggdrop tenga un owner en su fichero). Para ver los registros de la lista de usuarios teclea en consola: .whois <tu nick>. Mostrará algo como:

HANDLE    PASS NOTES FLAGS            LAST
<tu nick> yes      0 fjmnoptx        19:57 (partyline )
#canal             fmno            18:44
#canal2              fmno            14 Apr
HOSTS: *!mynick@*.nice.net, *!mynick@207.324.333.*

La información que se muestra arriba es el handle de usuario (el handle es simplemente el nombre de usuario en el bot, es independiente al nick en IRC aunque normalmente es el mismo), si tiene definida una contraseña o no, si tiene notas guardadas (depende del módulo notes), sus flags globales, donde ha sido visto por última vez, y sus hosts. Más abajo aprenderás a manipular este fichero.

Mostrando todos los usuarios
Para mostrar todos los usuarios en el fichero de usuarios, teclea .match * 999. Esto mostrará un registro similar al ejemplo anterior para cada usuario.

Añadiendo y eliminando  usuarios
Existen 3 maneras de añadir usuarios al bot. Si learn-users está activado en el fichero configuración cualquiera usando el comando hello en el bot se autoañadirá con los flags por defecto (así como se hubiera definido set default-flags). Por otro lado, en party line se puede usar .adduser o .+user. Si el usuario que se quiere añadir es para un canal del bot, entonces .adduser es el más conveniente. Asegurémonos de que el canal de la consola del usuario es el correcto (Léase usando la consola arriba), así teclea .adduser <nick>, donde <nick> es el nombre del usuario que se quiere añadir. El usuario será añadido con los flags por defecto y su host será automáticamente añadido. El comando +user debe ser usando cuando la persona que se quiere añadir no está en el IRC, Teclea .+user <nick> <host> para añadir al usuario con el host especificado.

Una vez se ha añadido al usuario, ellos deben crear una contraseña usando el comando pass. Decir al usuario que teclee en el IRC /msg <botnick> pass <contraseña>para configurar una contraseña secreta. En vez de eso podemos usar el comando .chpass (explicado abajo).

Para eliminar a un usuario, simplemente teclea .-user <handle>.

Cambiando la contraseña a un usuario
Para cambiar o crear la contraseña a un usuario, teclea .chpass <handle> <password>. Se puede eliminar su contraseña anterior poniendo .chpass <handle> sin especificar ninguna contraseña

Flags de usuario
Los flags (o banderas) de usuario son los que determinan los privilegios de un usuario, por ejemplo, determinar si puede o no obtener op en un canal, qué comandos de bot él puede usar, etc. Todos los flags ya existentes en eggdrop son letras minúsculas del alfabeto. Se puede ver el listado de todos los flags tecleando .help whois, pero por ahora solamente necesitamos los más importantes:

  • – voz (+v)
  • o – op (+o, @)
  • m – master (maestro del bot)
  • n – owner (dueño del bot)
  • f – friend (amigo, el bot podría ignorarlo en protecciones)
  • p – acceso a party line

Los flags de usuarios están divididos en dos categorías – global y canal – mientras que algunos flags sólo son globales. Los flags vomn y f son ejemplos de flags que pueden ser global o específicos para un canal, mientras que el flag p solamente es global. Los flags de canales solo se aplican para ese canal concreto, por ejemplo, si damos a alguien el flag o en el canal #ayuda, el usuario sólo obtendrá op en el canal #ayuda, pero si damos el flag o globalmente, el usuario podrá obtener op en cualquier canal del eggdrop donde éste tenga op también. Los flags globales son los más poderosos por naturaleza ya que dan al usuario acceso a comandos más potentes que para un canal.

Añadiendo y eliminando hosts
El comando .+host <handle> <host> permite añadir hosts a un usuario, por ejemplo: .+host ana *!ana@*.net. Para quitar el host de un usuario: .-host <handle> <host>.

La lista de ban
La lista de bans es una parte del fichero de usuarios donde guarda los bans. Los bans son añadidos a una lista interna del bot (también llamada enforced o lista de bans permantente) usando el comando .+ban. También pueden ser añadidos automáticamente por el bot (por ejemplo la respuesta a un flood) o por un script tcl. La lista interna de bans también puede ser global (se aplica en todos los canales en los que el bot está) o para un canal concreto. Un ban puede ser permanente o expirar automáticamente después de un tiempo especificado, y también puede ser forzoso (sticky), el bot se asegurará de que el ban siempre está activo en el canal.

Si se está usando +dynamicbans en la configuración de un canal específico, un ban puesto en la lista interna de bans será quitado del canal después de ban-timeminutos (así como se diga en el fichero de configuración), pero éste seguirá existiendo en la lista interna y será reactivado en el canal según exista una entrada de usuario que corresponda con la máscara baneada. Si estás usando +dynamicbans pero quieres que un ban esté activado para siempre, debes hacer el ban forzoso (sticky).

Mostrando la lista de bans
Teclea .bans para ver todos los bans actualmente activos y los que están en el canal (para el canal definido en consola). Para mostrar los bans activos e inactivos, teclea .bans all. Esas listas también muestran los bans que están activos en el canal pero no los inactivos en la lista interna de bans (tales bans son precedidos por un asterisco)

Añadiendo y eliminando bans
Los bans globales son añadidos usando el comando .+ban <máscara> (ejemplo: .+ban *!*usuario@*.isp.virtual). Se pueden añadir bans a un canal concreto usando .+ban <máscara <#canal>. Los bans añadidos con estos comandos serán permanentes (por ejemplo, se mantendrán en la lista interna de bots hasta que alguien manualmente las quite).

Hay dos maneras de quitar un ban – usando la máscara o el número de referencia. La salida del comando .bans all mostrarán un número de referencia antes de cada ban. Si queremos quitar el ban número 4, por ejemplo, se podría teclear .-ban 4. Hay que recordar que el numero de referencia de ese ban puede cambiar dependiendo el nombre del canal de la consola que se está usando (por ejemplo, si tecleas .console #ayuda, después .bans all, y entonces .console #canal2, después .bans all, los números de referencia de los bans podrán ser distintos porque se muestran dos listas diferentes). Para eliminar un ban por máscara, simplemente se usa .-ban <máscara>.

Creando un ban forzoso
Se puede crear un ban forzoso usando el comando .stick con el número de referencia o la máscara, por ejemplo .stick <número> o .stick <máscara>. Un ban forzoso (stick) será reactivado por el bot si alguien elimina el ban de la lista de bans del canal.

Configurando canales
La forma en la que un eggdrop actua y responde a los eventos en un canal, es largamente afecada por la configuración del mismo. Eggdrop tiene muchas opciones prestablecidas, que se pueden activar y desactivar o configurar para cada canal, permitiendo extremadamente un uso muy flexible. Cuando se ha creado el fichero de configuración y añadido las entradas para cada canal en el que el bot reside, se pueden configurar las siguientes opciones:

channel add #eggdrop options
channel set #eggdrop +option -option

Hay dos tipos de configuración de canales. El primer tipo es crear las opciones entre llaves, igual que las opciones idle-kick y todas las de flood como flood-joinflood-msg etc. La segunda opción es activar y desactivar opciones usando el comando channel set. Esas opciones incluyen tales como autoopdynamicbansrevenge, etc. Se activan y desactivan usando el prefijo + o – para especificar si se quiere activar o desactivar respectivamente. Para más información acerca de la configuración de canales y esta función, es necesario leer el fichero de configuración incluído con el bot.

Canales dinámicos
Si quieres añadir un canal a tu bot o cambiar su configuración, actualmente no necesitas editar el fichero de configuración. Eggdrop tiene los comandos necesarios via DCC para poder administrar todas estas opciones sin tener que crear un canal estático, via eggdrop.conf. Para añadir un canal al fichero de canales, y así ser un canal dinámico simplemente teclea en party line .+chan #canal. Para quitarlo se usa el comando .-chan #canal.

La configuración de las opciones de canal se manipulan con el comando .chanset. Funciona de diferentes maneras según la opción que se aplique, ya sea activar o desactivar una opción o modificar el valor de alguna como por ejemplo idle-kick o need-op. Aquí se muestran algunos ejemplos de modificación de opciones:

.chanset #canal +enforcebans activará la opción enforcebans en #canal
.chanset #canal -dynamicbans +autoop desactivará la opción dynamicbans y activará la opción auto op
.chanset #canal chanmode +sntk clave activará los modos snt y la clave clave en el canal
.chanset #canal idle-kick 60 activará la opción idle-kick a 60 minutos

Para ver todas las opciones posibles y la configuración actual, se usa el comando .chaninfo #canal

El fichero de canales
Ya que el bot no puede modificar su propio fichero, los canales son guardados y su configuración modifica y albergada en un fichero especial llamado chanfile. El nombre de tal fichero se define en la variable set chanfile dentro del eggdrop.conf. El fichero de canales se encarga de guardar los datos hechos o canales creados del bot incluso cuando éste se cierre o reinicie.

Tan pronto como el bot arranca, primero lee el fichero de configuración y los canales que pudiera haber ahí, y después lee el fichero de canales. Cualquier opción definida en el fichero de canal sobreescribirá a cualquiera que esté en el fichero de configuración. Así pues, si se hacen cambios en el fichero de configuración pero persisten datos en el fichero de canales, estos no tendrán efecto alguno. Por este resultado, alguna gente no añade canales estáticos y trabaja únicamente con el fichero de canales, que en mi opinión es una mejor idea. Si es necesario iniciar un nuevo fichero de configuración, se mantendrán todos los canales en el fichero de canales y no existirán estos conflictos a la hora de modificar valores.

Es posible trabajar sin fichero de canales y exclusivamente usar el fichero de configuración, eso se consigue dejando sin ningún valor a la variable set chanfile, (ejemplo:set chanfile “”) pero hay que tener en cuenta que las opciones cambiadas desde party line usando el comando .chanset no tendrán efecto la próxima vez que el bot vuelva a iniciarse o reiniciarse. Una buena manera de seguir es leyendo los comandos desde la ayuda del eggdrop mediante el comando .help

Leave a Reply