Tuto pour XIB (XMPP-IRC Bridge)

 

1/ Préparatifs

 

/!\ Attention : Ce bot est encore en développement, il n'est pas en phase finale, il est donc encore instable, si vous voulez un bot sans erreur, cherchez en un autre /!\

 

Tout d'abord, je vous conseil de vous créer un répertoire de travaille (prenons ici xib-dev/ ).

 

/!\ La plupart du tuto est à réaliser dans une console, il nécessite donc un minimum de connaissance de celle-ci, comme les commandes cp, rm, dir, su, etc..../!\

 

2/ Récupération des dépendances et du logiciel

 

Ils vous faut récupérer les dépendances du logiciel, c'est à dire :

 

Vous pouvez maintenant récupérer le logiciel en question grâce à la commande git clone git://changaco.net/xib.git (git doit être installé au préalable), il se retrouvera directement dans un sous répertoire nommé xib/.

 

3/ Installation des dépendances

 

Nous devrions donc avoir à ce point l'arborescence suivante :

 

xib-dev/

   ├───xib/

   ├───xmppony/

   └───argparse/

 

Maintenant, entrez dans le répertoire xmppony/ , puis tapez ces commandes dans l'ordre :

python setup.py build

python setup.py install /!\ Cette commande nécéssite d'être exécuté en mode super-utilisateur grâce à la commande su /!\

 

xmppony devrait être installé correctement.

 

Retournez dans le répertoire de travail, puis allez dans argparse/,

Même chose que précédemment, tapez ces commandes :  

python setup.py build

python setup.py install /!\ Cette commande nécéssite d'être exécuté en mode super-utilisateur grâce à la commande su /!\

 

argparse devrait être installé correctement,

 

4/ Configuration du logiciel

 

Une fois tout ceci effectué, rendez-vous dans le répertoire xib/ . Il devrait contenir divers fichiers. En particulier le fichier example_config.xml que vous allez copier en config.xml, et que vous allez vous empressez d'ouvrir avec votre éditeur favoris.

 

Il devrait contenir ceci :

 

<?xml version="1.0" ?>

<config>

<bot jid='some_bot@example.net' password='do not forget to escape xml entities like &amp;' nickname='xib-bot-nickname' debug='true'>

<!-- WARNING: do NOT set debug to "true" if you are sending the bot's stderr to a file, it logs every XMPP stanza and IRC event without controlling the size of the resulting file -->

<admin jid='admin1@example.net' />

<admin jid='admin2@example.net' />

<bridge mode='normal' say_level='all'>

<xmpp-room jid='dream-world@chat.example.com'/>

<irc chan='#dream-world' server='irc.example.org'/>

</bridge>

<bridge mode='minimal' say_level='nothing'>

<xmpp-room jid='room@chat.example.com'/>

<irc chan='#chan' server='irc.example.org'/>

</bridge>

</bot>

<!-- WARNING: do NOT start two bots with the same JID or the same nickname -->

<!-- WARNING: two bots connecting to the same XMPP MUC server and/or the same IRC server may conflict, it is better to use multiple bridges -->

<!-- NOTICE: even if you use multiple bridges instead of multiple bots, conflicts may still appear if somebody else is running a bot on the same XMPP MUC server and/or the same IRC server -->

</config>

 

 

Vous pouvez supprimer cette partie si vous ne voulez pas configurer un deuxième pont :

 

<bridge mode='minimal' say_level='nothing'>

<xmpp-room jid='room@chat.example.com'/>

<irc chan='#chan' server='irc.example.org'/>

</bridge>

 

Et cette ligne si vous ne voulez pas configurer un deuxième administrateur :

 

<admin jid='admin2@example.net' />

 

 

Vous pouvez l'éditer en suivant les indications donné ci-dessous :

 

<bot jid='some_bot@example.net' password='do not forget to escape xml entities like &amp;' nickname='xib-bot-nickname' debug='true'>

 

bot jid :  Jabber ID à attribuer au bot, si possible, le faire tourner sur un serveur local, cela l'accélèrera grandement.  Sous la forme de utilisateur@serveur.tld

password : Mot de passe correspondant au JID. N'oubliez pas de rester conforme au XML 1.0 (http://www.w3.org/MarkUp/html3/latin1.html).

nickname : pseudo du bot sur les salons Jabber et IRC. Attention, restez conforme aux pseudo IRC. Utilisez de préférence un pseudo simple et cours, par exemple xib-bot ou xib-chan

debug : affiche beaucoup plus d'information dans la console, utile si un problème apparaît, ou lors des premiers lancement pour vérifier que tout se déroule correctement. true (oui) ou false (non)

 

<admin jid='admin1@example.net' />

 

admin jid : Jabber ID de l'administrateur du bot. Il sert à lui envoyer les messages d'erreur et à contrôler les ponts.

 

<bridge mode='normal' say_level='all'>

 

bridge mode : Mode du pont. Valeurs prisent en charge :

normal : valeur par défaut, tout les utilisateurs sont ajouté de chaque côtés du pont, passe automatiquement en mode limited si la limite par adresse IP du serveur IRC est atteinte;

limited : les utilisateurs d'IRC sont ajouté sur le salon Jabber, mais ceux de Jabber ne sont pas ajouté au salon IRC;  

minimal : le bot n'ajoute aucun utilisateurs;

bypass : équivalent au mode normal, si le pseudo est déjà utilisé sur un salon, ajout automatiquement « _ » pour ajouter quand même l'utilisateur.

 

 

 

say_level : Niveau de parole du bot sur les salons. Valeurs prisent en charge :

 all : valeur par defaut, dis tout;

info : dit les entré/sortie des utilisateurs en mode minimal et limited;

notice : ;

warning : dit les conflits de pseudo et tout ce qui n'est pas fatal pour le pont;

error : erreur du pont;

nothing : ne rien dire.

 

 

<xmpp-room jid='dream-world@chat.example.com'/>

 

xmpp-room jid : Jabber ID du salon Jabber.

 

<irc chan='#chan' server='irc.example.org'/>

 

irc chan : Salon IRC

irc server : Serveur IRC du salon IRC

 

Ne touchez pas au reste !

 

5/ Lancement

 

Executez tout simplement cette commande dans le répertoire xib/, que vous pouvez déplacer où bon vous semble.

python start_bots_from_xml_config.py

 

 

6/Astuces

 

Pour mettre à jour le bot, placez vous dans le répertoire de celui-ci, et exécutez la commande suivante :

git pull

 

Vous pouvez créer plusieurs fichier de configuration, et ainsi lancer plusieurs bot séparément, par exemple, j'ai créer le fichier de configuration config_perso.xml et config_pro.xml, il me suffit d'exécuter ces commandes pour lancer les bots correspondant :

python start_bots_from_xml_config.py config_perso.xml

python start_bots_from_xml_config.py config_pro.xml

 

Vous pouvez aussi créer plusieurs bot dans un seul fichier de configuration, comme dans l'exemple ci-dessous :

<?xml version="1.0" ?>

<config>

<bot jid='bot1@example.net' password='bot1' nickname='bot1' debug='true'>

 

<admin jid='admin1@example.net' />

 

<bridge mode='normal' say_level='all'>

<xmpp-room jid='room1@chat.example.com'/>

<irc chan='#room1' server='irc.example.net'/>

</bridge>

 

</bot>

 

<bot jid='bot2t@example.net' password='bot2' nickname='bot2' debug='true'>


<admin jid='admin2@example.net' />


<bridge mode='normal' say_level='all'>

<xmpp-room jid='room2@chat.example.com'/>

<irc chan='#room2' server='irc.example.net'/>

</bridge>


</bot>

</config>


/!\ Ne créez pas deux bot avec le même JID ou salons sous peine de conflit, utilisez plutôt plusieurs pont dans le même bot /!\


Vous pouvez aussi créer plusieurs pont dans un seul bot :


<?xml version="1.0" ?>
<config>
<bot jid='bot1@example.net' password='bot1' nickname='bot1' debug='true'>

<admin jid='admin1@example.net' />

<bridge mode='normal' say_level='all'>
<xmpp-room jid='room1@chat.example.com'/>
<irc chan='#room1' server='irc.example.net'/>
</bridge>


<bridge mode='normal' say_level='all'>
<xmpp-room jid='room2@chat.example.com'/>
<irc chan='#room2' server='irc.example.net'/>
</bridge>

</bot>
</config>


Pour plus de facilité, vous pouvez créer un script de lancement, exemple ci-dessous (requiers dtach) :


dtach -A ./xib.dtach python ./start_bots_from_xml_config.py




7/Bugs connus


Erreur lors du lancement du bot :


[xib@piernovserv xib]$ ./start_bots_from_xml_config.py
Traceback (most recent call last):
  File "./start_bots_from_xml_config.py", line 56, in <module>
    bot_ = bot(bot_el.getAttribute('jid'), bot_el.getAttribute('password'), bot_el.getAttribute('nickname'), admins_jid=admins_jid, debug=debug)
  File "/var/xib/xib/bot.py", line 40, in __init__
    self.bare_jid = xmpp.protocol.JID(jid=jid)
AttributeError: 'module' object has no attribute 'protocol'
Exception AttributeError: "'bot' object has no attribute 'bridges'" in <bound method bot.__del__ of <bot(Thread-1, initial)>> ignored


(ou erreur semblable)


Ceci viens du fait que la version mercurial de xmppony n'est pas compatible avec ce logiciel, vous devez donc installer la version 0.1, à parti de l'archive .tar.bz2, disponible à cette adresse : http://xmppony.last-exile.org/



Un grand merci à Changaco pour ce magnifique bot, où il a passé beaucoup de temps.

piernov


Gratuit-Domaine