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.
Par Lunar:: Dimanche 16 Mai 2004 à 22:21:: Services :: #4 :: rss
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 :: #
Le Samedi 22 Mai 2004 à 12:54, par Lunar :: email :: site :: #
Le Dimanche 23 Mai 2004 à 11:57, par Emmanuel / Galaxy :: #
Ajouter un commentaire