Communauté sur les Eggdrops - Community about Eggdrops
Commande !tcl publique sécurisée - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (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)
+--- Thread: Commande !tcl publique sécurisée (/showthread.php?tid=905)

Pages: 1 2


Commande !tcl publique sécurisée - djkenny - 07/03/2011

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]


RE: Commande !tcl publique sécurisée - CrazyCat - 07/03/2011

Merci, ce sera certainement fort utile.


RE: Commande !tcl publique sécurisée - Asylum - 07/03/2011

Super TcL. Merci Dj_KennY c'est toi le meilleur :D


RE: Commande !tcl publique sécurisée - djkenny - 07/03/2011

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


RE: Commande !tcl publique sécurisée - djkenny - 07/03/2011

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)


RE: Commande !tcl publique sécurisée - djkenny - 08/03/2011

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


RE: Commande !tcl publique sécurisée - aliasangelius - 31/03/2011

Salut, hmm dit moi si ont tape !tcl botnick ou !tcl $::botnick ceci doit retourner le pseudo de l'eggdrop non ?


RE: Commande !tcl publique sécurisée - CrazyCat - 31/03/2011

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.


RE: Commande !tcl publique sécurisée - aliasangelius - 31/03/2011

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.


RE: Commande !tcl publique sécurisée - CrazyCat - 31/03/2011

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.


RE: Commande !tcl publique sécurisée - djkenny - 31/03/2011

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



RE: Commande !tcl publique sécurisée - djkenny - 31/03/2011

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.


RE: Commande !tcl publique sécurisée - CrazyCat - 01/04/2011

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


RE: Commande !tcl publique sécurisée - aliasangelius - 01/04/2011

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


RE: Commande !tcl publique sécurisée - CrazyCat - 01/04/2011

Ben si ça ne te convient pas, tu n'utilise pas, et puis c'est tout.