Jabberd-Icq

From YobiWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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'>