Usuarios Remotos

 

USUARIOS REMOTOS.-

 

Nos referimos a un usuario remoto cada vez que especificamos un evento remoto, por ejemplo, en el evento “on 1:join” le estamos diciendo al mIRC “cuando un usuario de nievel 1 entre a un canal…” Esta es una sección completamente opcional y no necesariamente todos los scripts harán uso de ella, puesto que sólo es realmente útil para ciertas tareas muy especificas. Antes que nada debe saber, que por defecto, el nivel 1 quieres decir “decir todos los usuarios”, si queremos que el evento sólo actúe ante usuarios que tengo un cierto nivel tendremos que especificarlo en ese sentido, así como asignarles nivel para que ciertos usuarios tengan acceso o no a esos eventos, es decir, el programa actúe según las indicaciones dependiendo del nivel que tenga dicho usuario remoto.

 

Asignación de niveles a usuarios.-

 

Para asignar un nivel determinado a un usuario iremos al editor de mIRC, pero esta vez a una pestaña que seguramente tendremos en blanco, la pestaña “USERS”. La sintaxis para declarar que un usuario tiene un cierto nivel es:

 

            <nivel>:<nick>!<user>@<host>/<ip>

 

Por ejemplo:

 

10:filemon!*@*

20:mortadel0!*@theilax.arrakis.es

 

Hemos creado dos usuarios remotos, el primero filemon le hemos dado el nivel “10” y cualquier persona con ese nick tendrá acceso a los privilegios de ese nivel 10. El segundo nivel que hemos asignado es más específico porque se lo asignamos a un nick y a una mascara, es decir que el nivel “20” solo lo tendrá aquel que su nick sea “mortadela” y su host sea “theilax.arrakis.es”, de esa forma nos aseguramos que los privilegios que especifiquemos para el nivel 20 solo los mortadelo con ese host tenga acceso y no cualquiera que se ponga ese nick. Saber también que un usuario con nivel 20 tendrá acceso no solo a los privilegios del nivel 20 sino también a los de nivel inferior: 19,18,17,…etc. Si quisiéramos que solo tuviera acceso a los eventos de nivel 20, tendríamos que especificarlo de la forma siguiente:

 

            =20:mortadelo!*@theilax.arrakis.ex

 

el “=” delante del nivel indica que el nick especificado solo tendrá acceso a los privilegios de ese nivel y no a los inferiores.

 

Así de esta forma se asignan los niveles de una forma “estática”, vamos al editor del mIRC y los introducimos a mano, pero también podríamos hacerlo de una forma “dinámica” mediante comandos del mIRC, digo dinámica porque nos pueden servir estos comandos para más adelante permitir al usuario cambiar el nivel de cierta persona o añadir mas usuarios con un determinado nivel. Los comandos son:

 

·         /auser [-a] <niveles> <nick/host>

 

Añade un usuario con el nivel o niveles que especifiquemos a la lista de usuarios remotos, si especificamos el parámetro [-a] hará que si el usuario ya existía se le añada el nuevo nivel al que ya tenia. Por ejemplo:

 

            /auser 10 filemon

 

Añade a filemon a la lista de usuarios remotos con nivel 10, si filemon ya estaba en esa lista, será borrado y sustituido por la nueva entrada.

 

            /auser –a 12,13 filemon

 

Añade los niveles 12 y 13 a los que ya tenía el usuario filemon, por la tanto la sección users quedara asi:

 

            10,12,13:filemon

 

En lugar de un nick podríamos haber especificado una mascara con el modelo nick!user@host

 

·         /flush [niveles]

 

Este comando borrará todos los nicks de niveles especificados que no estén actualmente en ninguno de nuestros canales. Por ejemplo:

 

            /flush 1,2,3

 

Borrará de la lista de usuarios remotos a todas las personas que tengan nivel 1,2 ó 3 y no estén en ninguno de nuestro canales.

 

            /flush

 

Cuando se especifique este comando sin argumentos borrará todas las entradas (en la pestaña “Users” del mIRC) de gente que no esté actualmente en ninguno de nuestros canales.

 

·         /guser [-a] <niveles> <nick> [tipo]

 

Este formato trabaja en la misma forma que /auser con la única diferencia de que solo de podemos especificar el nick de la persona y el mIRC mirará su mascara actual y la añadirá al nick, para ello tenemos que especificar tambien el [tipo] de mascara que será un número del 0 al 9.

 

            /guser 10 TipoX 4

 

Añade al nick Tipos con nivel 10 y una mascara del tipo 4 (*!*@*.dominio)

 

·         /ruser [niveles] <nick/host> [tipo]

 

Borrará todos los niveles que especifiquemos del nick o host que especifiquemos, podemos también darle solo el nick y especificar el [tipo] de mascara para que el mIRC la mire y borre los niveles de los usuarios que tengan esa mascara.

 

            /ruser 10 Ytreme

 

Borrará el nivel 10 que le hayamos dado al nick Ytreme.

 

            /ruser Ytreme

 

Borrará a Ytreme de la lista de usuarios remotos (o lo que es lo mismo le quitará todos los niveles).

 

            /ruser 25 Ytreme 4

 

El mIRC buscará la información de Ytreme y borrará el nivel 25 de todas las entradas en la lista de usuarios que tengan esa mascara.

 

·         /rlevel [-r] <niveles>

 

Borra a todos los usuarios de la lista de usuarios remotos cuyo primer nivel sea el que especifiquemos en <niveles>. Si usamos el parámetro [-r] borrará a todos los usuarios que tengan el nivel <niveles> en cualquier lugar. Partiendo de:

 

            10,12,15:tempest

            12,20:Ytreme

 

el comando: /rlevel 12 borrará al usuario Ytreme puesto que su primer nivel es 12

 

            /rlevel –r 12

 

borrará tanto a Ytreme como a tempest puesto que tienen el nivel 12, no importa en que posición.

 

·         /ulist |</>| <nivel>

 

Lista a los usuarios de nivel <nivel>, o bien podemos especificar el parámetro |</>| como “>4” o “<10”. Por ejemplo:

 

            /ulist <10

 

Lista todos los usuarios cuyo nivel sea menos o igual a 10.

 

            /ulist >20

 

Lista todos los usuarios cuyo nivel sea mayor o igual a 20.

 

Restricciones en el acceso a eventos.-

 

Vista ya la forma en la que se asignan niveles a usuarios, ahora veremos como puede hacer que ciertos eventos solo sean accesibles por usuarios específicos (con un nivel específico), para ello simplemente cambiaremos ese “1” que solíamos poner en todos los eventos remotos/ctcps por el nivel mínimo que necesitará el usuario para acceder al evento.

 

on 10:join:#:{ echo –s Ha entrado un usuario de nivel 10 a superior }

 

Este evento hará que cuando un usuario de nivel 10 o superior entre en un canal en el que usted esté, le salga un mensaje en Status avisándole. Pero recuerde que este evento no sólo lo accederán los usuaros de nivel 10, sino tambien los de 20, 30, etc…

 

Pero también podemos hacer que un evento solo sea accesible por los usuarios de un nivel determinado, y no por aquellos usuarios que tengan más nivel, lo haremos mediante el prefijo “+”.

 

on +5:join:#:{ echo –s He entrado un usuario de nivel 5 }

 

De esta forma si entra un usuario con nivel 10 por ejemplo, este evento no se ejecutará puesto que esta restringido a los usuarios de nivel 5.

 

Otra forma de restringir el acceso a eventos es mediante el sufijo “!” al nivel, que hará que el evento no se ejecute si fue accionado por usted mismo, por ejemplo:

 

on 1!:op:#:{ echo $nick le dio op a $opnick }

 

Este evento hará que cuando un usuario le de op a otro nos sea notificado en la ventana activa, a excepción de cuando sea usted el usuario que da op.

 

Y al igual que restringimos el acceso a ciertos eventos también podemos tener eventos de “libre acceso” por todos los usuarios, independientemente del nivel que tengan usando un “*” en lugar del nivel:

 

on *:join:#:{ echo $chan Ha entrado $nick }

 

Ese evento mostrará un mensaje en pantalla cada vez que entre un usuario a un canal, sin tener en cuenta su nivel.

 

También podemos usar el prefijo “@” para indicarle al script que ese evento solo salte cuando tengamos op en ese canal, por ejemplo:

 

on @10:join:#:{ op $nick }

 

Este evento hará que cuando un usuario de nivel 10 entre a un canal en el que estemos, y en el que seamos op, le demos op automáticamente.

 

Resumiendo un poco esta última parte en la siguiente tabla de ejemplo:

 

on 100:part à 100 o superior

on +30:deop à únicamente 30

on 5!:quit à 5 o superior (except ousted)

on *:join à Todos

on @30:nick à 30 o superior (solo si usted es OP en el canal)

 

Visto lo anterior y para finalizar vamos a realizar un ejemplo que mezcle lo visto hasta ahora. Se trata de crear un medidor de lag, algo que es fundamental en cualquier script.

 

Ejemplo.- Creación de un medidor de LAG.-

 

Para medir el lag que se tiene con una cierta persona lo que se hace, como ya sabe, es hacerle a esa persona un ctcp ping, pues bien si ueste quiere hallar el lag con usted mismo, es decir su propio lag con el Server, lo que tendrá que hacer es como ya habrá adivinado, hacerse un ctcp ping a usted mismo, por lo tanto analicemos un poco en que se basará nuestro medidor para que después sea más facil construirlo:

 

Primero necesitaremos un timer, es decir que cada “x” segundos el mIRC nos haga automáticamente un ping para hallar nuestro lag.

 

Después necesitaremos que la respuesta a ese ping se nos muestre en un formato diferente al habitual y que la respuesta habitual se omita, pero habrá que tener en cuenta que cuando hagamos un ping a nosotros mismos, la respuesta que recibiremos será del tipo “Tu lag es de x” “segundos”, para ello usaremos el evento “ctcp 1:ping”. El problema es que si en ese evento ponemos una línea que diga “Tu lag es de x segundos” ese ctcp saltará cada vez que alguien nos haga un ping, sea quien sea, y lo que haremos en este ejemplo es que ese evento solo se ejecute cuando la persona que le haga el ping sea usted mismo, de esa forma conseguiremos que cada vez que usted se haga un ping (automáticamente mediante el timer) se active el evento ctcp del ping que usted habrá diseñado y que cuando sea otra persona la que le haga un ping, ésta reciba el mensaje estándar. Pasemos ya a ver el código para este ejemplo, y posteriormente lo acabaremos de comentar:

 

Copie lo siguiente en “aliases”:

 

/medidor {

/timer 0 30 ctcp $me ping

/auser 55 $me

}

 

Copie lo siguiente en “remotes”:

 

ctcp 55:ping:{

%lag : $ctime - $2

titlebar Lag: %lag

halt

}

On 1:connect:{ medidor }

 

Y ya está, lógicamente este es un medidor de lag bastante primitivo en el sentido de que se le pueden añadir muchas más cosas, pero esta es la base y a partir de ella usted podrá ir elaborando su propio medidor de lag con sus conocimientos.

 

La explicación es bastante simple, cuando usted conecte a un servidor de IRC (salta el evento on 1:connect) se ejecutará el alias “medidor” que iniciará un timer indefinido (de ahí el “0” como primer parámetro) que consistirá en hacerse a usted ($me) un ctcp ping cada 30 segundos.

 

Además cuando usted conecte será añadido a la lista de usuarios con nivel 55. Al cabo de 30 segundos se producirá por primera vez ese ctcp ping que pusimos en el timer, y puesto que el ping lo manda usted que es un usuario de nivel 55, saltará el evento “ctcp 55” que calculará el lag y lo mostrará en la barra de título del mIRC mediante el comando “titlebar”, por último se usa un “halt” para que la respuesta predeterminada del mIRC al ping quede escondida. Y obviamente si cualquier otro usuario le hiciera un ping, como usted será el único con nivel 55, este evento no saltará y por tanto el otro usuario recibirá la respuesta estándar del ping.