Punjab est un composant serveur qui permet aux clients de se connecter au serveur via HTTP (en utilisant BOSH).
BOSH (Bidirectional-streams Over Synchronous HTTP) désigne une méthode permettant d'encapsuler un flux de données dans une connexion HTTP.
Pourquoi utiliser un serveur Bosh ?
Tout simplement pour utiliser des clients Web comme Jappix ou Muckl qui utilisent le port 80 ou 443. Avec ejabberd, par défaut la connexion entre le client et ce serveur se fait par le port 5222.
On installe les librairies nécessaires :
apt-get install python python-twisted
Téléchargeons les sources de Punjab
wget https://github.com/twonds/punjab/archive/master.zip
On se met dans le dossier /etc :
cd /etc
On dézippe :
unzip master.zip
Le dossier punjab-master est créé.
cd punjab-master
On exécute le script d'installation :
python setup.py install
Démarrons le serveur :
twistd -y punjab.tac
punjab.tac est le ficher de configuration. Par défaut, le serveur écoute sur le port 5280. Si vous souhaitez changer de port, éditez le fichier et changer le port ici :
internet.TCPServer(5280, site).setServiceParent(application)
On teste le serveur, en se connectant sur :
http://127.0.0.1:5280/http-bind/
Si tout est ok, on doit avoir : XEP-0124 - BOSH
Si le serveur ne démarre pas correctement, regardez dans le fichier twistd.log.
Vous aurez besoin de configurer un proxy pour permettre la connexion à ejabberd sur le même domaine. Ici le domaine sera mdl29.net
On active les modules :
a2enmod rewrite a2enmod proxy a2enmod proxy_http
Le vhost bosh.mdl29.net :
<VirtualHost *:80> ServerName bosh.mdl29.net DocumentRoot /var/www/bosh Redirect / https://bosh.mdl29.net/ </VirtualHost> <VirtualHost *:443> ServerName bosh.mdl29.net DocumentRoot /var/www/bosh ProxyPass / http://localhost:5280/http-bind/ ProxyPassReverse / http://localhost:5280/http-bind/ Header set Access-Control-Allow-Origin "*" # SSL SSLEngine on SSLCertificateFile mdl29.net.crt SSLCertificateKeyFile mdl29.net.key SSLCACertificateFile GandiStandardSSLCA.pem SSLVerifyClient None </VirtualHost>
On active le vhost :
aensite bosh.mdl29.net
On relance apache :
/etc/init.d/apache2 restart
Et voilà, notre serveur bosh est opérationnel .