Communauté Eggdrop
Join chan - 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 : Join chan (/showthread.php?tid=1043)

Pages : 1 2


Join chan - Aristide - 26/09/2011

Bonjour,

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:join
proc 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"



RE: Join chan - cestlemien - 26/09/2011

coucou,

Pourquoi ne pas passer par la party-line du bot, au lieu de recoder ( donc alourdir ton bot ? )
exemple :
Citation :
.+user autorise
.chattr autorise +f #test
.+host autorise *NetAdmin.***.org
.+host autorise *TechAdmin.***.org
.+host autorise *BotAdmin.***.org
(ect .... )

j'ai juste mis le flag F pour exemple, tu peux trés bien creer un flag, ou en mettre plusieurs / d'autres)

Cordialement.


RE: Join chan - Aristide - 26/09/2011

Je veux que çà soit automatisé via le bot, sans passer par la party line. Merci pour la réponse cestlemien


RE: Join chan - cestlemien - 26/09/2011

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)

Cordialement.


RE: Join chan - Aristide - 26/09/2011

C'est ce que je veux faire avec ce code mais çà marche pas.

Donc si tu peux me préciser ce que je dois modifier dans le code.

Merci d'avance.


RE: Join chan - ArKeNiS - 26/09/2011

Salut,

Essaye ce code :

tcl
#######################
## Secure Join Staff ##
#######################
 
set chekback "#test"
 
set vhost {
	*@NetAdmin.*.org
	*@TechAdmin.*.org
	*@BotAdmin.*.org
}
 
bind join - "*" pub:join
proc pub:join { nick uhost handle channel } {
 global chekback
  if {$channel == $chekback} {
    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"
	  }
	}
  }
}





RE: Join chan - djkenny - 26/09/2011

remplacer ca:
tcl
if {$channel == $chekback} {


par ca:
tcl
if [string equal -nocase $channel $chekback] {





RE: Join chan - Aristide - 26/09/2011

Bonjour,

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

@djkenny: Merci pour la réponse Smile .

Merci d'avance pour l'aide.


RE: Join chan - CrazyCat - 26/09/2011

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]} {
      return 1
   }
   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"
}





RE: Join chan - djkenny - 26/09/2011

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]} {
      return 1
   }
   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]} {
         return 1
      }
   }
   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


RE: Join chan - Aristide - 26/09/2011

C'est toujours le même soucis, le bot ne réagi pas quand un pseudo join le chan, sans vhost pas de kick poser sur Nick.

NB: Je n'ai aucune erreur en party-line


RE: Join chan - djkenny - 26/09/2011

essais ca:
tcl
#######################
## Secure Join Staff ##
#######################
 
set chekback "#test"
 
set vhost {
   *@NetAdmin.*.org
   *@TechAdmin.*.org
   *@BotAdmin.*.org
}
 
bind join - "*" pub:join
proc pub:join { nick uhost handle channel } {
   global chekback vhost
   if [string equal -nocase $channel $chekback] {
      foreach host $vhost {
         if [string match -nocase $host $uhost] {
            return 1
         }
      }
      set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
      putquick "KICK $channel $pseudo :$raison"
      putquick "MODE $channel +bb *!$uhost $pseudo*!*@*"
   }
}





RE: Join chan - DnS - 26/09/2011

a tu essayer comme ceci ?

tcl
#######################
## Secure Join Staff ##
#######################
 
set chekback "#test"
 
set vhost {
    NetAdmin.*****.org
    TechAdmin.*****.org
     BotAdmin.*****.org
}
 
bind join - "*" pub:join
proc pub:join { nick uhost handle channel } {
   global chekback vhost
   if [string equal -nocase $channel $chekback] {
      foreach host $vhost {
         if [string match -nocase $host $uhost] {
            return 1
         }
      }
      set raison " \00304$nick - \00302Vous n'êtes pas autorisé à être sur ce salon."
      putquick "KICK $channel $pseudo :$raison"
      putquick "MODE $channel +bb *!$uhost $pseudo*!*@*"
   }
}


peut etre ton poste TCL-Auto-sajoin-fonctionne-partiellement peut t'aider ?


Cordialement DnS


RE: Join chan - Aristide - 26/09/2011

@djkenny: Merci pour la réponse, mais avec ce code que tu as mis, çà kick tous les pseudos même avec les vhost autorisées dans la variable "vhost".


RE: Join chan - djkenny - 27/09/2011

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:join
proc pub:join { nick uhost handle channel } {
   global chekback vhost
   if [string equal -nocase $channel $chekback] {
      foreach host $vhost {
         if [string match -nocase $host $uhost] {
            return 1
         }
      }
      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é!!