Difference between revisions of "Jabberd-Icq"
m |
(No difference)
|
Latest revision as of 01:29, 25 November 2006
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'>