Prosody : un serveur XMPP à découvrir...
Sinon il y a ejabberd, plus complet encore que prosody, mais plus difficile à configurer et à manipuler.
La partie qui suit est donc un récapitulatif de test en machine virtuelle, pour configurer et appréhender rapidement l'outil.
Ports réseaux à ouvrir :
TCP 5222 pour les communications clients/serveur
TCP 5269 pour les communications serveur/serveur
On créé un hôte virtuel sur l'IP du réseau dans /etc/hosts :
Code : Tout sélectionner
192.168.0.XXX toto.lan toto
Soit l'outil est déjà disponible sur votre distribution, soit il faut aller le rechercher comme suit.
Code : Tout sélectionner
# wget https://prosody.im/files/prosody-debian-packages.key -O- | apt-key add -
# apt-get update && apt-get dist-upgrade
# apt-get install prosody
Code : Tout sélectionner
cd /etc/prosody
On laisse le module "admin_adhoc" mais on commente le "admin_telnet".
Les modules HTTP restent commentés.
On peut activer les modules de "Other specific functionality", et notamment le module "groups" que l'on utilise plus loin.
Si vous voulez que les contacts s'enregistrent eux-mêmes directement, via Pidgin (ou tout autre client XMPP), ne pas oublier de modifier le paramètre :
Code : Tout sélectionner
allow_registration = true;
Code : Tout sélectionner
# prosodyctl adduser toto1@toto.lan
# prosodyctl adduser toto2@toto.lan
...
Code : Tout sélectionner
# prosodyctl passwd toto1@toto.lan
Code : Tout sélectionner
# cd /etc/prosody/certs
# openssl req -new -x509 -nodes -out toto.lan.crt -keyout toto.lan.key -days 3650
On créé le fichier de configuration de notre hôte virtuel /etc/prosody/conf.avail/toto.lan.cfg.lua :
Code : Tout sélectionner
-- attention à bien mettre les tabulations !
VirtualHost "toto.lan"
groups_file="/etc/prosody/toto.groups.txt"
ssl = {
key = "/etc/prosody/certs/toto.lan.key";
certificate = "/etc/prosody/certs/toto.lan.crt";
}
Component "muc.toto.lan" "muc"
On crée donc notre fichier de groupe dans /etc/prosody/toto.groups.txt comme indiqué - en donnant bien entendu les bons droits sur le fichier :
Code : Tout sélectionner
# chown prosody:prosody /etc/prosody/toto.groups.txt
Code : Tout sélectionner
# cat toto.groups.txt
[Groupe des TOTOS]
toto1@toto.lan=toto1
toto3@toto.lan=toto3
Code : Tout sélectionner
# cd /etc/prosody/conf.d/
# ln -s ../conf.avail/toto.lan.cfg.lua .
Code : Tout sélectionner
# prosodyctl restart
Code : Tout sélectionner
# service prosody restart
Code : Tout sélectionner
# prosodyctl status
Code : Tout sélectionner
# service prosody status
Code : Tout sélectionner
# ll /var/lib/prosody/toto%2elan/
total 24
drwxr-x--- 6 prosody prosody 4096 févr. 20 23:12 ./
drwxr-x--- 3 prosody prosody 4096 févr. 20 12:13 ../
drwxr-x--- 2 prosody prosody 4096 févr. 20 12:44 accounts/
drwxr-x--- 2 prosody prosody 4096 févr. 20 12:45 offline/
drwxr-x--- 2 prosody prosody 4096 févr. 21 00:05 roster/
drwxr-x--- 2 prosody prosody 4096 févr. 20 12:45 vcard/
Exemples de contenus :
Code : Tout sélectionner
# cat /var/lib/prosody/toto%2elan/accounts/toto1.dat
return {
["password"] = "toto1";
};
# cat /var/lib/prosody/toto%2elan/roster/toto3.dat
return {
[false] = {};
["pending"] = {};
["toto1@toto.lan"] = {
["subscription"] = "both";
["groups"] = {
["Groupe des TOTOS"] = true;
["Buddies"] = true;
};
["name"] = "toto1";
};
};
En cas de problème :
1 / vérifier la syntaxe du fichier de configuration avec :
Code : Tout sélectionner
# luac -p /etc/prosody/prosody.cfg.lua
2 / changer la ligne
Code : Tout sélectionner
info = "/var/log/prosody/prosody.log";
Code : Tout sélectionner
debug = "/var/log/prosody/prosody.log";
Code : Tout sélectionner
# tail -f /var/log/prosody/prosody.*
Code : Tout sélectionner
# telnet localhost 5582
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
| ____ \ / _
| _ \ _ __ ___ ___ _-_ __| |_ _
| |_) | '__/ _ \/ __|/ _ \ / _` | | | |
| __/| | | (_) \__ \ |_| | (_| | |_| |
|_| |_| \___/|___/\___/ \__,_|\__, |
A study in simplicity |___/
| Welcome to the Prosody administration console. For a list of commands, type: help
| You may find more help on using this console in our online documentation at
| http://prosody.im/doc/console
module.reload("groups")
| OK: Module reloaded on 0 hosts
module.reload("pep")
| OK: Module reloaded on 0 hosts
config:reload()
| OK: Config reloaded (you may need to reload modules to take effect)
c2s:show("toto.lan")
| toto.lan
| toto3@toto.lan/405ecd4e-dd2c-4dc2-8a29-4abfc6173672 - available(1)
| toto1@toto.lan/f9465597-9829-44b5-9678-6651c1adad80 - available(1)
| OK: Total: 2 clients