Jabberd-Icq
2 solutions possibles:
- Utiliser JabberdAim qui supporte également le protocole ICQ
- Utiliser JIT qui est un transport dédié ICQ et plus complet
JIT features:- Message sending/receiving
- SMS messages sending/receiving
- URL messages sending/receiving
- Web Pager messages receiving
- Status Changes
- Auto-import of ICQ server based contact lists
- Users vcards and server vcard
- Searching for ICQ users
- Web aware
C'est cette seconde possibilité qui est décrite ci-après:
http://jit.jabberstudio.org/
JIT est composé du transport ICQ proprement dit et d'un serveur jabber WPJabber qui se connectera au serveur principal par TCP.
cd jabberd/jabber-1.4.2a wget http://www.jabberstudio.org/files/jit/jit-1.1.6.tar.gz tar -xzvf jit-1.1.6.tar.gz
Par défaut JIT démarrera une douzaine de threads.
Pour un petit serveur, c'est beaucoup!
Editer jit-1.1.6/jabberd/jabberd.h et réduire MTQ_THREADS de 10 à 2 par exemple:
/* default waiting threads */ #ifndef MTQ_THREADS # define MTQ_THREADS 2 #endif
Le format de fichiers log de WPJabber n'est pas le même que celui de jabberd, nous allons changer cela.
Editer jit-1.1.6/jabberd/wplog.c
- sprintf(buf,"%s_%s.log",wplogp->file,date); + sprintf(buf,"%s",wplogp->file);
Editer jit-1.1.6/jabberd/base/base_file.c
- sprintf(buf,"%s_%s.log",bf->filename,date); + sprintf(buf,"%s",bf->filename);
Nous pouvons enfin compiler le transport et son serveur
cd jit-1.1.6 ./configure make mkdir /var/lib/jabber/icq2 cp jit/jit.so jabberd/jabberd /var/lib/jabber/icq2
Ajouter dans /etc/jabber/jabber.xml, section <browse>:
<service type="icq" jid="icq2.reseaucitoyen.be" name="Passerelle JIT vers ICQ"> <ns>jabber:iq:gateway</ns> <ns>jabber:iq:register</ns> <ns>jabber:iq:search</ns> </service>
Ajouter dans /etc/jabber/jabber.xml, dans la liste des <service>:
<service id="linker-icq_jit"> <host>icq2.reseaucitoyen.be</host> <host>sms.icq.localhost</host> <accept> <ip>127.0.0.1</ip> <port>5226</port> <secret>icqkey</secret> </accept> </service>
Créer /etc/jabber/transport-icq_jit.xml: <jabber>
<log id='elogger'> <host/> <logtype/> <format>%d: [%t] (%h): %s</format> <file>/var/log/jabber/icq_jit-error.log</file> </log> <log id='rlogger'> <host/> <logtype>record</logtype> <format>%d %h %s</format> <file>/var/log/jabber/icq_jit-record.log</file> </log> <service id="icq2.reseaucitoyen.be"> <host>sms.icq.localhost</host> <icqtrans xmlns="jabber:config:icqtrans"> <sms> <host>sms.icq.localhost</host> <show>away</show> <status></status> </sms> <instructions>Entrez votre login ICQ (UIN) et password.</instructions> <search>Chercher d'autres utilisateurs ICQ</search> <vCard> <FN>Passerelle JIT vers ICQ</FN> <DESC>Ce service fournit une passerelle pour communiquer avec le reseau ICQ</DESC> <URL>http://jit.jabberstudio.org</URL> </vCard> <prime>3907</prime> <chat/> <web/> <own_roster/> <user_count_file>/var/log/jabber/session_count.log</user_count_file> <session_check>5</session_check> <reconnects>5</reconnects> <session_timeout>18000</session_timeout> <charset>windows-1252</charset> <server> <host port="5190">205.188.179.233</host> <host port="5190">64.12.200.89</host> </server> </icqtrans> <load> <icqtrans>/var/lib/jabber/icq2/jit.so</icqtrans> </load> </service> <service id="linker-icq_jit"> <uplink/> <connect> <ip>127.0.0.1</ip> <port>5226</port> <secret>icqkey</secret> </connect> </service> </jabber>
Créer /etc/init.d/jabber-icq:
#! /bin/sh # # jabber init script to start jabber daemon # # Created from Bernd Eckenfels <ecki@lina.inka.de> # # Written by Miquel van Smoorenburg <miquels@cistron.nl>. # Modified for Debian GNU/Linux # by Ian Murdock <imurdock@gnu.ai.mit.edu>. # # Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl # # This file was automatically customized by dh-make on Sun, 21 May:31:20 +0200 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/var/lib/jabber/icq2/jabberd NAME=jabber-icq DESC=jabber-icq CONF=/etc/jabber/transport-icq_jit.xml PID=/var/run/jabber/jabber-icq.pid CMDLINE="" test -f $DAEMON -a -f $CONF || exit 0 # set some parameters like JABBER_HOSTNAME if test -x /etc/jabber/jabber.cfg; then . /etc/jabber/jabber.cfg fi if [ x"$JABBER_HOSTNAME" != x"" ]; then CMDLINE="$CMDLINE -h $JABBER_HOSTNAME" fi if [ x"$JABBER_SPOOL" != x"" ]; then CMDLINE="$CMDLINE -s $JABBER_SPOOL" fi if [ x"$CONF" != x"" ]; then CMDLINE="$CMDLINE -c $CONF" fi if [ x"$CMDLINE" != x"" ]; then CMDLINE="-- $CMDLINE" fi set -e case "$1" in start) echo -n "Starting $DESC: " cd /usr/lib/jabber/ start-stop-daemon -b -c daemon --start --quiet --pidfile $PID --startas $DAEMON $CMDLINE || echo -n "<Failed> " echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile $PID || echo -n "<Failed> " echo "$NAME." ;; reload) echo "Reloading $DESC configuration files." start-stop-daemon --stop --signal 1 --quiet \ --pidfile $PID --exec $DAEMON ;; restart|force-reload) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart". # echo -n "Restarting $DESC: " $0 stop sleep 1 $0 start ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
update-rc.d jabber-icq defaults 21 19
Ajouter également à /etc/init.d/jabber:
case "$1" in start) echo -n "Starting $DESC: " cd /usr/lib/jabber/ start-stop-daemon -b -c daemon --start --quiet --exec $DAEMON $CMDLINE || echo -n "<Failed> echo "$NAME." + echo "Don't forget to start also jabber-icq" ;; stop) + /etc/init.d/jabber-icq stop echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --exec $DAEMON || echo -n "<Failed> " echo "$NAME." ;;
Cela est fait tel que:
/etc/init.d/jabber start -> lance le jabberd principal /etc/init.d/jabber-icq start -> lance le service ICQ (JIT) /etc/init.d/jabber-icq stop -> arrete le service ICQ (JIT) /etc/init.d/jabber stop -> arrete le jabberd principal ET le service ICQ
Migration
Migration du transport [Jabberd-Aim] vers JID
Comment transférer automatiquement les données d'un utilisateur de l'ancien transport AIM/ICQ qui souhaite migrer vers JIT?
Il faut importer des éléments de
- /var/lib/jabber/icq.reseaucitoyen.be/phil%jabber.reseaucitoyen.be.xml
vers
- /var/lib/jabber/icq2.reseaucitoyen.be/phil%jabber.reseaucitoyen.be.xml
L'ancien fichier XML est de la forme:
<xdb> <aimtrans xdbns='aimtrans:data'> <logon id='2686595' pass='xxxxx'/> </aimtrans> <aimtrans xdbns='aimtrans:roster'> <buddies> <item name='2665887'/> ... </buddies> </aimtrans> </xdb>
tandis que le nouveau est de la forme:
<xdb> <query xmlns='jabber:iq:register' xdbns='jabber:iq:register'> <username>2686595</username> <password>xxxxx</password> </query> <query xmlns='jabber:iq:roster' xdbns='jabber:iq:roster'> <item jid='2665887'/> ... </query> </xdb>
Si on crée le fichier il faut veiller à conserver le mode 600 et l'owner daemon:daemon
Remarque: pour éditer plus facilement les fichiers XML on peut les parser avec gawk '{gsub(/</,"\n<");print}'
Ensuite il faut migrer les entrées correspondantes dans /var/lib/jabber/jabber.reseaucitoyen.be/phil.xml
<item jid='2665887@icq.reseaucitoyen.be' name='dorian' subscription='both'> -> <item jid='2665887@icq2.reseaucitoyen.be' name='dorian' subscription='both'>