soucis sur un bind join.
#1
Bonjour,

Voila je travail actuellement sur un tcl d'autorisation.
C'est à dire, si tel pseudo et dans le fichier db, il ne sera pas exclu.
Au contraire s'il n’est pas dans le fichier db, il sera exclu du salon.

Mon soucis et lorsque je suis dans le fichier db, il reconnaît bien et applique bien les modes qu'il faut.

Et lorsque je ne suis pas dedans, il dit juste la phrase ou je ne suis pas autorisé, et n'applique aucun mode +b ainsi que le kick.

Je ne vois pas trop comment faire.. Si quelqu'un aurait une idée, ou me signalé à quel endroit et mon erreur.
S’il vous plaît merci.

tcl
bind join - "$::autorise::salonop *" [namespace current]::autor
    proc autor { nick host hand chan} {
        set k [lindex [split $nick |] 0]
        if {$nick == $::botnick} { return 0 }
        if {[progfile autorise cf $k]=="0"} {
            set vnick $nick
            set hostmask "[split [getchanhost $nick $chan] @]"
            set hostmask "!*@*[lindex $hostmask 1]"
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putserv "mode $::autorise::salonop +b $hostmask"
            putserv "mode $::autorise::salonop +b $k!*@*"
            putserv "mode $::autorise::salonop +b $k|*!*@*"
            puthelp "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            return 1
        } else {
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putserv "mode $::autorise::salonop +ov $nick $nick"
            return 0
        }
    }
}


Répondre Avertir
#2
Que donne un "set errorInfo" ?
Qu'obtiens-tu en party-line si tu utilises des putlog plutôt que des putserv ?

Et trois remarques:
- putserv "mode $::autorise::salonop +b $hostmask" <-- c'est pour bannir !*@*host.a.bannir ? J'ai un petit doute sur $hostmask
- newchanban pour poser un ban, c'est mieux
- pushmode pour traiter les modes, c'est mieux.
Répondre
#3
un set errorInfo donne rien vus qui na pas d'erreur en Pl.
Ensuite le $hostmask donne ceci sur tout les bans : [08:55:03] [Mode] Talk-Me met +bbb *!*@*1619623353.fr alias_angelius!*@* alias_angelius|*!*@*

Après concernant les putlog j'ai fait ça et j'ai ceci comme retour :

Citation :[10:38:34] [Join] alias_angelius [Admin@761501953.fr] a rejoint #back-talk-me
[10:38:40] (@Talk-Me) Autorisation refusé pour alias_angelius

Et aucun ban.. rien.

pour ce qui concerne la PL voici ce que sa donne :

Citation :[10:38:33] <Talk-Me> [10:38:48] ok1
[10:38:34] <Talk-Me> [10:38:48] ok2
[10:38:34] <Talk-Me> [10:38:48] ok3
[10:38:34] <Talk-Me> [10:38:48] ok4
[10:38:34] <Talk-Me> [10:38:48] ok5

Et j'ai fait comme ceci dans le code :

tcl
bind join - "$::autorise::salonop *" [namespace current]::autor
    proc autor { nick host hand chan} {
        set k [lindex [split $nick |] 0]
        if {$nick == $::botnick} { return 0 }
        if {[progfile autorise cf $k]=="0"} {
            set vnick $nick
            set hostmask "[split [getchanhost $nick $chan] @]"
            set hostmask "!*@*[lindex $hostmask 1]"
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putlog "ok1"
            putserv "mode $::autorise::salonop +b $hostmask"
            putlog "ok2"
            putserv "mode $::autorise::salonop +b $k!*@*"
            putlog "ok3"
            putserv "mode $::autorise::salonop +b $k|*!*@*"
            putlog "ok4"
            puthelp "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            putlog "ok5"
            return 1
        } else {
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putlog "ok1bis"
            putserv "mode $::autorise::salonop +ov $nick $nick"
            putlog "ok2bis"
            return 0
        }
    }
}


Répondre Avertir
#4
Non, on ne fait pas un débug avec des putlog comme ça, mais plutôt:
tcl
bind join - "$::autorise::salonop *" [namespace current]::autor
    proc autor { nick host hand chan} {
        set k [lindex [split $nick |] 0]
        if {$nick == $::botnick} { return 0 }
        if {[progfile autorise cf $k]=="0"} {
            set vnick $nick
            set hostmask "[split [getchanhost $nick $chan] @]"
            set hostmask "!*@*[lindex $hostmask 1]"
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putlog "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putserv "mode $::autorise::salonop +b $hostmask"
            putlog "mode $::autorise::salonop +b $hostmask"
            putserv "mode $::autorise::salonop +b $k!*@*"
            putlog "mode $::autorise::salonop +b $k!*@*"
            putserv "mode $::autorise::salonop +b $k|*!*@*"
            putlog "mode $::autorise::salonop +b $k|*!*@*"
            puthelp "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            putlog "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            return 1
        } else {
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putlog "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putserv "mode $::autorise::salonop +ov $nick $nick"
            putlog "mode $::autorise::salonop +ov $nick $nick"
            return 0
        }
    }
}


Et comme ça, tu peux tester en vérifiant "à la main" ce que l'eggdrop envoie.
Répondre
#5
Donc, j'ai tester comme tu as stipuler CrazyCat.

Voici ce que j'obtient en PL :

Citation :[10:52:14] <Talk-Me> [10:52:29] privmsg #back-talk-me :Autorisation refusé pour alias_angelius
[10:52:15] <Talk-Me> [10:52:29] mode #back-talk-me +b !*@*761501953.fr
[10:52:15] <Talk-Me> [10:52:29] mode #back-talk-me +b alias_angelius!*@*
[10:52:15] <Talk-Me> [10:52:29] mode #back-talk-me +b alias_angelius|*!*@*
[10:52:15] <Talk-Me> [10:52:29] kick #back-talk-me alias_angelius :Vous n'êtes pas autorisés à entrée dans le salon.
[10:52:20] [Highlight] Sur #back-talk-me (@Talk-Me) Autorisation refusé pour alias_angelius

Et toujours aucun ban/kick d'effectué.
Répondre Avertir
#6
Après test (en servant de victime), ça fonctionne.
Donc le souci est autre.
Répondre
#7
tu a essayé comme ça ? le souci viendrais peut etre de ta proc "progfile" ?


tcl
bind join - "$::autorise::salonop *" [namespace current]::autor
proc autor { nick host hand chan} {
    if [isbotnick $nick] return   
        set k [lindex [split $nick |] 0]
        if {[progfile autorise cf $k]=="0"} {
            set vnick $nick
            set hostmask "[split [getchanhost $nick $chan] @]"
            set hostmask "!*@*[lindex $hostmask 1]"
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putlog "privmsg $::autorise::salonop :[msgcat::mc m10] $nick"
            putserv "mode $::autorise::salonop +b $hostmask"
            putlog "mode $::autorise::salonop +b $hostmask"
            putserv "mode $::autorise::salonop +b $k!*@*"
            putlog "mode $::autorise::salonop +b $k!*@*"
            putserv "mode $::autorise::salonop +b $k|*!*@*"
            putlog "mode $::autorise::salonop +b $k|*!*@*"
            puthelp "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            putlog "kick $::autorise::salonop $vnick :[msgcat::mc m0]"
            return 1
        } 
       if {[progfile autorise cf $k]=="1"} {
            puthelp "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putlog "privmsg $::autorise::salonop :[msgcat::mc m1] $nick"
            putserv "mode $::autorise::salonop +ov $nick $nick"
            putlog "mode $::autorise::salonop +ov $nick $nick"
            return 0
           }
        }



j'ai pas tester,à testé ...

Cordialement
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.
Répondre Avertir
#8
c'est progfile le soucis,

j'en et parler brievement avec CrazyCat.

Et donc je vais devoir faire autrement.
Ps : pas tester ton code comme ya d'autres soucis avec progfile..
Répondre Avertir
#9
Ok

regarde sinon mon poste "pseudo dans un db" sa peut t'aider peut etre.

bon certe il date mais vois du coté de la "proc acceesalon" qui je pense peut etre facilement optimisable
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.
Répondre Avertir
#10
Hmm..

un système de procédure appelé pour rajouté un pseudo dans un fichier db.
Oui sa peut bien m'aider ton système de procédure.

Mais sa serait bien de le modifié à genre :

proc accesssalon qui conporte dedans 3 choses ou plus.
1 : ajout d'un pseudo.
2 : del d'un pseudo.
3 : voir la liste des pseudos.

Par exemple. je vais essayé de voir si je peux réussir un truc du genre.
Merci beaucoup.
Répondre Avertir
#11
tout ça j'ai de ce tcl sauf que j'ai mit juste la partit du code ou j'avais un souci a l'epoque. mais libre a toi de crée cela si cette proc te convient a réaliser ton projet
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.
Répondre Avertir
#12
Salut,

je vais encore me répéter mais bon,
Pourquoi aller trifouiller dans le fichier à chaque fois?
bref, voila le tcl que j ai codé il y a quelques temps maintenant et que tu cherches a reproduire:
tcl
namespace eval autorise {
 variable salons "#test"
 variable data
 variable file [file join scripts autorised.db]
 
  if ![file exists $file] {
    catch {open $file w+} p
    catch {close $p}
  }
  set data ""
  catch {open $file r} p
  while {![eof $p]} {
    if {[gets $p d]!=""} {lappend data $d}
  }
  catch {close $p}
  unset p
 
  bind evnt - save autorise::save_file
 
  proc save_file {type} {
   variable data
   variable file
    if {$data==""} return
    catch {open $file w+} p
    foreach d $data {
      if {$d!=""} {puts $p [join $d]}
    }
    catch {close $p}
    putlog "Sauvegarde du fichier autorised.db"
  }
 
  proc stgcomp {arg1 arg2} {string equal -nocase $arg1 $arg2}
 
  proc hostcomp {host1 host2} {
    string match -nocase [string map {"\[" "." "\]" ","} [join $host1]] [string map {"\[" "." "\]" ","} [join $host2]]
  }

  #################################
 
  bind pub - .+autorise autorise::add
  bind pub - .-autorise autorise::del
  bind join - * autorise::join_chan 
 
  proc add {nick host hand chan arg} {
   variable data
   variable salons
    if {[lsearch -nocase $salons $chan]==-1} return
    if {[llength $arg]!=1} {puthelp "NOTICE $nick :syntaxe: .+autorise <pseudo>";return}
    foreach d $data {
      if {[stgcomp [lindex $d 0] $chan] && [stgcomp [lindex $d 1] $arg]} {
        putserv "NOTICE $nick :ce pseudo est déjà autorisé sur $chan."
        return
      }
    }
    lappend data [string tolower "$chan $arg"]
    putserv "NOTICE $nick :$arg est a été ajouté sur $chan."
  }
 
  proc del {nick host hand chan arg} {
   variable data
   variable salons
    if {[lsearch -nocase $salons $chan]==-1} return
    if {[llength $arg]!=1} {puthelp "NOTICE $nick :syntaxe: .-autorise <pseudo>";return}
    set x 0
    set y 0
    foreach d $data {
      if {[stgcomp [lindex $d 0] $chan] && [stgcomp [lindex $d 1] $arg]} {
        set data [lreplace $data $x $x]
        incr y
      }
      incr x
    }
    if $y {
      putserv "NOTICE $nick :$arg est a été supprimé sur $chan."
    } else {
      putserv "NOTICE $nick :$arg n'est pas autorisé sur $chan."
    }
  }
 
  proc join_chan {nick host hand chan} {
   variable data
   variable salons
    if [isbotnick $nick] return
    if {[lsearch -nocase $salons $chan]==-1} return
    if [string match *|* $nick] {set n [lindex [split $nick |] 0]} else {set n $nick}
    set k 1
    foreach d $data {
      if ![stgcomp [lindex $d 0] $chan] continue
      if [hostcomp [lindex $d 1] $n] {set k 0;break}
    }
    if $k {
      putquick "PRIVMSG $chan :Authentification \00304°\00314Refusée\00304°\00314 pour \002$nick"
      putquick "MODE $chan +b *!$host"
      putquick "KICK $chan $nick :Accès refusé."
    } else {
      putquick "PRIVMSG $chan :Authentification \00303°\00314Acceptée\00303°\00314 pour \002$nick"
      puthelp "MODE $chan +v $nick"
    }
  }
}


C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#13
... ouais j'avait oublier que entraide = tu fou rien et voilà le tout.

secondement je cherche à rien reproduire je veux faire ça car quelqu'un me l'avait demander.
Ensuite chaque chose dans ton code comme par exemple : stgcomp je comprend pas.

Et moi je veux pas un truc préfait c'est pas mon but que j'ai fait le post.
C'est une aide à comprendre et non je te file mon tcl voilà même si tu comprend pas on s'en fou tu en à un de fait..
Mes félicitations.
Répondre Avertir
#14
mais de rien, je mettais ça en exemple, j pensais que t'étais capable de lire et comprendre un code (surtout qu'il n'a rien de compliqué et après tout le msgcat est tiré d'un de mes tcl), mais apparemment je me suis trompé.
bref, prochain coup tu iras te gratter Smile
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#15
Non le msgcat et l'exemple d'un des codes de CrazyCat.
Et ont en avait parlé sur irc.
Ensuite je ne dis pas que c'est compliqué ton code juste certaines variables je ne les connais pas.
Et le système que je veux faire j'aimerais faire une seul proc qui appel tout, dont l'ajout,del,liste.

Après ton code je le connais puisqu'il était sur le site de Che un moment donnais..
Et ensuite je peux me gratter comme tu le sous entend mais la différence c'est que moi je cherche à concevoir quelque chose et non quelqu’un qui me fasse tout.. Je penser que tu n’aimer pas faire tout ya une époque non ?
Bref nous ne sommes pas ici pour se prendre la tête etc.. Mais je pense que ma façon de dire j'aimerais le réussir des aides je ne dis pas,mais un code complet ce n’est pas vraiment ma demande Dj_KennY.
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté