Communauté Eggdrop
[Tuto] Les fichiers comme DB - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : [Tuto] Les fichiers comme DB (/showthread.php?tid=974)

Pages : 1 2 3 4


RE: [Tuto] Les fichiers comme DB - aliasangelius - 02/07/2011

bah pourquoi tu fait :

tcl
set level(op) 200





RE: [Tuto] Les fichiers comme DB - djkenny - 02/07/2011

c est level de la commande op
tu pourrais y ajouter par exemple:
tcl
set level(op) 200
set level(deop) 200
set level(voice) 100
set level(devoice) 100
set level(ban) 350
...etc...


rien a voir avec les utilisateurs


RE: [Tuto] Les fichiers comme DB - aliasangelius - 02/07/2011

Ha.. un peut comme "ont va prendre de cette façon pour que je comprenne.."

genre set level(op) o le o correspond au flag opérateur global en flag sa serait dans se genre la ?


RE: [Tuto] Les fichiers comme DB - djkenny - 02/07/2011

ouai si on veux


RE: [Tuto] Les fichiers comme DB - aliasangelius - 02/07/2011

si ont veut ? bon je crois que vraiment je pige pas votre truc alors.


RE: [Tuto] Les fichiers comme DB - djkenny - 02/07/2011

ba si c est ça lol
en fait j crois que tu pige pas bien le français non plus ...


RE: [Tuto] Les fichiers comme DB - aliasangelius - 02/07/2011

si tu le dit.. je vais me demerder c'est tout.


RE: [Tuto] Les fichiers comme DB - djkenny - 02/07/2011

ba "si on veux" ça veut pas dire non, juste que c'est une possibilité


RE: [Tuto] Les fichiers comme DB - aliasangelius - 04/07/2011

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.. :

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..


RE: [Tuto] Les fichiers comme DB - djkenny - 04/07/2011

je ne comprends pas ce que ça vient faire dans le code
tcl
while { [gets $a line] >= 0} {
        if {$line == "100: $authed"} {





RE: [Tuto] Les fichiers comme DB - aliasangelius - 04/07/2011

level 100.. il va chercher dans :

tcl
set a [open users.db]



Si la personne à le level 100 dans le fichier.
Donc minimum level 100


RE: [Tuto] Les fichiers comme DB - djkenny - 04/07/2011

une procédure d authentification a forcement le level 0, puisque tu n'est pas encore auth quand tu tapes la commande

sinon explique moi tes 2 lignes la
tcl
while { [gets $a line] >= 0} {
        if {$line == "100: $authed"} {


parce-que je vois nul par que tu utilises la variable $users (qui contient le contenu du fichier)
ensuite tu essais de lire dans un fichier qui est déjà fermé et tu utilise la variable authed comme une var normal alors que c est un array
donc a mon avis y en a un de nous 2 qui n'a absolument rien compris


RE: [Tuto] Les fichiers comme DB - aliasangelius - 04/07/2011

Oui tu as raison tes le meilleur.

tu aurait du gagné du temp et dire ça aller ++.


RE: [Tuto] Les fichiers comme DB - djkenny - 04/07/2011

mais si tu veux vraiment que la personne ai le level 100 minimum pour se auther
tcl
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
    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]
        if {$level<100} continue
        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"
}





RE: [Tuto] Les fichiers comme DB - aliasangelius - 04/07/2011

Non c'est bon laisse tomber.

J'aurait du m'écouter et me demerder seul.