iChat multiprotocoles, transport ICQ/AIM/MSN/YIM/IRC

iChat utilise XMPP … c’est bien mais il y a d’autres protocoles, et plein de gens qui les utilisent !

On va donc modifier le serveur iChat pour les rajouter !

D’autres l’ont déjà fait, rien de très nouveau (article PDF de Marc Phillip et Using Snow Leopard Server to enable MSN in iChat) – les instructions ont simplement été remises à jour.

Commençons par ouvrir un terminal en tant que root, puis:

$ mkdir /usr/local/iChat-transports

$ cd /usr/local/iChat-transports

$ wget http://www.ijg.org/files/jpegsrc.v8a.tar.gz

$ tar zxvf jpegsrc.v8a.tar.gz

$ cd jpeg-8a

$ cp /usr/share/libtool/config/config.sub .

$ cp /usr/share/libtool/config/config.guess .

$ export MACOSX_DEPLOYMENT_TARGET=10.6

On compile volontairement en mode 32 bit, car python 2.5 utilisé par PIL est 32 bit et ne pourra sinon pas charger la librairie 64 bits.

Il est toujours possible de recompiler en 64 bits, puis de joindre les 2 avec lipo :

lipo -arch i386 truc.i386 -arch ppc truc.ppc -arch x86_64 truc.x86_64 -create -output truc.universal

$ CC=”gcc -arch i386″ ./configure –enable-shared –enable-static

$ make && make install

$ wget http://effbot.org/downloads/Imaging-1.1.5.tar.gz

$ tar zxvf Imaging-1.1.5.tar.gz

$ cd Imaging-1.1.5

$ python2.5 setup.py build_ext -i

$ python2.5 selftest.py

$ python2.5 setup.py install

Twisted, autre dépendance, est installée par défaut sur Snow Leopard. PyOpenSSL l’est aussi… mais uniquement pour python 2.6, alors que tous ces outils utilisent 2.5

Rajoutons donc PyOpenSSL :

$ wget http://unc.dl.sourceforge.net/project/pyopenssl/pyopenssl/0.9/pyOpenSSL-0.9.t…

$ tar zxvf OpenSSL-0.9.tar.gz

$ python2.5 setup.py build

$ python2.5 setup.py install

Ne manque que PyCrypto, pour lequel un dmg est disponible Rudix · Packages O, P, Q – autant l’installer pour gagner quelques minutes (merci rudix !)

Pour PyMSNt, le transport, installer le dmg de Mercurial : Rudix · Packages M, N (merci encore, rudix !) puis taper:

Les allergiques aux systèmes de gestion de versions peuvent récupérer une archive sur https://sharesource.org/hg/pymsnt/archive/tip.tar.bz2 – a décompresser avec tar jxvf

$ hg clone http://hg.sharesource.org/pymsnt

$ hg clone http://hg.sharesource.org/pymsnt-twistfix twistfix

$ mv twistfix/twistfix pymsnt/src

$ rm -fr twistfix

Dupliquez alors l’entrée jabber par une entrée msn dans le fichier de configuration des routes :

$ vi /etc/jabberd/router-users.xml

Puis configurons pymsnt

$ chown -R jabber:jabber pymsnt

$ cd pymsnt

$ cp -p config-example.xml config.xml

Rajouter une entrée host pour votre FQDN, commentez l’option background, et mettez le secret de router-users.xml:

$ vi config.xml

Il est temps de déployer !

$ cd ..

$ mv pymsnt /var/jabberd/modules/

Rajoutons une entrée launchd dans /Library/LaunchDaemons/net.sourceforge.xmppy.pymsnt de la forme :

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“>

<plist version=”1.0″>

<dict>

<key>Label</key>

<string>net.cjb.delx.pymsnt</string>

<key>OnDemand</key>

<true/>

<key>ProgramArguments</key>

<array>

<string>/usr/bin/python2.5</string>

<string>./PyMSNt.py</string>

</array>

<key>QueueDirectories</key>

<array>

<string>/var/run/jabberd</string>

</array>

<key>UserName</key>

<string>_jabber</string>

<key>WorkingDirectory</key>

<string>/var/jabberd/modules/pymsnt</string>

<key>StandardOutPath</key>

<string>/var/log/pymsnt.log</string>

<key>StandardErrorPath</key>

<string>/var/log/pymsnt.log</string>

</dict>

</plist>

$ mkdir /var/log/iChat

$ touch /var/log/iChat/pymsnt.log

$ chown -R jabber:jabber /var/log/iChat/

Puis on le lance avec launchd :

$ launchctl load -w /Library/LaunchDaemons/net.sourceforge.xmppy.pymsnt

Il ne reste plus qu’à faire pareil pour AIM, YIM, l’ICQ et l’IRC, mais les autres nécessitent quelques adaptations de code.

Autant donc profiter de mes versions déjà modifiées, disponibles à la page Téléchargements

À chaque fois, on édite router-users.xml, puis on le rajoute aux modules et au launchd

Vous devrez aussi installer si vous voulez utiliser pyirct et pyyimt les modules suivants : xmpppy: the jabber python project et Python IRC library (AKA python-irclib AKA irclib.py).

Avec Snow Leopard, pas de problèmes de connectivité avec les autres serveurs (How do I setup the iChat Server so that my users can talk to users on other servers? – Mac OS X Server FAQ), mais vous devrez quand même ouvrir les ports recommandés par Apple (Using iChat with a firewall or NAT router).

Heureusement, le 5060/UDP n’en fait plus partie, sinon au-revoir le SIP !

NB: en cas de problèmes d’interconnection (federation) vérifiez que vos jid soient résolvables. Aussi, dans les fichiers config.xml si vous voyez une option <host> mettez 0.0.0.0 au lieu de 127.0.0.1 ce qui facilitera les choses en cas de nat, comme expliqué sur Bug#489317: pymsnt: fix for timeout errors when connecting to MSN

Advertisements

About guylhem

guylhem.com
This entry was posted in Uncategorized and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s