Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Commande !tcl publique sécurisée
#1
salut,

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



Il est possible de configurer des aliases afin de pouvoir utiliser les commandes eggdrop (putserv isop .....)
[attachment=171]

vous aurez aussi besoin du package timing que j'ai créé
[attachment=172]
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#2
Merci, ce sera certainement fort utile.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
#3
Super TcL. Merci Dj_KennY c'est toi le meilleur :D
Si les Cons volaient, certains seraient Chef d'Escadrille !
#4
salut,

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
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#5
ajout des commandes:

!hide <cmd> ?cmd1 ...?
supprime l accès à une (plusieurs) commande

!expose <cmd> ?cmd1 ...?
ajoute l accès à une (plusieurs) commande

biensur pour exécuter ces 2 commandes il faut être admin (+n)
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#6
bon voila la version final
j'y ai ajouté une limite de temps d'exécution (en secondes) dans l'interp histoire de ne pas bloquer sur une boucle infinie
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#7
Salut, hmm dit moi si ont tape !tcl botnick ou !tcl $::botnick ceci doit retourner le pseudo de l'eggdrop non ?
#8
Est-ce que .tcl $::botnick affiche le pseudo ? Non, ça te dira "Tcl error: invalid command name "Machin""

Je pense que !tcl putserv "PRIVMSG #chan :$::botnick" fonctionnera mieux.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
#9
oui sauf que la ça dit "Tcl error: invalid command name "$::botnick""

alors que si j'utilise mon ex système de .tcl sa me dira pareil sauf avec l'exemple que tu as donner.
#10
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.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
#11
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
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#12
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 [list uplevel #0 $ag] error
    foreach 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:
Quote: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.
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#13
djkenny Wrote: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 :)
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
#14
Ok bah après c'est une question de goût aussi..

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 :)
#15
Ben si ça ne te convient pas, tu n'utilise pas, et puis c'est tout.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP


Forum Jump:


Users browsing this thread: 1 Guest(s)