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

Preguntas (y respuestas) frecuentes sobre el Argobot

Última Actualización: 29 de Enero de 1.998 - Jueves

EN OBRAS!!! Por sus propias características, esta página cambia de forma constante. Si tienes alguna sugerencia o añadido (se agradecen :-), házmelo saber.


  1. ¿Qué es eso de que el ArgoBOT hace "log" de los canales?

    Una de las funcionalidades del Argobot consiste en hacer logs de CIERTOS los canales. El log comprende lo que se dice en el canal, no las entradas y salidas de los usuarios, baneos, kickeos, cambios de topic, etc.

    El objetivo de esta función no es el monitorizar los canales, ni mucho menos, sino el permitir recoger los diálogos que se mantienen en canales de tutorias, mesas redondas, etc.

    1. ¿Cómo sé si este canal está siendo grabado?

      En principio los usuarios no tienen más remedio que fiarse del buen hacer de los IRCops de la red, ya que aún cuando el Argobot no hiciese logs, hay muchas más formas de capturar conversaciones públicas.

      En todo caso todo canal a grabar lo será por petición expresa de sus usuarios.

      Si en una configuración particular el Argobot no hace log de NINGÚN canal, puede detectarse siguiendo el punto siguiente.

    2. El bot no está haciendo log de ningún canal. ¿Puedo aumentar el rendimiento del bot y reducir el tráfico en la red?.

      Sí. Aunque el bot no haga log, recibe todas las conversaciones de todos los canales en los que está, como un usuario más de los mismos. Ello supone consumo de CPU para procesar texto que será descartado inmediatamente y consumo de ancho de banda si el bot es el único miembro del canal en su nodo. También consume CPU en el propio servidor IRC del que cuelga.

      Si no se está grabando ningún canal, es posible poner el Argobot en modo "silencioso" (modo "d"). En dicho modo se ven los eventos de los canales (entradas, salidas, baneos, cambios de modo, cambios de topic, etc), pero no los textos y acciones que escriban los usuarios. Los servidores IRC ya no mandan siquiera los textos a los usuarios/bots en dicho modo. Las conversaciones privadas (msg/query/chat) con los usuarios sí son recibidas (para enviar comandos, por ejemplo); sólo se eliminan las conversaciones públicas en los canales.

      Para activar este modo basta con poner una línea de este estilo en el fichero de configuración del Argobot:

      timer 60 86400 mode _argobot :+d
      

      Se puede verificar que el bot está en modo silencioso haciendo un "/whois". Si delante de los canales aparece un signo "menos" ("-"), significa que el bot no recibirá lo que los usuarios escriban en los canales.

      Esto permite que los usuarios comprueben si les están grabando: Si el bot está en modo silencioso, es que no graba nada. Si no está en dicho modo, puede ser debido a que se grabe algún canal o que, simplemente, el administrador del bot no haya activado el modo, por cualquier motivo.

    3. Programa para procesar los logs de los canales

      Los canales que se graban tienen etiquetas temporales cada 10 minutos. En un canal con tráfico viene bien, pero en uno sin movimiento (o por las noches) es posible que se acumulen varias referencias temporales sin contribuciones de los usuarios. A continuación se lista un pequeño programa en C que permite filtrar los ficheros de logs para eliminar las etiquetas temporales redundantes:

      /*
      ** Programa para quitar las líneas superfluas a los logs del argobot.
      ** Actúa como filtro.
      **
      ** 31/Jul/97 Versión 1.00
      **           Cuando hay una ráfaga de referencias temporales, deja
      **           sólo la primera y la última.
      */
      
      #include 
      #include 
      #include 
      #include 
      #include 
      #include 
      
      int main(void)
      {
      int contador=0;
      char buf[1024];
      char buf2[1024];
      
              while(read(0,buf2,1)) {
                      if(buf2[0]=='*') {
                              contador++;
                              if(contador==5) {
                                      buf[0]='*';
                                      buf[1]='\0';
                                      do {
                                              read(0,buf2,1);
                                              strncat(buf,buf2,1);
                                      } while(buf2[0]!='\n'); 
                                      continue;
                              }
                      } else {
                              if((contador==3)&&(buf[0])) {
                                      write(1,"***\n",4);
                                      write(1,buf,strlen(buf));
                                      write(1,"***\n",4);
                              }
                              buf[0]='\0';
                              contador=0;
                      }
                      
                      if(contador==4) {
                              read(0,buf2,3); /* Se salta la linea */
                              continue;
                      }
                      if(contador==6) {
                              contador=3;
                              read(0,buf2,3); /* Nos saltamos la linea */
                              continue;
                      }
                      
                      do {
                              write(1,buf2,1);
                              if(buf2[0]=='\n') break;
                      } while(read(0,buf2,1));
              }
              return 0;
      }
      

      Los lectores observadores verán que no se hacen comprobaciones de longitud en los búfferes... Eso es porque ya lo ha hecho antes el Argobot.

  2. ¿Cómo protejo un canal de "takeovers"?

    El primer paso, siempre, consiste en prohibir ciertos modos en el canal. Por ejemplo, no tiene sentido que un canal público se pueda poner en modo invitación o con clave. Para ello se utiliza el comando mode_disallow. Los modos típicos que deben prohibirse son "silmpk".

    Lamentablemente, una vez que una persona ha conseguido op, puede quitárselo al Argobot. Para evitarlo hay dos posibilidades:

    • El canal se configura de forma que el único usuario autorizado a pasar op a otros sea el propio bot (ver punto siguiente).

    • Se modifica el servidor para que al bot no se le pueda kickear ni quitar op, mediante las modificaciones "Channel Service". Ésta es la forma "buena" de hacerlo.

    1. ¿Se puede hacer que sólo el Argobot pueda pasar OP?

      Sí, por supuesto. Para ello debe definirse el modo "o" como prohibido en el canal. De esta forma cualquier paso de op será deshecho por el bot.

    2. ¿Se pueden prohibir los ban en un canal?

      Simplemente prohiba el modo "b" en el canal. El bot deshará cualquier ban que se ponga.

  3. ¿Por qué en algunos canales están el Argobot y el Scytale?

    El primer bot en entrar en servicio en la red fue Argobot, pero el bot oficial del IRC Hispano es Scytale. No obstante resulta bastante complejo de utilizar por los usuarios normales y corrientes, y configurarlo adecuadamente para proteger un canal es muy difícil.

    En ese sentido Argobot lo complementa a la perfección. Es un bot muy sencillo de utilizar y diseñado específicamente para ocuparse de la gestión de canales. Algunos usuarios prefieren un bot y otros el otro. Se ha intentado forzar votaciones, pero en esos casos los administradores siempre eligen mantener AMBOS. Tal vez no la solución más satisfactoria pero resulta, cuando menos, curiosa.

    1. ¿Qué hay que tener en cuenta en un canal con ambos bots?

      Naturalmente depende un poco de las idiosincrasias de cada canal. Generalmente se configura Scytale para dar op y demás, y Argobot para proteger modos y bans.

    2. ¿No se puede prescindir de uno de ellos?

      Si y no... Cualquiera de los bots puede ampliarse para cubrir las funcionalidades del otro. La situación actual, no obstante, es esa. Hay, además, muchos factores que no se pueden discutir aquí.



Python Zope ©1997-98 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS