ce script a pour but de fournir un accès publique pour tous (et biensur sécurisée) à la commande !tcl.
Il crée un interpréteur sécurisé (commande "interp create -safe") ce qui isole complétement les commandes exécutées par le script de celle de votre eggdrop.
liste des commandes présente par défaut dans un interp safe
j ai oublié de préciser que certaine commandes eggdrop tel que putserv, putquick, puthelp... (bref les commandes qui permettent d envoyer des messages au serveur) pourrais poser problème
par exemple si quelqu'un tape
Code :
!tcl putserv "QUIT :"
certaine commandes de boucle peuvent aussi poser problème lors de création de boucles infini
j ai corrigé le problème en ajoutant une variable permettant de désactiver certaine commandes
je penses créer une commande pour activer/désactiver les commandes sans avoir besoin de rehash
Bien sûr, la commande !tcl n'est en fait qu'un alias (protégé) vers le .tcl, pour éviter d'aller en party-line pour tester une commande tcl ou un code.
Sauf qu'avec les protections, il y a certaines choses que tu ne pourras pas faire.
Ce script est fort utile lorsque tu veux montrer en direct quelque chose, sans avoir à copier/coller ce que tu fais en party-line.
salut,
en réalité ce script est assez différent de la commande .tcl de la pl
il crée un un interpréteur sécurisé, bien distinct de l interpréteur de l'eggdrop.
Ce nouvel interpréteur (appelé (slave) esclave) ne partage ni les variables ni les procédures (sauf exception ajoutée dans la conf) de l’interpréteur eggdrop
de base il n'a que les commande (considéré sécurisée) de TCL
(cf la liste de commande placé au début du poste)
au niveau variable il ne contient que les variables d environnement et global classique de tcl
Code :
% info global
tcl_rcFileName tcl_version argv0 argv tcl_interactive auto_path errorCode auto_index env tcl_pkgPath tcl_patchLevel argc tcl_library tcl_platform
le code qui permet de copier la commande .tcl de la pl est
tcl
bind pub n !tcl tcleval
proc tcleval {nick host hand chan arg}{catch[listuplevel #0$ag]errorforeach line [split$error"\n"]{if{$line!=""}{
putserv "PRIVMSG $chan :\002TCL ->\002 $line"}}
putserv "PRIVMSG $chan :\002Done.\002"}
comme tu peux voir il est très différent
@CrasyCat:
Citation :Ce script est fort utile lorsque tu veux montrer en direct quelque chose, sans avoir à copier/coller ce que tu fais en party-line.
en réalité (meme si tu n'as pas tout a fait tord) c'était plutôt dans l esprit de procurer une commande publique accessible à tous les users (ou une partie selon le % de boulets présent :p ) permettant donc de tester publiquement son code (par exemple sur un chan réserve au tcl ou à eggdrop) sans avoir besoin de ramener le bot ou de faire des c/c a rallonge.
djkenny a écrit :en réalité (meme si tu n'as pas tout a fait tord) c'était plutôt dans l esprit de procurer une commande publique accessible à tous les users (ou une partie selon le % de boulets présent :p ) permettant donc de tester publiquement son code (par exemple sur un chan réserve au tcl ou à eggdrop) sans avoir besoin de ramener le bot ou de faire des c/c a rallonge.
Oui oui, j'avais très simplifié l'explication, mais j'avais bien compris le but du tcl
Moi personellement je préfére le !tcl de base que celui sécurisé.
car si je veux savoir à quoi correspond $::botnick sur un salon sans aller en PL bah je préfére.
Ensuite les boulets ne peuvent pas l'utilisé sauf s'il sont le flag adéquat donc +n sa reste dans le contexte plus ou moins sécurisé.
Sinon oui c'est sympa mais pour moi et l'utilité que j'utilise certaine chose pour mon projet actuel cette source ne peux pas me convenir