9 mai 2021
Alors, vous commencez à avoir un serveur vraiment fonctionnel, vous commencez à imaginez la création de comptes pour vos utilisateurs. En ligne de commande ?
Dans listen, vérifier que vous avez bien ejabberd_web_admin :
listen:
...
-
port: 5280
ip: "::"
module: ejabberd_http
tls: true
protocol_options: 'TLS_OPTIONS'
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme
Dans la documentation de web_admin [1], il est indiqué que les droits d’accès à ce module sont définis par l’access_rule nommée configure.
Donc vérifiez que dans access_rules, vous avez bien le groupe configure
access_rules:
...
configure:
allow: admin
Il autorise le groupe admin. Dans acl ajouter votre utilisateur à la liste admin.
acl:
admin:
user:
- "poivron@xmpp.poivron-robotique.fr"
Sauvegardez votre fichier, rechargez la configuration de votre serveur. Pour accéder à votre interface d’administration, utilisez votre IP locale. Pour l’instant vous n’avez pas redirigé le port 5280 de votre routeur vers votre serveur. Je ne vous le recommande pas, pour des raisons de sécurité. Et aussi parce que j’ai eu des problèmes avec cette interface lorsque je n’y accédait pas depuis l’adresse locale.
Aussi, vous remarquerez que le module listen active les connexions chiffrées (tls : true). Pour vous connecter à votre interface, utiliser le protocole https !
Essayer avec https://<IP_LOCALE>:5280/admin. Vous devrez rentrer votre identifiant XMPP complet (id@serveur) et votre mot de passe XMPP.
La configuration actuelle du serveur permet à vos utilisateur de modifier leur mot de passe depuis leur client XMPP. Pour la création/suppression des utilisateurs, ejabberd dispose de deux modules.
Mais d’abord, réfléchissez... Qui peut accéder à votre interface de gestion des utilisateurs ? Vous seul ? Tous le monde ? Une liste d’admin ? Tous vos utilisateurs enregistrés ? Je n’ai pas la réponse à cette question. Voici comment avoir une interface web, accessible depuis votre réseau local.
Créez un lien entre une requête web et le module mod_register_web :
listen:
...
-
port: 5280
ip: "::"
module: ejabberd_http
tls: true
protocol_options: 'TLS_OPTIONS'
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme
/users: mod_register_web
Paramétrez les droits pour le module mod_register. Nous le paramètrerons pour que seules les demandes provenant de notre serveur soient acceptées. Ceci bloque la création de compte depuis le client XMPP (pour éviter le SPAM). Dans les acl, définissez votre groupe loopback comme les ip de votre serveur (la configuration par défaut est suffisante) :
acl:
...
loopback:
ip:
- 127.0.0.0/8
- ::1/128
Dans access_rules, le groupe trusted_network autorise les connexions provenant des acl loopback.
access_rules:
...
trusted_network:
allow: loopback
Maintenant, configurer mod_register et activez mod_register_web :
modules:
...
mod_register:
ip_access: trusted_network
mod_register_web: {}
Note : Si le module mod_register n’accepte les connexions que depuis votre serveur, réalisez bien que mod_register_web est sur votre serveur. Par conséquent, quiconque ayant accès à mod_regster_web pourra créer des utilisateurs (ou essayer de les supprimer).
Note2 : Pour rendre publique mod_register_web tout en protegeant mod_web_admin, vous pouvez changer mod_register_web de port pour le mettre sur 8443 qui est déjà redirigé - si vous avez suivi XMPP - Partager des fichiers efficacement.
Maintenant, connectez-vous à la page : https://<IP_LOCALE>:5280/users/ . Mettez bien le "/" final, sans quoi vous accéderez à la première page mais pas aux suivantes. Si vous avez redirigé le port sur votre routeur, vous pouvez aussi utiliser votre nom de domaine. Essayez de modifier votre mot de passe et de créez vos utilisateurs !