Pour des raisons de sécurité, j'aimerais faire un TCL qui va permettre au Bot d'autoriser l'accès à certains salons en fonction de la Vhost du pseudo.
PS: Je veux pas passer par les services Anope, car il se peut que le nick "A" a toujours son accès sur le salon X ou il est plus désiré, donc l'accès sera filtré par les vhost.
Voici mon code:
tcl
######################### Secure Join Staff #########################set chekback "#test"set vhost {*NetAdmin.***.org
*TechAdmin.***.org
*BotAdmin.***.org
}
bind join - * pub:joinproc pub:join{ nick host hand chan }{if{$chan == "#test"}{if{[string match [string tolower $vhost]]}{set hostmask "[getchanhost $nick $chan]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $chan $pseudo $raison"
putquick "MODE $chan +bb $hostmask $pseudo"}else{
putserv "PRIVMSG $chekback \00302L'accès de $checknick a été autorisée sur #staff ."}}}
Voici ce que j'ai en party line:
Code :
[01:03] Tcl error [join]: wrong # args: should be "join nick host hand chan text"
[01:03] Tcl error [pub:join]: wrong # args: should be "join nick host hand chan text"
oui justement une fois les vhost entrés, c'est automatique, pas besoin en plus de re-ouvrir le code pour ajouter/modifier ton code si besoin est.
aprés effectivement il faut faire un tcl avec un binds join, regarder si $arg est bien friend, ( ou autre flag que tu auras defini) si "oui", laisser entrer, sinon "non", virer avec le motif adequat.
Et bien entendu envoyer le message sur le salon de retour.
(le but etait juste d'eviter de devoir faire un tableau comprenant les Vhost/hosts autorisés)
@ArKeNiS: Merci pour la réponse, là je n'ai aucune erreur en party-line, mais le bot ne kick pas les pseudos sans vhost, alors que dans le code on a bien précisé les vhost autorisés à joindre le chan.
Il y a quelque chose qui me gène dans le script donné par ArKeNiS:
tcl
foreach host $vhost{if{![string match -nocase $host$uhost]}{set hostmask "[getchanhost $nick $channel]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $pseudo $raison"
putquick "MODE $channel +bb $hostmask $pseudo"}}
Donc dès que $uhost est différent de $host, la personne est bannie ?
Pour ma part, je ferai:
tcl
foreach host $vhost{if{[string match -nocase $host$uhost]}{return1}set hostmask "[getchanhost $nick $channel]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $pseudo $raison"
putquick "MODE $channel +bb $hostmask $pseudo"}
26/09/2011, 12:14 (Modification du message : 26/09/2011, 12:15 par djkenny.)
CrazyCat a écrit :Il y a quelque chose qui me gène dans le script donné par ArKeNiS:
tcl
foreach host $vhost{if{![string match -nocase $host$uhost]}{set hostmask "[getchanhost $nick $channel]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $pseudo $raison"
putquick "MODE $channel +bb $hostmask $pseudo"}}
Donc dès que $uhost est différent de $host, la personne est bannie ?
Pour ma part, je ferai:
tcl
foreach host $vhost{if{[string match -nocase $host$uhost]}{return1}set hostmask "[getchanhost $nick $channel]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $pseudo $raison"
putquick "MODE $channel +bb $hostmask $pseudo"}
par contre
tcl
foreach host $vhost{if{[string match -nocase $host$uhost]}{return1}}set hostmask "[getchanhost $nick $channel]"set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $pseudo $raison"
putquick "MODE $channel +bb $hostmask $pseudo"
sinon il teste seulement le 1er vhost et vire le gars si il ne l'a pas
C'est en reconnaissant ses erreurs que l'on progresse
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
euh, t es sur de toi? car en fait il y a une erreur dans le code que je t ai filé et ça ne peut pas fonctionner (il ne pouvais pas kickban vu que la variable $pseudo n'existe pas).
tcl
######################### Secure Join Staff #########################set chekback "#test"set vhost {*@NetAdmin.*.org
*@TechAdmin.*.org
*@BotAdmin.*.org
}
bind join - "*" pub:joinproc pub:join{ nick uhost handle channel }{global chekback vhost
if[string equal -nocase $channel$chekback]{foreach host $vhost{if[string match -nocase $host$uhost]{return1}}set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
putquick "KICK $channel $nick :$raison"
putquick "MODE $channel +bb *!$uhost $nick*!*@*"}}
celui la fonctionne, je l ai testé!!
C'est en reconnaissant ses erreurs que l'on progresse