Warren PAULUS. Windrop Programmation TCL



Documents pareils
titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Configurer la supervision pour une base MS SQL Server Viadéis Services

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Gestion de stock pour un magasin

VTX FTP. Transfert de fichiers business par FTP - Manuel de l'utilisateur. Informations complémentaires : info@vtx.

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Encryptions, compression et partitionnement des données

Guide d installation de SugarCRM Open Source version 4.5.1

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

OCS Inventory & GLPI V.2

TAGREROUT Seyf Allah TMRIM

PHP 5. La base de données MySql. A. Belaïd 1

Pratique et administration des systèmes

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

VAMT 3. Activation de produits Microsoft

Manuel Utilisateur MISE A JOUR DU CLIENT SOFIE VERS LA VERSION 5. v0.99

INSTALLER UNE BIBLIOBOX

UwAmp. Serveur d'evaluation

Installation d'un serveur FTP géré par une base de données MySQL

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

Accès aux ressources informatiques de l ENSEEIHT à distance

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

SSH, le shell sécurisé

Présentation, mise en place, et administration d'ocs Inventory et de GLPI

Les différentes méthodes pour se connecter

OpenPaaS Le réseau social d'entreprise

Olivier Mondet

Etudiant Ella Fitzgerald

Configuration de routeur D-Link Par G225

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Mysql avec EasyPhp. 1 er mars 2006

Procédure d installation Smart Map 3

WDpStats Procédure d installation

Création d un service web avec NetBeans 5.5 et SJAS 9

MS SQL Express 2005 Sauvegarde des données

Serveur de Téléphonie Asterisk implanté sur Trixbox

Service de certificat

Manuel des logiciels de transferts de fichiers File Delivery Services

Tutoriel XBNE Connexion à un environnement XBMC distant

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

LINUX REMPLAÇANT WINDOWS NT

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Direction des Systèmes d'information

Annexe 1. DIDACTICIEL Installation OCS 2.0RC2 /GLPI pour WINDOWS

TUTORIEL RADIUS. I. Qu est-ce que RADIUS? II. Création d un groupe et d utilisateur

CREATION WEB DYNAMIQUE

Mise en place d un serveur trixbox sur un domaine Kwartz. Version 1.0 du 25 juin 2012 Lycée Polyvalent d Artois, Noeux les Mines Adrien Bonnel

Installation d un hébergement Web à domicile

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

Administration de Parc Informatique TP03 : Résolution de noms

Serveur de messagerie sous Debian 5.0

La double authentification dans SharePoint 2007

Le protocole FTP (File Transfert Protocol,

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

SQL Historique

Installation et configuration d OCS/GLPI sur un Serveur Debian

Transport Layer Security (TLS) Guide de mise en œuvre. Version: 1.0

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Dans cette Unité, nous allons examiner

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US


LES ACCES ODBC AVEC LE SYSTEME SAS

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

2X ThinClientServer Guide d utilisation

Utilisez Toucan portable pour vos sauvegardes

TP Contraintes - Triggers

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Imprimantes et partage réseau sous Samba avec authentification Active Directory

INSTALLATION ET LANCEMENT DU CONNECTEUR E-SIDOC

Manuel d utilisateur du site de covoiturage «Etucovoiturage»

Open Source Job Scheduler. Installation(s)

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Anas Abou El Kalam Sécurité SSH SSH

titre : CENTOS_BIND_install&config Système : CentOS 5.7 Technologie : Bind 9.3 Auteur : Charles-Alban BENEZECH

a) Supprimer les bases de données installées dans la version 6.03

Protocole de mise en place et d utilisation de FOG-server

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Bases de SQL. Hacks 1-6 CHAPITRE UN

Notes de cours : bases de données distribuées et repliquées

Procédure d installation Trixbox - A2Billing

Installation et configuration de Vulture Lundi 2 février 2009

KWISATZ MODULE PRESTASHOP

PHP et les Bases de données - Généralités

Transcription:

Windrop Programmation TCL 2010/2011

Voici un tutoriel sur Windrop. Ce tutoriel a été trouvé sur le blog http://appswarren.wordpress.com/. Il est impératif d avoir des notions en SQL pour ce qui concerne la partie MysqlTCL. Il est utile de se documenter sur la programmation en TCL si on veut pousser les choses un peu plus loin. Logiciels nécessaires à ce tutoriel : a) Eggdrop v1.8 CVS : disponible sur le site : http://windrop.sourceforge.net/downloads.html Télécharger Eggdrop, ensuite extraire les fichiers dans un répertoire au choix : nous utiliserons «C:\Windrop». 1) Configuration de Windrop Aller dans le répertoire d installation «C:\Windrop». Ouvrir le fichier «eggdrop.conf» avec un éditeur de texte, le bloc note par exemple. Voici des exemples de modifications : du nom d utilisateur sur IRC : set username "VotreBot" d informations sur l utilisateur : set admin "VotreBot <email: VotreBot@VotreBot.be>" d informations concernant le server : set network "Linknet" du fuseau horaire pour la Belgique : set timezone "CET" et set offset "-1" du fichier contenant les logs du channel : logfile jpk channeltest "logs/channeltest.log" du fichier contenant les utilisateurs : set userfile "VotreBot.user" du fichier contenant les chans : set chanfile "VotreBot.chan" du pseudo : set nick "VotreBot" du pseudo alternatif: set altnick "VotreBotbis" du nom du bot : set realname "Mr VotreBot" du script tcl apres connexion au server : proc evnt:init_server {type {global botnick putquick "MODE $botnick +his-w" du port par défaut et du ssl : set default-port +7000 du server où le bot se connecte : set servers {eu.link-net.org:+7000 du ssl-verify-server: set ssl-verify-server 1 Pour utiliser le DCC CHAT afin de communiquer avec le «Bot», on doit ajouter cette ligne : listen 3333 users. Telnet ne sera ainsi accessible que pour les utilisateurs! Windrop 2 Version 1.0 du document

Ensuite, ajouter un devant : - source scripts/winident2.tcl car on ne l utilise pas ; - die "Please make sure you edit your config file completely."; - die "You didn't edit your config file completely like you were told, did you?". Aller sur le channel du serveur que vous avez introduit, avec le client IRC favoris. Ici le bot s appelle «BotIngInd». Ensuite lancer le fichier «RunOnce.bat». Une fenêtre MS-DOS va apparaitre : Le «BotIngInd» s est bien lancé. On peut vérifier si il est bien connecté au serveur avec un /whois BotIngInd. Maintenant il va falloir lui dire qu on le maître, donc lui envoyer un «hello» avec cette commande : /msg BotIngInd hello Voici ce que nous devrions obtenir : Taper la commande «/msg BotIngInd pass votremotdepass» et voila ce qu on devrait avoir : Maintenant il va falloir lancer un DCC CHAT avec le «Bot». Pour cela, il suffit d aller dans Tools >> Chat : Cette fenêtre qui va apparaître : Windrop 3 Version 1.0 du document

Cliquer sur «OK». On va ainsi lancer un DCC Chat : Ne pas oublier d ouvrir le port 3333 sur l ordinateur où se trouve notre «Windrop» sinon cela ne fonctionnera pas! On peut aussi communiquer avec notre «Bot» en utilisant Putty par exemple. Voici la marche à suivre : Dans Host Name (or IP adresse), il faut mettre l adresse réseau de l ordinateur où se trouve votre Windrop! Une fenêtre MS-DOS va apparaître : Il va falloir lui affecter un channel. Pour cela, on doit utiliser ces commandes : -.+chan votrechannel -.chanset votrechannel chanmode +kstn-m votremotdepasse Les options du chanmode dépendent de notre channel : il peut être mis en «secret», «private» Vous pouvez voir si le bot est bien arrivé sur votre channel : Le «Bot» est bien arrivé sur le channel! Si on rencontre des erreurs pendant le chargement de certains fichier dll ou si MysqlTcl ne fonctionne pas, on doit modifier le fichier «RunOnce.bat» et modifier la ligne «eggdrop m» en «eggdrop n» ; cela permet de déboger notre windrop et de régler les problèmes! 2) MysqlTcl Au préalable, il est nécessaire de créer une base de données afin d utiliser MysqlTcl qui est à télécharger sur le site : http://www.xdobry.de/mysqltcl/windows.html A l heure actuelle, nous utiliserons «mysqltcl-3.03.zip» et MySQL 5.1. Décompresser le fichier dans le répertoire «lib/mysqltcl-3.03» de Windrop. On obtiendra 3 fichiers : - libmysql.dll - libmysqltcl.dll - pkgindex.tcl Windrop 4 Version 1.0 du document

Ouvrir le fichier «pkgindex.tcl» avec un éditeur de texte, mais il va falloir rajouter la ligne suivante au-dessus des lignes qui se trouvent déjà le fichier «pkgindex.tcl» : set dir "lib/mysqltcl-3.03/" Créer un fichier «mysql.tcl» qui va nous permettre d interagir avec la base de données, ce fichier doit être créé dans le répertoire «scripts». Voici un exemple : MysqlTcl avec Mysql 5.1 PAULUS Warren 08/07/2011 version 1.0 PAQUETAGE package require mysqltcl INITIALISATION set dbuser "warren" set dbpassword "isib" set name "db_irc" set ip "localhost" on envoie : afficher en DCC bind dcc - afficher dcc:afficher proc dcc:afficher {hand idx arg { set db_handle [mysqlconnect -host $::ip -user $::dbuser -password $::dbpassword -db $::name] set sql "SELECT * from membre" set result [mysqlsel $db_handle $sql -list] permet d'envoyer un message à un utilisateur, ici il s agit de moi putserv "privmsg moi :Resultat: $result" Windrop 5 Version 1.0 du document

on écrit : afficher sur le channel où se trouve le bot bind pub -!afficher sql:!afficher proc sql:!afficher { nick uhost handle channel arg { set db_handle [mysqlconnect -host $::ip -user $::dbuser -password $::dbpassword -db $::name] set sql "SELECT * from membre" set result [mysqlsel $db_handle $sql -list] on va envoyer le résultat sur le channel où on a écrit!afficher putserv "PRIVMSG $channel : $result" Explications: Ligne de programmation set dbuser "warren" set dbpassword "isib" set name "db_irc" set ip "localhost" set sql "SELECT * from membre" Explication Nous allons créer une variable qui va contenir l utilisateur de la base de données. Idem pour le password, nom de la base de données et l adresse ip. C est à ce niveau qu on va envoyer notre requête sql. On va récupérer toutes les données de la table membre. putserv "PRIVMSG $channel : $result" On peut aussi taper «set sql "DROP TABLE IF EXISTS membre;"» si on s y connaît en langage SQL, on ne devrait pas avoir de problèmes. Cette ligne permet d afficher le résultat sur le channel où l utilisateur a effectué la commande. Si on rajoute $ârg à cette fonction, cela permettra de récupérer l argument après!afficher par exemple!afficher test. On pourra rajouter test dans la base de données par exemple. [lindex $arg 0] et [lindex $arg 1] Par exemple :!adduser votreutilisateur votreutilisateur sera $arg de!adduser! Permet de récupérer le premier argument et le deuxième argument. Par exemple :!add arg1 arg2 [lindex $arg 0] va nous donner arg1. [lindex $arg 1] va nous donner arg2. Cela peut permettra de rajouter dans une table (arg1) une donnée (arg2) Windrop 6 Version 1.0 du document

3) Blowfish Encryption Nous allons créer un fichier «.tcl» afin de décrypter ce que les utilisateurs disent sur le channel. Voici un exemple de fichier «.tcl» à mettre dans le dossier «scripts» : Blowfish Encryption PAULUS Warren 10/07/2011 version 1.0 Permet de decrypter les messages du channel set cryptkey "votrekey" bind pub - - "+OK" pubdecrypt proc pubdecrypt {nick uhost hand chan arg { global cryptkey set plaintext [decrypt $cryptkey [join $arg]] set textsplit [split $plaintext] set cmd [lindex $textsplit 0] set cmdargs [lrange $textsplit 1 end] if {[info procs "pubmsg:$cmd"] == "pubmsg:$cmd" { pubmsg:$cmd $nick $uhost $hand $chan $cmdargs Permet de crypter un message envoyé par le bot sur le channel proc pubmsg:!helpsql {nick uhost hand chan arg { global cryptkey set data "Voici les différentes commandes:" Explications: Ligne de programmation set cryptkey "votrekey" bind pub - - "+OK" pubdecrypt proc pubdecrypt {nick uhost hand chan arg { Explication On crée une variable avec comme valeur notre key blowfish. Si sur le channel on voit un message qui commence par +OK alors on sait qu il faut le décrypter. On va donc se retrouver dans la procédure «pubdecrypt». Déclaration de la procédure «pubdecrypt», on rentre avec les arguments «nick uhost hand chan arg». Windrop 7 Version 1.0 du document

nick = Pseudo de l utilisateur qui a parlé sur le channel. chan = Le channel où l utilisateur a parlé. uhost = Connaitre les informations concernant l utilisateur. global cryptkey set plaintext [decrypt $cryptkey [join $arg]] Par exemple en crypté : user@...-888888b8c8.isp... Cela permet d utiliser la cryptkey qui a été définie en dehors de la procédure. Permet de créer un variable «plaintext» qui va contenir le décryptage de l argument en fonction de la cryptkey. L argument, dans notre cas, c est ce qui vient après le «+OK» car comme on le sait le cryptage est de cette forme : +OK de4f884884/ proc pubmsg:!helpsql {nick uhost handle chan arg { set data "Voici les différentes commandes:" L argument est donc «de4f884884/». C est ce que l on va décrypter! Voici la procédure «pubmsg» qui est utilisée par la procédure «pubdecrypt». Donc dès que le bot voit une phrase «+OK» sur le channel, il décrypte l argument et si celui-ci est «!helpsql» on arrive dans cette procédure avec comme arguments nick, uhost, handle, channel qui ont été récupérés par «pubdecrypt». On va créer une variable «data» qui va contenir la phrase que l on voudra afficher sur le channel. Ensuite nous allons encrypter le contenu de la variable «data» grâce à la cryptkey. Puis nous allons afficher le résultat sur le channel avec le «+OK» devant afin que les utilisateurs sachent décrypter le data! Maintenant il nous suffit d intégrer le «BlowFish Encryption» à notre fichier mysql pour détecter!afficher en crypter. Ce n est pas compliqué. On peut aussi crypter les données ajoutées dans notre base de données pour plus de sécurité. Voir sur le blog pour avoir un aperçu de ce qui a été fait «appswarren.wordpress.com». Windrop 8 Version 1.0 du document

4) Fonction Catch Nous allons utiliser la fonction «catch». Pour ce faire je vais vous passer une partie de mon code que j expliquerai ensuite : proc pubmsg:!add {nick uhost handle channel arg { global cryptkey global db_handle set encrypted [encrypt $cryptkey [lindex $arg 1]] set ajoutsql "'$encrypted'" set dupli "mysqlsel/db server: Duplicate entry '$encrypted' for key 'PRIMARY'" set sql "INSERT INTO [lindex $arg 0] ([lindex $arg 0]) VALUES ($ajoutsql);" if { [ catch {set result [mysqlsel $db_handle $sql -list] fid ] { if { string equal $dupli $fin { set data "Attention [lindex $arg 1] se trouve déjà dans la base de données [lindex $arg 0]" else { set data "Ajout de [lindex $arg 1] dans la base de données [lindex $arg 0]" Explications: Ligne de programmation set ajoutsql "'$encrypted'" set dupli "mysqlsel/db server: Duplicate entry '$encrypted' for key 'PRIMARY'" set sql "SELECT * from membre" if { [ catch {set result [mysqlsel $db_handle $sql -list] fid ] { ) else { set data "Ajout de [lindex $arg 1] dans la base de données [lindex $arg 0]" Explication Nous allons créer une variable «ajoutsql» qui va contenir le mot encrypté sous cette forme mot car c est la ligne de programmation SQL qui a besoin du mot sous cette forme. Nous allons créer une variable «dupli» qui va contenir la phrase qui apparaît quand il y a une erreur de duplication. C est à ce niveau que nous allons envoyer notre requête sql. On peut aussi faire «set sql "DROP TABLE IF EXISTS membre;"» si ons y connaît en langage SQL, on ne devrait pas avoir de problèmes. Voilà la fonction if. Nous allons entourer la fonction à analyser entre un catch[], si jamais le set result{ nous envoie une exception alors on la récupèrera dans la variable «fid». Sinon on crée un variable data comme expliqué auparavant dans la partie «Blowfish». Pour information, lindex $arg 1 c est la donnée, et lindex $arg 0 c est la table. Windrop 9 Version 1.0 du document

if { [string equal $dupli $fin] { set data "Attention [lindex $arg 1] se trouve déjà dans la base de données [lindex $arg 0]" La fonction if permet de voir si les variables dupli et fid ont le même contenu donc de savoir si le message préenregistré correspond au message levé par l exception! Ce qui va permettre d alerter sur le channel qu il y déjà cette donnée dans la base de donnée! On peut maintenant gérer les exceptions comme on le veut. A nous de jouer! FIN DU TUTORIAL Windrop 10 Version 1.0 du document