Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Argobot

Última Actualización: 17 de Julio de 1998

ArgoBot es un pequeño programa escrito en C cuyo primer y principal objetivo era la distribución de líneas K respondiendo a las líneas G y Kills de Theilax.

La versión actual es la 2.82. Los lectores no familiarizados con él deberían leer las explicaciones siguientes con mucha atención:

Instalación y configuración de un servidor de IRC

Documentación en castellano. Incluye documentación sobre ARGOBOT.


Planteamiento inicial y Versión 1

Su funcionamiento es el siguiente:

  1. El bot se instala en aquellos servidores que lo crean de interés. Consume muy poca memoria y recursos del sistema.
  2. Es necesario abrir una cuenta IRCOP nueva en el servidor de IRC. Dado que lo normal será que el bot se ejecute en la misma máquina que el servidor, puede restringirse el dominio a irc.servidor.es, o lo que sea apropiado.
  3. Se edita el fichero argobot.c para adecuarlo a las características de cada sistema: nombre del bot, claves de acceso, mensajes de Away, etc.
  4. Se compila argobot.c con el gcc.
  5. Se ejecuta con ./argobot.

Los pasos que da el bot son:

  1. Conectarse al servidor con un nick aleatorio de ocho caracteres, para reducir el riesgo de nick collide.
  2. Pasa a modo IRCOP.
  3. Envía un kill a cualquier posible usuario que estuviese entrando con el nick "oficial" del bot. Yo he llamado "argobot" al mío. Sugiero que el resto de los servidores empleen una nomenclatura semejante para facilitar su identificación.
  4. Entra en el canal #opers. No es necesario en absoluto, pero he preferido hacerlo así para tener un punto de encuentro de todos ellos y saber quienes lo están corriendo. En el futuro se puede buscar otra fórmula más apropiada.
  5. Copia el fichero "ircd.conf.real" (que es el "ircd.conf" de toda la vida) en "ircd.conf". El posible fichero viejo "ircd.conf" se salvaguarda en "ircd.conf.old".
  6. Manda un /rehash al servidor.
  7. Pone una frase "away" con algunos datos de interés y forma de contacto.

Estos son los pasos preparatorios. Seguidamente el programa se limita a poner la oreja y prestar atención a lo que le llega:

  1. Si se le hace un kill, vuelve a entrar otra vez.
  2. Si ocurre cualquier error, debería volver a entrar (esperemos...)
  3. Si se le kickea vuelve a entrar otra vez, si puede. El bot de Argo puede siempre, por el tema de /oper # GOD :)).
  4. Cuando ve que theilax.arrakis.es hace un kill a alguien, ordena un /whowas de ese nick y cuenta cuántos intentos de acceso se han producido en los últimos minutos. Si supera un umbral programable, y todavía no le hemos puesto una k-line, le pone una k-line temporal por un tiempo programable (por defecto, una hora). En la línea K se indica la hora de desactivación de la misma, con fines de depuración y para tranquilizar a los usuarios. Esa línea se graba en el "ircd.conf" y se manda un nuevo /rehash al servidor.
  5. Cada hora (con la configuración actual) se restaura la configuració de "ircd.conf.real" y se hace otro /rehash. Con ello se dan de baja las líneas K que se hayan instalado a partir de los notices de theilax.

Para evitar saturar al servidor con extensos /whowas he limitado la actualización de los datos a 30 segundos entre reintentos... El único problema que puede ocasionar esto es que si hay un nick que intenta entrar con mucha frecuencia y otro con mucha menos (pero que también supere el umbral prefijado), es mucho más probable que pille el más frecuente como víctima... lo ideal, si no lo tiene ya en una línea K. Si ya la tiene, el bot se da cuenta de ello sólo tras el /whowas, y lo ignora otros 30 segundos.

Aunque dudo que ello sea un problema, es causado porque NO TODOS los servidores implementan el bot. Si lo hiciesen eliminarían juntos al nick que entra con más frecuencia y, en los 30 segundos siguientes, los únicos accesos serían los del nick "lento", por lo que lo pillarían sin problemas.

Por todo lo dicho creo que el bot es bastante interesante y debería instalarse en el mayor número de servidores posible, aunque sólo sea para ahorrar ancho de banda y paciencia a los IRCops que tienen los modos "WS" activados permanentemente (como es mi caso y el de algunos otros). Los que más se beneficiarían de ello son los servidores que soportan muchos accesos fallidos de bots, como son arrakis, jet y encomix.

El bot no responde a comandos ni a los ping para evitar que se abuse del flooding. En el futuro ya se verá qué hacemos...

Si alguien quiere saber la pinta de las líneas k generadas, que haga un /stats k irc.argo.es.

Versión 1 del Argobot

Verificación de fichero:

MD5: 47adc9f44efc33f73362ef2c7ee8edf2
SHA-1: 266116c88a1c6d4f8df7934d30f852ba0df38738


Versión 2

La versión 2 del Argobot (actualmente 2.82) incorpora las siguientes mejoras respecto a la versión anterior:

  • Puede ejecutarse el mismo código en Windows 95/NT y UNIX, sin modificación alguna.
  • Uso de un fichero de configuración
  • Bot multicanal capaz de:
    • Proteger los modos de un canal
    • Dar y quitar op mediante mensajes
    • Posibilidad de envío de "notices" cuando un usuario entra en el canal
    • Protección contra bans abusivos
    • Permite invitar a un usuario a un canal en modo +i
    • Quita todos los bans de un canal mediante un comando
    • Hasta 100 usuarios registrados (total), 10 canales simultaneos y 25 usuarios registrados por canal (configurable)
    • Posibilidad de Autoop mediante máscara
    • Posibilidad de log de cada canal, de forma independiente y configurable
    • Control de acceso y configuración de modos y permisos independiente para cada canal
    • Utilizar el registro de nicks de ESNET
    • Acceder a redes que exigen claves
    • Controlar canales locales
    • Mantener abiertos canales sin modos (IRCu 2.10.04 y superiores)
  • Logs detallados de todos los comandos enviados al bot
  • La propagación de líneas K mediante los kills de Theilax, principal motivación de la versión 1 del bot, se ha hecho opcional. De esta forma el Argobot ni toca los ficheros de configuración del ircd ni interfiere con la propagación de las nuevas Líneas G por parte de Theilax
  • Reconfiguración del bot sin interrumpir su funcionamiento
  • Posibilidad de ejecutar hasta 50 comandos con periodicidad arbitraria (configurable)
  • Uso de las facilidades proporcionadas en servers modificados: Join GOD y Mode X
  • Si le es posible, se autoinstala como Channel Service


Manual de usuario del Argobot (Versión 2)

  • COMANDOS

    La sintaxis de los comandos es la siguiente:

    /msg _argobot <clave> <comando> <canal> {nick}

    <clave>es la clave asignada al usuario
    <comando>uno de los siguientes comandos:
    opPasa el OP al usuario nick en el canal <canal>
    deopQuita el OP al usuario nick en el canal <canal>
    inviteInvita al usuario nick al canal <canal>
    unbanQuita todos los ban en el canal <canal>
    <canal>Canal sobre el que se desea efectuar el comando. Sólo funcionará si el Argobot es OP en dicho canal
    {nick}Nick del usuario sobre el cual hacer op, deop o invite. Con el unban es innecesario.

    Cualquier comando desconocido o con sintaxis o clave errónea será ignorado.

    El usuario debe asegurarse de que el nick "_ArgoBot" se corresponde al bot. Para ello debe validar que dicho nick tiene privilegios de IRCop. En caso de no verificarse eso deben informar enseguida a un IRCop, ya que puede tratarse de un nick spoofing.

    Las claves de acceso se cambiarán de forma periódica. Se ruega un buen uso de las mismas. Recuerden que las claves son personales y no deben comunicarse a nadie.

  • MODOS DE LOS CANALES

    La mayoría de los canales que mantiene el ARGOBOT están protegidos para evitar que un desaprensivo los deje en modo invitación, con clave, moderados, etc. La configuración puede cambiarse canal por canal, pero los valores por defecto son:

    • Modos forzados: tn
    • Modos no permitidos: iklmps
    • Modos libres: Se permite pasar op y poner bans

    Esta configuración puede modificarse a petición de los usuarios.

  • BANs

    En general el bot permite el empleo de kicks y bans libremente. En caso de takeover se puede recurrir a los comandos deop y unban. No obstante el Argobot no permitirá que se baneen dominios enteros. En concreto, no se admitirá ningún ban cuyo dominio contenga comodines. De esta forma se evitan baneos del tipo *!*@*.argo.es o, peor aún, *!*@*. Cualquier baneo de ese tipo será eliminado.

    A partir de la versión 2.50, el control de BANs se ha hecho configurable canal por canal mediante el empleo de la palabra clave "allow_any_ban".

  • LOGS

    En general no se mantendrán logs detallados de las conversaciones de todos los canales. No obstante el argobot permite hacerlo, por lo que esta funcionalidad queda a disposición de aquellos usuarios que así lo demanden (por ejemplo, canales de tutoriales o mesas redondas).

En caso de compromiso de clave o si se detecta un funcionamiento erróneo del Argobot, se ruega se avise lo antes posible a jcea@argo.es, incluyendo información lo más detallada y completa posible sobre el caso.

Sugerencias son bienvenidas.


Manual de instalación

Una instalación típica consta de los siguientes ficheros:

  • argobot.c: Fichero principal
  • argo_parser.c: Fichero para la lectura del fichero de configuración
  • argobot.conf: Fichero de configuración
  • argobot.log: Log de comandos enviados al bot

Adicionalmente, si se va a utilizar la propagación de líneas K será necesario copiar el fichero ircd.conf en otro llamado ircd.conf.real, por las razones explicadas para la versión 1.

El programa puede residir en cualquier directorio y bajo cualquier UID, pero si se propagan líneas K deberá estar en el mismo directorio que el ircd.conf y tener privilegios de escritura sobre él.

Gracias a Juan José Sánchez Mesa por la siguiente información para NT:

En principio, es posible compilar con cualquier compilador que soporte Win32 y generar ejecutable en modo consola. Se recomienda MS-Visual C++ 4.2/5.0 o Borland C++ Builder.

Para compilar se debe crear un proyecto para generar una aplicación de consola en Win32. Incluir los ficheros fuente argobot.c y argo_parser.c. Además debe incluirse la librería Winsock de 32bits (wsock32.lib). Y compilando normal, se debe obtener el ejecutable correcto.

Recomendaciones:

  • Esta aplicación se puede instalar como un servicio, usando el programa SRVANY que viene con el Kit de Recursos de Windows NT, para así poder ejecutarse aún cuando se cambie de usuario.
  • Ejecutarlo como Administrador y cambiar los derechos de los ficheros a sólo el Administrador.

A partir de la versión 2.40, el Argobot hace un Chroot, un SetUID y un SetGID, si así se le indica:

  • Si ejecutamos el Argobot como Root: (Recomendado)
    • Definimos el símbolo "SEGURIDAD" en el código fuente.
    • Damos a los símbolos "UID" y "GID" los valores que elijamos.
    • Si queremos hacer un CHROOT, indicamos el directorio al cual movernos. En caso contrario especificamos "/".
    Lo primero que hace el bot es el CHROOT, seguido del SetGID y del SetUID. De esta forma se reducen considerablemente los riesgos en caso de compromiso de seguridad.

  • Si NO ejecutamos el Argobot como Root:
    • Hacemos un "#undef SEGURIDAD"
A partir de la versión 2.50, se pueden definir los símbolos CONTROL_FOOD y VERBOSE:

  • Si deseamos ver todo lo que el servidor envía al Argobot, hacemos un "#define VERBOSE".
  • Si el nodo al que conectamos tiene el parche CSF (Channel Service No Flood) instalado, hacemos un "#undef CONTROL_FLOOD".

Para compilar el programa basta teclear las siguientes líneas.

Solaris:
gcc -Wall -g argobot.c -lsocket -lnsl -o argobot
chown root argobot
chgrp root argobot

Linux / FreeBSD / NetBSD:
gcc -Wall -g argobot.c -o argobot
chown root argobot
chgrp root argobot

System V: (cortesía de Pedro Beneitez - beneitez@coventry.ac.uk)
cc -g argobot.c -o argobot
chown root argobot
chgrp root argobot

Otros sistemas operativos:
(en construcción)

Otras consideraciones:

  • No es necesario que el propietario/grupo del argobot sea root, aunque se recomienda que el UID especificado en "SEGURIDAD" no tenga privilegios de lectura sobre el ejecutable.
  • Los parámetros concretos que se pasan al compilador dependen del compilador y del sistema.
  • Si no somos root, cambia el "#define SEGURIDAD" de principio del código por un "#undef SEGURIDAD".

No es necesario tomar también el fichero argo_parser.c porque se incluye automáticamente.

El siguiente paso consiste en la creación de una cuenta de IRCop en el nodo IRC al que se vaya a conectar. Las razones de ello se vieron con anterioridad.

Por fin, el último paso consiste editar el fichero de configuración para ajustarlo a nuestras necesidades.

Detalles a considerar:

  • Se puede cambiar la configuración del bot en cualquier momento. Para ello se edita su fichero de configuración y se le envía una señal HUP:

    >ps -lA | grep argobot
    >kill -HUP el_PID_de_arriba

    El bot leerá de nuevo su configuración y la pondrá en práctica enseguida, sin que se note ningún corte en su funcionamiento.

  • El bot imprimirá en pantalla los errores que vaya encontrando, las entradas y salidas de usuarios en los canales, etc. Esto es útil con fines de depuración, pero en funcionamiento normal resulta innecesario. En esos casos es más conveniente ejecutarlo en el background con el siguiente comando:

    >nohup argobot &

    Esto reenviará toda la salida del programa hacia un fichero nohup.out en el directorio actual. Ese fichero puede crecer muy rápido y lo normal es que no contenga nada de interés, por lo que se recomienda crear un enlace simbólico a /dev/null:

    >ln -s /dev/null nohup.out

  • IMPORTANTE: Dado que la orden de relectura de la configuración es un kill -HUP y que esa misma señal se envía al proceso cuando se cierra la ventana en la que se está ejecutando, es absolutamente imprescindible o bien no cerrar nunca esa ventana o bien (recomendado) haber lanzado el bot con el comando nohup, tal y como se describió en el punto anterior.

Versión 2 del Argobot (2.82)

Verificación de fichero:

MD5: 633564077d37fffe2c1acf6c5878f493
SHA-1: 9d115f2ecaa0e32365fec3868833c608e539a712


Sintaxis y semántica del fichero de configuración

Listado de comandos:

IRCnick <nick>
Informa al bot de qué nick debe utilizar a la hora de identificarse como IRCop ante el nodo IRC, así como para el whois.

IRCpasswd <clave>
Clave IRCop correspondiente al nick anterior.

nick <nick>
Nick bajo el cual debe aparecer el bot.

server <servidor>
Nombre de dominio al que se va a conectar el bot.

port <puerto>
Puerto al que debe conectarse.

away <texto>
Mensaje que debe aparecer en el away del bot. Generalmente será un mensaje informando al usuario que se trata de un bot automático y una dirección de e-mail de contacto. El mensaje puede hacerse todo lo largo que se necesite empleando una barra invertida ('\') al final de cada línea.

nick_collide <texto>
Mensaje enviado con el kill a cualquier usuario que esté utilizando el nick definido con el comando nick. Puede hacerse todo lo largo que sea preciso poniendo una barra invertida ('\') al final de cada línea.

umbral_kline <valor>
Indica cuántos intentos de conexión, matados por Theilax, se permiten antes de poner una línea K local. Si el valor es cero, esta funcionalidad no se utiliza, y el resto de comandos relacionados simplemente se ignoran. Valor típico: 5

timeout_klines <valor>
Número de segundos, como máximo (ver la justificación en la Versión 1) que duran las líneas K locales. Valor típico: 900 (15 minutos)

timeout_whowas <valor>
Parámetro que define cada cuántos segundos hay que comprobar la presencia de clonos. Valor típico: 5.

timer <offset> <período> <comando>
Ejecuta el comando especificado, cada período segundos, empezando offset segundos después de cargar la configuración. El comando puede ser todo lo largo que sea necesario empleando una barra invertida ('\') al final de cada línea. El comando se envía literalmente al servidor, por lo que se requiere una cierta familiaridad con el protocolo IRC.

timer 60 600 privmsg #lazo_azul :¡Solidarízate!
Envia al canal #lazo_azul el texto ¡Solidarízate! cada diez minutos. Al arrancar el programa se concede un minuto de gracia para permitir que entre en todos los canales especificados y se configure plenamente.

set <alias> <máscara> [clave]
Este comando da de alta a un usuario, cuyo nombre de referencia interno será alias (no tiene por qué coincidir con su nick). Máscara tiene el formato nick!user@dominio, siguiendo la sintaxis normal. Se admiten comodines SI Y SÓLO SI sustituyen a un campo completo. Por ejemplo:

jcea!*@*
Cualquier usuario que use ese nick

*!*@corinto.argo.es
Cualquier usuario en esa máquina

Si la máscara no va a ser utilizada en ningún comando posterior, se puede emplear para almacenar información de recordatorio arbitraria, siempre que se ajuste a la sintaxis indicada. Por ejemplo:

set jesus jcea!jcea@argo.es
nos recuerda que el usuario jesus suele usar el nick jcea y su dirección de correo electrónico es jcea@argo.es.

Clave es un parámetro opcional que declara una clave que el usuario podrá usar en los comandos que envíe al bot.

group <grupo> <alias...>
Define un grupo cuyo nombre interno será el declarado en el primer parámetro. El segundo parámetro y siguientes indica los usuarios asignados a ese grupo, usuarios declarados previamente con el comando set.

join <canal> [clave]
Indica al bot que debe gestionar el canal indicado. La clave es opcional, y puede emplearse GOD si tenemos el servidor parcheado y quiere forzarse su entrada en los canales por encima de bans, invite o claves (recomendado).

ATENCIÓN: Dado que el símbolo # se utiliza para señalar el principio de un comentario, no debe emplearse cuando se especifica el canal. Es decir:

join opers GOD
Entra en el canal #opers

A partir de la versión 2.29, el Argobot puede gestionar canales locales, usando el símbolo estándar:

join &Argo GOD
Controla el canal local &Argo

A partir de la versión 2.70, el Argobot puede gestionar canales sin modos (IRCu2.10.04 o superior), usando el símbolo estándar:

join +Argo GOD
Mantiene abierto el canal sin modos +Argo

autoop <grupo>
Cualquier miembro del grupo especificado será "opeado" cuando entre en el canal. Se recomienda no usar esta opción, dados sus riesgos de seguridad.

privil <grupo>
Declara a los miembros del grupo especificado como privilegiados. Ello significa que pueden enviar comandos al bot. La máscara será ignorada (salvo que se emplee también autoop), y se utilizarán las claves para el control de acceso.

mode_default <modos>
Fija los modos por defecto y obligados de un canal. La sintaxis es semejante a la del comando mode del IRC:

mode_default nt
Pone los modos "nt" en el canal. Si alguien los quita, los pone de nuevo. Ésta es la opción recomendada.

mode_default ntsk 123
Obliga a que el canal tenga modos "nt", y sea siempre secreto y con clave 123.

mode_disallow <modos>
Indica qué modos no son admitidos en el canal.

mode_disallow silmpk
Opción recomendada,a prueba de takeover.

mode_disallow ob
No se permiten ni pasos de op ni bans, salvo los que ponga el propio bot.

log <fichero>
Hace logs del canal, almacenándolos en el fichero indicado. Si el fichero ya existe, la salida se concatena. Se almacenan referencias temporales cada diez minutos.

notice <texto>
Este comando está disponible desde la versión 2.40. Permite configurar un texto que será enviado a cualquier usuario que entre en el canal, como "notice". Puede especificarse un texto largo añadiendo una barra invertida ('\') al final de cada línea.

allow_any_ban
Disponible desde la versión 2.50. Este comando especifica que en ese canal no se imponen restricciones en cuanto al tipo de ban que se puede hacer. Es decir, cualquier usuario que tenga OP puede hacer un ban a "*!*@*" y el Argobot ni se inmutaría. Se recomienda no utilizar esta opción salvo que sea preciso por las características o idiosincrasias del canal.

En caso de conflicto con la protección de modos (es decir, que haya una "b" en "mode_disallow"), la protección de modos gana: no se permitirán BANs en el canal.

passwd <clave>
Disponible a partir de la versión 2.70. Permite especificar una clave que será enviada al servidor al principio de la conexión. Con ello se puede acceder a redes que emplean claves, y utilizar el registro de nicks de ESNET.

Descripción léxica y sintáctica en pseudoBNF:

fichero := [comando...] EOF
comando := ( "IRCnick" palabra | "IRCpasswd" palabra "nick" palabra
           | "server" palabra | "port" numero | "away" texto
           | "nick_collide" texto | "umbral_kline" valor
           | "timeout_klines" valor | "timeout_whowas" valor
           | "timer" valor valor texto
           | "notice" texto
           | "allow_any_ban"
           | "set" palabra palabra"!"palabra"@"palabra [palabra]
           | "group" palabra palabra... | "join" palabra [palabra]
           | "autoop" palabra | "privil" palabra
           | "mode_default" palabra [palabra...]
           | "mode_disallow" palabra
           | "log" palabra
           | "passwd" palabra
           | "") ["#"texto] (EOL | EOF)

palabra := caracteres...
caracteres := ASCII menos '#', espacio, '\', tabulador y control
numero := ("0".."9")...
texto := ([caracteres2] ["\"(EOL|EOF)])...
caracteres2 := ASCII menos control

Configuración de ejemplo:

#
# Parámetros Globales
#

IRCnick         ArgoBot
IRCpasswd       *clave* 
nick            _ArgoBOT
passwd          *clave* 
#server         irc.argo.es
#server         gaia.irc-hispano.org
server          irc.argo.es
port            6668
away            Bot de control de irc.argo.es. Para cualquier \
                consulta, hablar con jcea o mail a irc@argo.es
nick_collide    Escoge otro Nick, por favor

umbral_kline    0       # Máximo número de intentos (desconectado)
timeout_klines  0       # 15 minutos
timeout_whowas  0       # Tiempo entre whowas

set     todos   *!*@*   # Un comodín
group   todos   todos

# IRCops

set     jcea            *!*@castor.argo.es              *clave*
set     manolete        *!*@tequila.girona.com
set     artemisa        *!*@raul.cs2informatica.es      *clave* 

group   IRCops  jcea manolete artemisa

# Proveedores

set     arnal           *!oreixa@legba.arnal.es         *clave* 
set     tanaki          *!hal9000@nodo1.tanaki.es
set     nexnet          *!jesus@txuso.nexnet.es
set     gphoenix        *!juanan@aguila.gsphoenix.com
set     bemarnet        *!Midnight@host.bemarnet.es
set     conecta         *!*@hermes.conecta.es
set     anade           *!fsanchez@alpha1.anade-sl.es
set     mastercom       *!Chema@chema.bme.es
set     svalero         *!xiaman@Apocalipsis.svalero.es
set     juande          *!*@trevenque.es                *clave* 
set     alc             *!*@nt.alc.es
set     manolete        *!*@tequila.girona.com
set     airastur        *!*@ironsam.airastur.es
set     distrito        *!*@caridad.distrito.com
set     vidal           *!*@soledad.falcon-es.com
set     olivet          *!*@devnull.tech.olivet.com
set     chemita         *!*@chemita.bme.es
set     cat             *!*@testfw.Cat.es               *clave*
group   proveedores     jcea bot arnal tanaki nexnet gphoenix bemarnet conecta anade mastercom svalero juande artemisa alc manolete airastur distrito cat vidal olivet chemita


# Canal ayuda-esnet
set     petrus          *!beneitez@coventry.ac.uk       *clave* 

group   ayuda-esnet     jcea petrus


join            esnet           GOD
autoop          IRCops
privil          IRCops
mode_default    nti
mode_disallow   slmpk
timer   60 86400 privmsg olimpo :op #esnet _argobot

join            ayuda-esnet     GOD
autoop          IRCops
privil          ayuda-esnet     
mode_default    nt
mode_disallow   silmpk
timer   60 86400 privmsg olimpo :op #ayuda-esnet _argobot

join            proveedores_seguro      GOD
autoop          proveedores
#log            log_proveedores
privil          proveedores
mode_default    sntk (clave secreta)
mode_disallow   ilmp
notice          Por favor, ponte el nick de proveedor que representas. \
                Logs en http://www.argo.es/~jcea/irc/  \
                Página del canal en http://www.argo.es/~jcea/irc/prov_qmd.htm
timer   60 86400 privmsg olimpo :op #proveedores_seguro _argobot

join            lazo_azul GOD
#autoop         IRCops
mode_default    ntm
mode_disallow   silpko
notice          Este canal no es para hablar. Simplemente entra aquí \
                        para solidarizarte con las víctimas del terrorismo
timer   60 3600 privmsg #lazo_azul :Este canal no es para hablar. \
                        Simplemente entra aquí para solidarizarte con \
                        las víctimas del terrorismo (mensaje automático)
timer   60 9999 topic #lazo_azul :Este canal no es para hablar. \
                        Simplemente entra aquí para solidarizarte con \
                        las víctimas del terrorismo
timer   60 3600 privmsg $*.org :Los usuarios que lo deseen pueden entrar \
                        en el canal #lazo_azul. Este canal no es para hablar. \
                        Simplemente entra aquí para solidarizarte con \
                        las víctimas del terrorismo (mensaje automático)
timer   60 86400 privmsg olimpo :op #lazo_azul _argobot



# Pone un modo para reducir el consumo de ancho de banda

timer   60 600  mode _argobot :+d


Últimas actualizaciones

  • 29/Sep/98 Versión 2.82
    Debido a un conflicto entre el "notice" al entrar en los canales y el reconocimiento del usuario, no se reconocía al usuario si en su máscara se indicaba también el nick.

  • 17/Jul/98
    Se añaden los párrafos describiendo los pasos para compilar bajo NT.

  • 16/Jul/98 Versión 2.81
    Como se ha modificado la forma de leer el estado del socket, si la llamada se aborta con una señal (KILL -HUP pid) para que lea el fichero de configuración de nuevo, el proceso cierra la conexión y la abre luego, tras unos minutos (si no se cae por flood antes). Arreglado.

  • 09/Jul/98 Versión 2.80
    Release oficial de la versión anterior Preview03.

  • 08/Jul/98 Versión 2.80Preview03
    Aprovechando que en NT no tenemos las funciones "strcasecmp()" y "strncasecmp()", incluimos un par de funciones que realizan esa tarea, así como tener en cuenta los nicks equivalentes en IRC (por ejemplo "[" y "{").

  • 08/Jul/98 Versión 2.80Preview02
    Cambios para permitir compilar el mismo codigo en UNIX y NT:
    • Bajo NT no se hace CHROOT, SETGID ni SETUID.
    • Se ha variado el orden de los #include para permitir insertar un par de librerías Win32.
    • Se han definido una serie de macros para permitir compilar el mismo código en UNIX y NT: sssize_t, sleep, signal, etc.
    • Se han cambiado las llamadas a sockets "read" y "write" por "recv" y "send".
    • Los errores en sockets se comparan con "SOCKET_ERROR", constante NT definida en UNIX, para que sea compatible.
    • Añadido un cast en "htons()" para que NT no se queje de la conversión de tipos.
    • El cierre de sockets se hace con el macro "closesocket()" (antes "close()")
    • La rutina de grabación de logs pasa de "log()" a "graba_log()" debido a la colisión con la rutina matemática (en UNIX no pasa porque no se hace #include de "math.h").

  • 08/Jul/98 Versión 2.80Preview01
    Conversión a NT gracias a Juan José Sánchez Mesa (jujosame@larural.es)

  • 06/Jul/98 Versión 2.70
    • Comando "passwd" para especificar una clave enviada justo al principio de la conexión. Ello permite utilizar el Argobot en redes que requieren clave, así como utilizar el registro de nicks de ESNET.
    • Los comandos, ahora, son case insensitive.
    • Añadido un estado extra para evitar la caída inicial por FLOOD si el bot está gestionando muchos canales. Ahora envía un PING al servidor justo después del intento de registrarse como Channel Service. Cuando lo ve (el PONG), es cuando hace el Mass Join.
    • Si se cierra la conexión se relee el fichero de config y se reinicia todo, incluidos los Timers.
    • Se pueden poner uno o dos parámetros opcionales al ejecutable. El primero es el fichero de configuración. El segundo el fichero de logs.
    • Permite mantener abiertos canales sin modos (IRCu 2.10.04 y superiores)
    • Mejorado el Lazy Part. Lo hace en cambios de modo o JOINs en el canal. Antes sólo lo hacía en los cambios de modo.

  • 17/Feb/98 Versión 2.51
    Si no se han especificado modos por defecto en el canal,
    el BOT muere al pasarle OP. Corregido. Error comunicado
    por Pedro Beneitez - beneitez@coventry.ac.uk.

  • 13/Feb/98 Versión 2.50 (¡¡Mi cumple!! :-) 26 tacos)
    Muchas de las modificaciones están sugeridas por Adria García "Manolete" - manolete@tequila.girona.com.
    • En algún cambio de código se dañó el funcionamiento del comando "invite". Ya funciona. Enviaba los parámetros en orden erróneo.
    • Añadido el comando "allow_any_ban" para no filtrar bans, configurable canal por canal. <- Manolete
    • Si estamos utilizando un nodo sin control de flujo, podemos hacer un UNDEF de la etiqueta CONTROL_FLOOD. El rendimiento será mucho mayor.
    • Añadido "fflush" para posibilitar el uso del Argobot en un pipe o redirigiendo a un fichero de forma tal que no se vaya escribiendo por bloques. De esta forma se pueden alimentar otros programas con la salida del argobot. <- Manolete
    • Implementación de un sistema de backoff exponencial para poder sobrevivir al control de clonos de la IRCu 2.10 si recibe varios kills seguidos.
    • Se ha cambiado la salida del argobot para que imprima TODO lo que le llega, no sólo los comandos que no son interpretados. Antes no se hacía así para reducir todo el tráfico de WHOWAS y similares, algo que se ha convertido en secundario con la nueva versión del Argobot (paso de versión 1 a versión 2). Los que quieran volver al sistema primitivo sólo tienen que hacer un #undef VERBOSE.
    • Al entrar en los canales, el Argobot intenta darse OP a sí mismo usando XMODE. Si no lo consigue, no hace nada. Pueden usarse las facilidades de un nodo de control mediante los comandos temporizados.
    • Corregido un bug que ocasionaba que si estaba permitido fijar un límite en un canal, se fija, y en el mismo comando MODE se pone un modo prohibido con parámetro (por ejemplo, O, V, etc), el argobot no era capaz de quitar ese modo.
    • Los modos se chequean cada vez que el Argobot recibe OP, y los corrige si es necesario. Eso se hace SALVO que el op lo obtenga de sí mismo. <- Manolete

  • 29/Ene/98 Versión 2.40
    En los canales con NOTICE activado, el argobot se mandaba el notice a sí mismo. Arreglado.
    Ahora manda el primer away periódico DESPUÉS de registrarse, como debe ser.
    En pro de la seguridad (la paranoia al poder), argobot automáticamente (si se compila con un DEFINE específico):

    • Hace CHROOT a un directorio específico (pero no hace un CD)
    • Se pone el UID/GID que se le indique

    Para que estos pasos sean posibles es preciso duplicar las librerías dinámicas necesarias (o que el enlazado sea estático) y ejecutar el argobot como ROOT. Compruebe que el argobot tiene permisos de lectura en su config y de escritura en su log.

  • 27/Ene/98
    El código fuente del Argobot se hace público. ¡¡¡Por Fin!!!. Los motivos de ello son múltiples:

    • Demanda popular.
    • Creencia en el concepto "Share&Enjoy".
    • Que no tengo demasiado tiempo para dedicarle, y prefiero que otras personas puedan trabajar sobre él.
    • Puede servir de base para investigaciones y proyectos de otras personas.

  • 07/Ago/97 Versión 2.30
    Permite enviar "notices" cuando un usuario entra en el canal.
    Sugerencia de Oscar Reixa - oreixa@arnal.es.

  • 13/Jun/97 Versión 2.29
    Ya que los away no se propagan en un merge, envía un away al servidor cada cierto tiempo.
    Permite trabajar con canales locales.

  • 03/Jun/97 Versión 2.27
    Solucionados problemas con señales en los sistemas no POSIX.

  • 30/May/97 Versión 2.26
    Cuando se manda un KILL -HUP al bot también se imprime si las líneas K están desconectadas o no.
    Cuando un usuario intenta hacer OVERFLOW sobre el bot, graba en el log su identidad.
    Mejorada la inicialización de variables globales tras un kill.
    Corregido un error en los OP y DEOP por comandos, que permitía poner modos arbitrarios.

  • 19/May/97 Versión 2.23
    Por defecto, no se ponen klines. Antes la opción se desconectaba poniendo un timeout muy alto.



Python Zope ©1997-98 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS