mIRC32 - Curso de Scripting: Linkar un servidor IRC al ircu2.10.x. Fecha creación: 16/01/00 - Última revisión: 16/01/00
 
Introducción

Aqui se explica como linkar un servidor IRC creado con mIRC scripting al ircu2.10.x. ESTE SERVIDOR NO SIRVE PARA QUE OTROS USUARIOS ACCEDAN A LA RED DONDE LO TENGAS LINKADO, sino que sirve para conectar los bots a la red, ya sean bots de juegos, noticias, debates, servicios de la red, etc. Tu servidor aparecera como un servidor más a la lista de Links, recibiras toda la información que reciban los bots que conectes por el y toda la información relacionada con la red, Jupes, Splits, WallOps, etc.

En los ejemplos se usan servidores inventados, excepto el servidor a linkar que se uso servidores de la de Univers para que se entienda mejor y de pasada hacer un poco de publicidad (tampoco les hace falta).

KaT fue (almenos eso tengo entendido) el primer español a usar los sockets en mIRC con la finalidad de linkar un servidor IRC a una red.

Recomiendo visitar www.blackcode.com/irc dónde podras encontrar addons/scripts donde linkan servidores a la mayoria de ircds de la redes más conocidas, estos scripts también son bots de servicio de la red, registro de nicks, canales, mensajeria, etc.

La versión del ircd ircu2.10.x lo usan la mayoria de redes españolas y otras internacionales como pueden ser: GlobalChat, IRC Hispano, etc. En cambio la red Univers usa otro protocolo que quizas es más comodo y fàcil de usar.
 

Trios en P10

En p10, cuando un usuario entra a traves de un servidor IRC, este lo asocia y anuncia al resto de la red con un trio de letras que le identifica, por ejemplo ATX, en este trio, la primera letra (A) siempre es la letra que identifica el servidor IRC por donde conecta el usuario, las otras dos letras del trio son elegidas al azar. Cuando los usuarios realizen alguna acción y recibas información de un usuario, en casos lo recibiras como trio de letras o como nick directamente.

Al usar p10, debes de crear una base de datos donde relaciones los trios con los nicks de los usuarios de la red, cuando linkes en servidor IRC te mandara esta información, pero lo que ya es más difícil es actualizar la base de datos ya que la has de modificar cuando des/conecte un usuario, cuando se realize un gline/kill...

Por ejemplo, cuando el servidor linke aparecerian asi los datos de los usuarios:

A NICK sarrio 1 948033194 NoD 127.0.0.1 +oiw B]AAAB AAA :mirc551

A NICK Dinamick 1 948033634 oOIIIIIIOo 127.0.0.1 B]AAAB AAB :Resplandor

A NICK root 1 948034090 root 195.77.120.20 DDTXgU AAC :root

A NICK niveral 1 948034809 mIRC 127.0.0.1 B]AAAB AAD :a

A NICK pakito 1 948035117 sarrio 195.77.120.10 DDTXgK AAE :InTuDeR ScRiPt UsEr

Glosario de la segunda linia (los marcados con un * son los mas importantes):

  • A = Letra del servidor por donde esta el usuario

  • Dinamick = Nick del usuario (*)

  • 948033634 = Fecha del dia en formato $ctime

  • oOIIIIIIOo = Identd del usuario

  • 127.0.0.1 = Host del usuario

  • Resplandor = Full Name

  • AAB = Trio de letras p10 (*)

Linkando el servidor IRC

Para poder linkar tu servidor a otro necesitas el permiso de este otro. Si el te deja linkar, debe añadir estas linias en su ircu2.10.x:

H:*:*:nombre del servidor de bots::
U:*:*:nombre del servidor de bots::
N:ip del servidor de bots:claveremota:nombre del servidor de bots::
C:ip del servidor de bots:claveremota:nombre del servidor de bots::clase destinada a servidores
Por ejemplo, si lo linkas a un ircd que esta en tu ordenador:

H:*:*:Grawkid.Univers.Org::
U:*:*:Grawkid.Univers.Org::
N:127.0.0.1:OpenAccess:Grawkid.Univers.Org::
C:127.0.0.1:OpenAccess:Grawkid.Univers.Org::2

Una vez el administrador del otro servidor haya añadido estas linias a su ircd, podras linkar sin problemas. Dónde se indica el servidor IRC, siempre va el nombre de tu servidor (siempre el mismo nombre).

Primero de todo debes tener muy claro el tema de los trios en p10. Debes configurar unas opciones en algunas variables (no hace falta usar variables, pero asi lo veras más claro en el ejemplo) para poder linkar el servidor correctamente:

  1. %server.name = Nombre del servidor IRC, Grawkid.Univers.Org
  2. %server.start = El $ctime de cuando iniciaste el mIRC
  3. %server.letra = Letra para tu servidor IRC, T
  4. %server.info = Descripción/utilidad del servidor, Servidor de pruebas
  5. %server.password = Password remoto de acceso al servidor, OpenAccess

Linkar el servidor sólo consta de dos linias, PASS y SERVER. Primero debes conectar con el servidor mediante el comando SockOpen, luego debes esperar que verifique la conexión (On SockOpen) y cuando conecte enviar información con el comando SockWrite. Una vez enviada la información (PASS y SERVER), pueden pasar 2 o 3 minutos sin recibir información alguna, luego puede pasar que linkes perfectamente o no.

/sockopen servpersonal Xonix.Univers.Org 6667

on 1:SockOpen:servpersonal:{
  if ($sockerr > 0) { echo -s no se pudo conectar :( | return }
  echo -s conectado... abriendo conexión server-server...
  sockwrite -nt servpersonal PASS %server.password
  sockwrite -nt SERVER %server.name 1 %server.start $ctime P10 %server.letra $+ D] : $+ %server.info
}

Conectando Bots

A traves del servidor que has linkado pueden conectar bots por ejemplo, para hacerlo utiliza este comando con estos parametros (los modos de usuario no son necesarios):

/sockwrite -tn servpersonal T N Karawicx 1 $ctime Serv Kara.Wicx +okid DDNSca TAS :Servicios de la red
Glosario:

  • T = Letra del servidor (ya la configuraste al linkar el servidor)

  • Karawicx = Nick del Bot

  • Serv = Identd del bot

  • Kara.Wicx = Host del bot (Mask: Serv@Kara.Wicx)

  • +okid = Modos iniciales del bot

    • +o = IrcOp, sin password ni nada :)

    • +d = No pueden echarlo de ningun canal (Usuario protegido)

  • TAS = Trio de letras, la primera letra (servidor) es fija, las otras puedes elegirlas

  • :Servicios de la red = Full Name del Bot

Recibiendo y enviando mensajes por querys

Los bots pueden recibir mensajes por query, por lo tanto debemos poderlos leer y procesarlos, por eso los mensajes los recibiremos con el comando SockRead hasta aqui bien, luego debemos comprobar si la información que recibimos es un mensaje por query (PRIVMSG) y a que bot lo ha recibido. Si recibimos un mensaje por query apareceria una cosa asi:

:sarrio PRIVMSG KAS :estas visitando http://sockets.univers.org

Glosario:

  • :sarrio = Nick del usuario que manda el mensaje

  • :TAS = El trio de letras del bot que ha recibido el mensaje

  • :estas visitando http://sockets.univers.org = El mensaje que ha recibido

  • PRIVMSG = Mensaje por query

Hasta aqui es fácil, pero ahora quizas el bot deba responder con algun mensaje al usuario con información o con algun mensaje de error. Para poder mandar un mensaje al usuario debes hacerlo a traves del trio de letras el cual desconoces, pero como sabes su nick puedes buscar en tu base de datos el trio de letras. Una vez hayas averiguado el trio de letras debes enviar el mensaje asi:

/sockwrite -tn servpersonal TAS PRIVMSG AAA :Error >> Comando desconocido!

Glosario:

  • TAS = Trio de letras del bot que enviara el mensaje

  • AAA = Trio de letras del usuario a enviar el mensaje

  • :Error >> Comando desconocido! = Mensaje a enviar
Mensajes del servidor

Los usuarios pueden solicitar información sobre un servidor IRC cuando quiera con los comandos version, admin, etc. lo interesante es responder a estos eventos raw tal y como haria un servidor IRC real. Sólo has de comprobar la información que recibis con el evento On SockRead y procesar la información. Mira este ejemplo:

on 1:SockRead:servpersonal:{
  sockread %servpersonal
  reading %servpersonal
}

alias reading {
  if ($2 == ADMIN) {
    /sockwrite -tn servpersonal T 256 TAQ :Administración de Info.Univers.Org
    /sockwrite -tn servpersonal T 257 TAQ :Información de Info.Univers.Org
    /sockwrite -tn servpersonal T 258 TAQ :Servidor IRC de pruebas                           
    /sockwrite -tn servpersonal T 259 TAQ :F. Sarrió <sarrio@univers.org>
  }
  elseif ($2 == VERSION) { 
    /sockwrite -tn servpersonal T 351 TAQ :Ejemplo de servidor IRC de http://sockets.univers.org - v1.0 
  }
  elseif ($2 == TIME) { /sockwrite -tn servpersonal T 391 TAQ : $+ $fulldate }
}
Glosario:
  • TAQ = El trio de letras del nick que solicito ADMIN/VERSION

  • T = La letra de tu servidor IRC

NOTAS: Has de averiguar el trio de letras del nick que solicito la información buscando en tu base de datos. El número que hay despues de "T", es el número raw que devuelve la información.
 
Ejecutando comandos

Puedes ejecutar comandos con el servidor, como cambiar modos de un canal, etc...

da op: /sockwrite -tn servpersonal T M #univers +o AAB

banea: /sockwrite -tn servpersonal T M #ayuda_scripting +b *!*@vilallonga.telefonica.com

envia wallops: /sockwrite -tn servpersonal T WA :Mensaje WallOps a toda la red

Y con los bots también claro...

topic: /sockwrite -tn servpersonal TAS T #canal :Visita http://sockets.univers.org

cambiar modos: /sockwrite -tn servpersonal TAS M #canal +msintp


e-mail [SaRRiO]: sarrio@univers.org - e-mail KaT: kat@blackcode.com

Recomiendo visitar www.blackcode.com/irc por la información que contiene.

documento escrito por [SaRRiO], basado en los scripts/addons de KaT 16/01/00


 
 Volver a la página principal