04/07/2011, 19:30
Salut,
Donc j'ai essayé de faire ce que je pense à mon avis comment je vois la chose.
Je m'explique.
La tu as ta procédure auth que tu as faite djkenny.
Donc si je désire mettre cette procédure au "level" 100 minimum pour permettre de pouvoir s'authentifié.
voici comment je vois ça moi.. :
Ensuite peut-être que je me trompe..
Donc j'ai essayé de faire ce que je pense à mon avis comment je vois la chose.
Je m'explique.
La tu as ta procédure auth que tu as faite djkenny.
Donc si je désire mettre cette procédure au "level" 100 minimum pour permettre de pouvoir s'authentifié.
voici comment je vois ça moi.. :
tcl
bind msg - auth mon:auth
proc mon:auth {nick host hand arg} {
variable authed ;#on déclare la variable qui contiendra les utilisateurs identifié
#on ouvre le fichier et récupère les données qui sont dedans
set a [open users.db]
set users [split [read $a] "\n"]
close $a
#les données sont contenues dans $users
while { [gets $a line] >= 0} {
if {$line == "100: $authed"} {
set salon [lindex $arg 0]
set pseudo [lindex $arg 1]
set pass [lindex $arg 2]
foreach u $users {
set c [lindex $u 0]
#on verifi que le salon correspond au salon contenue dans la ligne du fichier, sinon on saute a la boucle suivante
if ![string equal -nocase $c $salon] continue
#on controle si le pseudo correspond, sinon on saute la boucle suivante
set ps [lindex $u 1]
if ![string equal -nocase $ps $pseudo] continue
#on vérifie si le mot de passe correspond
set pa [lindex $u 2]
if ![string equal $pa $pass] continue
#pour finir on teste le host
set h [lindex $u 4]
if ![string match -nocase $h "$nick!$host"] continue
#arrivé la l utilisateur a remplis toutes les conditions pour s identifier donc on va le retenir
set level [lindex $u 3]
set authed($nick,$salon) $level
putserv "NOTICE $nick :Vous êtes identifié sur le salon $salon"
# et on fini la procédure
return
}
#sinon arrivé la l utilisateur n'as pas d'accès donc on lui dit
putserv "NOTICE $nick :Vous n'avez pas d'accès"
}
}
}
#le op maintenant
set level(op) 200
bind pub - !op mon:op
proc mon:op {nick host hand chan arg}
global level
variable authed
#on vérifie que la personne est auth sur le salon et que le level est suffisant
if {[info exists authed($nick,$chan)] && $authed($nick,$chan)>=$level(op)} {
putserv "MODE $chan +o $nick"
} else {
putserv "NOTICE $nick :Accès refusé"
}
}
Ensuite peut-être que je me trompe..