Proxy jabber sur HTTP (http-bind et BOSH)

Lorsqu’on est informaticien (un peu geek) notre utilisation d’internet n’est parfois pas compatible avec celle imaginée par une politique d’entreprise.
Par exemple pour nous la messagerie instantanée peut être un très bon outil de veille technologique alors qu’elle sera vu autrement comme un outil de dispersion.

Principe

BOSH est une XEP, c’est à dire une proposition d’extension du protocole XMPP soit Jabber.

Cette XEP permet de monter mode proxy au protocole xmpp, ainsi on peut communiquer à travers le port 80/tcp et ainsi se prémunir de certains inconvénient comme les firewall d’entreprise ou assimilé.

Pré requis

Pour la suite de cet article nous considérons que nous avons :

  • un serveur jabber (par exemple ejabberd ou prosody)
  • un proxy http (par exemple apache2)
  • un client jabber compatible BOSH (par exemple gajim ou psi)

Configuration du serveur Jabber

Il faut activer le mode BOSH aussi nommé http-bind (ancien nommage de la xep)

Ejabberd

Toute la configuration se passe dans /etc/ejabberd/ejabberd.cfg.
Nous devons penser à 2 choses :

  • activer le module http_bind
  • définir le port d’écoute associé au module
{listen,
[
 ...
 {5280, ejabberd_http,    [http_bind]},
 ...
]}.

{modules,
[
 ...,
 {mod_http_bind, []},
 ...
]}.

Prosody

Toute la configuration se passe dans /etc/prosody/prosody.cfg.lua

modules_enabled = {
 ...
 "bosh";
 ...
}
bosh_ports = { 5280 }

On peut trouver plus d’informations sur http://prosody.im/doc/setting_up_bosh

Tester le serveur

Par défaut ejabberd et prosody écoutent http://localhost:5280/http-bind/. Nous pouvons tester le bon fonctionnement depuis un simple navigateur internet.

Configurer le mode proxy

Je ne parlerais ici que d’apache2 mais il est possible de le faire avec squid, nginx et autre serveur ayant des capacités de proxy.

Nous devons d’abord installer les modules apaches idoines :

a2enmod proxy
a2enmod proxy_http

Ensuite nous configurons le mode proxy pour le domaine qui sera joignable par nos clients jabber.

 <VirtualHost *:80>
   ServerName im.mydomain.tld

   #ForceType text/html
   RewriteEngine On
   RewriteRule /
   http://127.0.0.1:5280/http-bind/ [P]
   <Proxy http://127.0.0.1>
     Allow from all
   </Proxy>
 </VirtualHost>

Le serveur devient accessible via http://im.mydomain.tld/

De même, vous pouvez aussi créer un proxy SSL en écoutant sur le port 443, ce qui est fortement conseillé pour avoir les échanges sécurisés entre le serveur et le client de messagerie.

Configurer son client

La configuration des clients de messageries est assez aisé, du moment que ceux ci supportent cette XEP. Gajim depuis la version 0.13, propose un support complet et fonctionnel.

L’activation se fait depuis Éditer > Compte, nous choisissons le compte qui a besoin d’utiliser Bosh. Depuis l’onglet Connexion, on ajoute un proxy pour le quel seul le champ Bosh url sera rempli.

Tester son client

Une fois le proxy activé vous pouvez essayer de vous connecter avec votre client de messagerie. Si votre roster apparait alors tout s’est passé comme une lettre à la poste. Maintenant à nous les joies d’internet même derrière un firewall.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.