poivron.org - passé/futur

Aller au contenu | Aller au menu | Aller à la recherche

Jabber : passerelle IRC

Pour continuer à jouer avec Jabber, voici que celui du Poivron s'est adjoint une passerelle IRC sécurisé vers le serveur Indymedia.

Jabber est un protocole ouvert. Collectivement a été conçu la JEP-0045, une spécification pour permettre les discussion multi-utilisateurs, autrement nommée « conférence. »

Jabber intègre aussi la notion de transport. Ils constituent des passerelles permettant à un utilisateur Jabber d'aller communiquer avec des utilisateurs d'autres protocoles de discussion.

Jabber est extensible, donc pourquoi ne pas utiliser un transport interfaçant IRC avec le système de conférence de Jabber ?



Justement, juste aujourd'hui vient de sortir la version 0.1 du transport Jajcus' Jabber to IRC Gateway (qui sera abrégé en JJIGW par la suite). Allez, soyons fou, installons là sur le Poivron !

Ces technologies sont très fraîches et ne sont donc pas encore packagé pour Debian, il va donc falloir faire un peu plus de manipulation que pour installer la passerelle vers ICQ.

Le transport est écrit en Python, il nous faut donc les outils de développement pour pouvoir le compiler.

$ sudo apt-get install python2.3-dev

JJIGW a besoin de la bibliothèque PyXMPP qu'il faut compiler et installer avant.

$ wget 'http://www.jabberstudio.org/projects/pyxmpp/releases/download.php?file=pyxmpp-0.4.tar.gz'
$ tar zxvf pyxmpp-0.4.tar.gz
$ cd pyxmpp-0.4

On a besoin des dépendances de PyXMPP.

$ sudo apt-get install libxml2-dev libxml2-python2.3
$ python setup.py build
$ sudo python setup.py install

Retour à JJIGW :

$ cd ..
$ wget 'http://www.jabberstudio.org/projects/jjigw/releases/download.php?file=jjigw-0.1.tar.gz'
$ tar zxvf jjigw-0.1.tar.gz
$ cd jjigw-0.1
$ make

Ceci installera JJIGW dans /usr/local/ :

$ sudo make install
$ sudo mkdir /usr/local/etc # Au cas où le répertoire n'existerait pas
$ sudo cp jjigw.xml.example /usr/local/etc/jjigw.xml
$ sudo chown jabber:adm /usr/local/etc/jjigw.xml
$ sudo chmod 640 /usr/local/etc/jjigw.xml

Allons modifier /usr/local/etc/jjigw.xml. Il faut mettre un secret pour l'authentification auprès du serveur Jabber, et definir les réseaux IRC auquel sera connecté notre transport :

<network jid="freenode.irc.localhost" encoding="iso-8859-1">
  <server>irc.freenode.net</server>
</network>

Modifions ensuite /etc/jabber/jabber.xml afin de l'informer de l'existence du transport, en rajoutant ceci :

<service id="irc">
  <host>freenode.irc.localhost</host>
  <accept>
    <ip>127.0.0.1</ip>
    <port>5347</port>
    <secret>someSecret</secret>
    <timeout>30</timeout>
  </accept>
</service>

Bon... maintenant, on pourrais faire sale, mais nous sommes sur une Debian, et ce n'est pas le manque de paquet qui nous empêchera de lancer proprement le daemon du transport. Le daemon principale de Jabber est lancé par le script /etc/init.d/jabber. Ce dernier s'occupe exactement de lancer tous les scripts qui se trouvent dans /etc/jabber/jabber.d. Nous allons donc ajouter le lancement JJIGW à cet endroit.

$ cd /etc/jabber/jabber.d
$ sudo cp jabber-jit jabber-jjigw

Modifiez /etc/jabber/jabber.d/jabber-jjigw ainsi :

DAEMON=/usr/sbin/jabberd-jit
NAME=jabber-jjigw
DESC=jabber-jjigw
CMDLINE=''
[...]
   . /etc/default/jabber-jjigw

Cette dernière ligne indique que /etc/default/jabber-jjigw sera lu par notre script. Ce dernier contiendra une variable qui permettra d'activer JJIGW à loisir.

$ cd /etc/default
$ sudo cp jabber-jit jabber-jjigw

Pour l'esthétisme, remplacer jit par jjigw dans ce dernier fichier. On peut maintenant tester si tout va bien :

$ sudo /etc/init.d/jabber restart

En utilisant le client Psi, il faut aller dans le menu Psi, puis Join groupchat, et indiquer freenode.irc.localhost dans la case host. Room doit contenir le nom du canal IRC, par exemple #jabber.

Si cela fonctionne, on peut même aller plus loin et installer une connexion sécurisée avec le serveur IRC utilisé par Indymedia. Le transport ne sachant par géré les connexions chiffrés par SSL, nous allons utiliser stunnel afin de protéger notre connexion.

$ sudo apt-get install stunnel

stunnel va créer un tunnel chiffré avec le serveur IRC. On modifie donc le fichier de configuration de JJIGW (/usr/local/etc/jjigw.xml) afin qu'il se connecte à un port local pour notre nouveau réseau :

<network jid="indymedia.localhost" encoding="iso-8859-1">
 <server port="6642">localhost</server>
</network>

Il faut ensuite modifier /etc/jabber/jabber.xml en ajoutant <host>indymedia.irc.localhost</host> sous le précédent.

Il nous reste à modifier le script démarrant JJIGW afin que le tunnel soit créé au préalable. Voici les modifications à faire (en format diff) :

@@ -16,6 +16,10 @@
 DESC=jabber-jjigw
 CMDLINE=''
 PID=/var/run/jabber/$NAME.pid
+STUNNEL=/usr/sbin/stunnel
+STUNNEL_PID=/var/run/stunnel.irc-indymedia.pid
+STUNNEL_CMDLINE="-c -s nobody -g nogroup -d localhost:6642 \
+         -r irc.indymedia.org:994 -P $STUNNEL_PID" 
 ENABLED='0'
 if  -f /etc/default/jabber-jjigw ; then
@@ -32,6 +36,8 @@
   start)
    check_pid
        echo -n "Starting $DESC: "
+       start-stop-daemon --start --quiet --pidfile $STUNNEL_PID \
+               --exec $STUNNEL -- $STUNNEL_CMDLINE
        start-stop-daemon -b -c jabber:adm --start --quiet --pidfile $PID \
                --exec $DAEMON -- $CMDLINE
        echo "$NAME."
@@ -40,6 +46,8 @@
        echo -n "Stopping $DESC: "
        start-stop-daemon -o --stop --quiet --retry 3 \
                 --pidfile $PID --exec $DAEMON
+       start-stop-daemon -o --stop --quiet --retry 3 \
+                --pidfile $STUNNEL_PID  --exec $STUNNEL 
        echo "$NAME."
        ;;
   #reload)

Et voilà, Jabber peut maintenant nous permettre de profiter d'une connexion chiffrée pour venir discuter sur IRC.

Trackbacks

Aucun trackback.

Pour faire un tracback sur ce billet : http://poivron.org/blog/tb.php?id=4

Commentaires

Le Samedi 22 Mai 2004 à 12:19, par Emmanuel / Galaxy :: #

Il ne faudrait pas changer "localhost" par poivron.org ? a moins qu'il faille absolument être inscrit au poivron pour bénéficer des services ?

Le Samedi 22 Mai 2004 à 12:54, par Lunar :: email :: site :: #

Oui, utiliser « localhost » permet d'éviter de servir de passerelle à tout va...

Le Dimanche 23 Mai 2004 à 11:57, par Emmanuel / Galaxy :: #

par contre, les commentaires sont pas très lisible... il faudrait penser à augmenter un peu le contraste...

Ajouter un commentaire

Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.