Ensuite, chaque userhost banni listé est comparé au contenu de
la variable. Cette comparaison utilise l'opérateur iswm, qui vérifie si
une chaîne de caractère contenant des jokers * correspond à une autre chaîne.
Lorsque le banmask correspondant au userhost à débannir est trouvé, on enlève
le ban.
Tout d'abord, allez dans la section alias, et tapez:
uban {
if ( $$1 == $null ) return
.enable #unban1 | set %chan # | unset %lban | who $1
}
On voit déjà qu'il y a deux variables: %chan pour le nom du canal, et %lban
qui contiendra le userhost de la personne.
On voit ensuite qu'on va activer un groupe appelé #unban1. De plus, l'alias
ne fait rien si jamais on n'entre pas de paramètre à /uban. L'instruction effective
que provoque l'appel de cet alias est un /who <nick>.
Dans la section remote, voici ce qu'il faut rentrer:
#unban1 off
raw 352:*: set %lban $6 $+ ! $+ * $+ $3 $+ @ $+ $4 | halt
raw 315:*: .disable #unban1 | .enable #unban2 | mode %chan +b | halt
#unban1 end
#unban2 off
raw 367:*: { if ( $3 iswm %lban ) { mode %chan -b $3 }
halt
}
raw 368:*: .disable #unban2 | halt
#unban2 end
L'ensemble de ces instructions sont suffisantes pour émuler le /uban. Maintenant analysons:
La seule requête au serveur que fait /uban est un /who <nick>.
Si on reprend l'exemple précédent du serveur respublica.mine.nu, un /who rototo va
donner cette réponse (Averell est mon nick):
:respublica.mine.nu 352 Averell #teuf toto localhost respublica.mine.nu rototo H@ :0 C'est mon nom
:respublica.mine.nu 315 Averell rototo :End of /WHO list.
Sous mirc, la réponse est reformattée pour fournir:
#teuf rototo H@ toto@localhost :0 C'est mon nom
rototo End of /WHO list.
Le numéro de code d'un /who est donc 352, tandis que le numéro de code d'un End of /WHO List
est 315.
Le userhost de la personne à débannir s'obtient en construisant une chaîne de
caractères de la forme: <nick>!<user>@<host>, par la concaténation des paramètres
$6, $3 et $4 dans cet ordre.
Il est stocké dans la variable %lban.
A noter que le paramètre $1 est en réalité le troisième paramètre envoyé par
le serveur, les deux premiers étant successivement le nom du serveur et le code du
message. Je rappelle que le paramètre $1 est toujours votre nick.
Le halt écrit après a pour but d'empêcher mirc de renvoyer un écho du
/who dans la fenêtre status.
Lorsque l'événement End of /WHO List a lieu (raw 315) on désactive le groupe
#unban1 et on active le groupe #unban2 qui est chargé d'intercepter
d'autres événements de serveur. De plus, on envoie au serveur la requête /mode #chan +b.
Voyons a quoi ressemble la réponse du serveur à une telle requête:
:respublica.mine.nu 367 Averell #teuf *!*toto@localhost Averell- 959471490
:respublica.mine.nu 368 Averell #teuf :End of channel ban list
Cela signifie qu'il n'y a que rototo qui est banni, mais il peut éventuellement y en avoir
d'autres, cela dépend généralement de l'humeur et de l'agressivité des opérateurs. On voit
de plus que le code d'un userhost banni est 367, et que le code de End of channel ban list
est 368.
L'événement 367 est intercepté par la 1ere ligne de #unban2 dont le but est de
vérifier si un banmask de la liste des bannis (paramètre $3) correspond au
userhost de la personne à débannir (rototo). Si c'est le cas, on fait un
/mode %chan -b $3 ce qui a pour effet de retirer le banmask de rototo.
Enfin le raw 368 a pour effet de désactiver le groupe #unban2. L'instruction est
terminée.
Précédent: Les raws Suivant:
la liste des adresses internes
Début de page Sommaire