« Plugins de prosody » : différence entre les versions
Ligne 6 : | Ligne 6 : | ||
Prosody fournit une configuration de base avec déjà un certain nombre de plugins activés, il est recommandé de garder ces modules, et d’en ajouter d’autres. | Prosody fournit une configuration de base avec déjà un certain nombre de plugins activés, il est recommandé de garder ces modules, et d’en ajouter d’autres. | ||
À titre d’exemple, voici la liste des modules | À titre d’exemple, voici la liste des modules fournis avec prosody 0.11 (les modules préfixés par -- ne sont pas activés) : | ||
modules_enabled = { | modules_enabled = { |
Version du 16 janvier 2021 à 12:14
Plugins inclus avec prosody
Prosody fournit une configuration de base avec déjà un certain nombre de plugins activés, il est recommandé de garder ces modules, et d’en ajouter d’autres. À titre d’exemple, voici la liste des modules fournis avec prosody 0.11 (les modules préfixés par -- ne sont pas activés) :
modules_enabled = { -- Generally required "roster"; -- Allow users to have a roster. Recommended ;) "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in. "tls"; -- Add support for secure TLS on c2s/s2s connections "dialback"; -- s2s dialback support "disco"; -- Service discovery -- Not essential, but recommended "carbons"; -- Keep multiple clients in sync "pep"; -- Enables users to publish their avatar, mood, activity, playing music and more "private"; -- Private XML storage (for room bookmarks, etc.) "blocklist"; -- Allow users to block communications with other users "vcard4"; -- User profiles (stored in PEP) "vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard -- Nice to have "version"; -- Replies to server version requests "uptime"; -- Report how long server has been running "time"; -- Let others know the time here on this server "ping"; -- Replies to XMPP pings with pongs "register"; -- Allow users to register on this server using a client and change passwords --"mam"; -- Store messages in an archive and allow users to access it --"csi_simple"; -- Simple Mobile optimizations -- Admin interfaces "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands --"admin_telnet"; -- Opens telnet console interface on localhost port 5582 -- HTTP modules --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP" --"websocket"; -- XMPP over WebSockets --"http_files"; -- Serve static files from a directory over HTTP -- Other specific functionality --"limits"; -- Enable bandwidth limiting for XMPP connections --"groups"; -- Shared roster support --"server_contact_info"; -- Publish contact information for this service --"announce"; -- Send announcement to all online users --"welcome"; -- Welcome users who register accounts --"watchregistrations"; -- Alert admins of registrations --"motd"; -- Send a message to users when they log in --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots. --"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use }
Fonctionnalités de base
mam
Le module mam, (pour Message Archive Management, la XEP-0313) permet au serveur de garder un historique des messages échangés par l’utilisateur (n’inclut pas ceux échangés dans des salons de discussion, qui gardent leur propre historique). Si votre but est d’avoir un serveur a destination d’utilisateurs grand public, il est fortement recommandé de l’activer, afin d’avoir une bonne expérience utilisateur entre les différents clients.
csi
Le module csi (intégré à prosody depuis la version 0.11) permet à un client d’envoyer des informations d’état au serveur, pour qu’il puisse mettre en place différentes optimisations afin de limiter les échanges entre les deux (par exemple, l’information qu’un utilisateur est en train de rédiger un message dans un salon de discussion n’a pas beaucoup d’intérêt pour votre client sur téléphone portable s’il est dans votre poche).
Ce module ne fait rien en lui-même, et il faut activer d’autres modules csi_ pour que les optimisations désirées soient mises en place. Il y a un choix varié et ce choix est laissé aux administrateurs du serveur.
csi_simple
Ce module applique certaines optimisations décrites dans la section juste au-dessus.
Administration
admin_telnet
Permet l’administration du serveur via telnet en localhost sur le port 5582. N’importe quel utilisateur unix du serveur peut y accéder, c’est donc une faille de sécurité si quiconque d’autre que les administrateurs du serveur ont un compte dessus.
server_contact_info
Le but de ce module est de fournir un moyen de contact standardisé des administratrices et administrateurs d’un service XMPP. Il est standardisé dans la XEP-0157, et est donc accessible à tous. Il est particulièrement nécessaire quand on veut gérer un serveur ouvert aux inscriptions, puisque si aucun moyen de contact n’est trouvable facilement et que du spam est émis depuis ce domaine, il peut se retrouver dans la liste JabberSPAM.
contact_info = { abuse = { "mailto:abuse@example.com", "xmpp:admin1@example.com", "xmpp:admin2@example.com" }, admin = { "mailto:xmpp@example.com", "xmpp:admin1@example.com", "xmpp:admin2@example.com" }, feedback = { "xmpp:servicechat@example.com?join" }, security = { "mailto:security@example.com", "xmpp:admin1@example.com", "xmpp:admin2@example.com" }, support = { "xmpp:servicechat@example.com?join" }, }
Plugins venant de prosody-modules
bookmarks
Deux standards (un plus ancien et un plus moderne) sont en utilisation pour la gestions des marque-pages XMPP, ce qui pose des problèmes de synchronisation si l’utilisateur utilise à la fois un client ancien et un client plus récent. Ce module permet de synchroniser les deux automatiquement.
cloud_notify
Ce module permet d’utiliser la XEP-0357, qui est l’interaction XMPP avec les différents services de notifications push des systèmes d’exploitation mobile. Il est recommandé de l’activer, pour le bon fonctionnement des clients mobiles mais surtout particulièrement des clients iOS.
inject_ecaps2
Permet de prendre en charge le nouveau format d’Entity Capabilities de la XEP-0390 (au lieu de la XEP-0115) sans intervention des utilisateurs.
ipcheck
Permet à un client de connaître son adresse IP externe, via la XEP-0279.
smacks
Le module smacks implémente la XEP-0198 (Stream Management) et permet une reconnexion transparente à une session XMPP déjà en cours. Elle est particulièrement utile sur les réseaux mobiles.
turncredentials
Le module turncredentials sert à établir des canaux de discussion audio et vidéo en pouvant passer outre les différentes restrictions réseau en place, notamment sur les réseaux mobiles qui sont très limités.
Son activation requiert la configuration d’un serveur STUN/TURN (à JabberFR, nous avons choisi le serveur coturn), et le partage d’informations dans la configuration de prosody.
turncredentials_host = "votreserveurturn.example.com" turncredentials_secret = "un secret partagé entre prosody et le serveur turn"
Le secret doit être unique et aléatoire, et vous pouvez en générer un avec la commande openssl rand -base64 32.
Plugins concernant l'administration
s2s_blacklist
Le plugin s2s_blacklist permet de maintenir une liste statique de serveurs avec lesquels la communication n’est pas désirée, par exemple parce que les administrateurs ne répondent pas aux requêtes qui leur sont faites pour purger les comptes de spammeurs.
Un bon départ est la liste du dépôt JabberSPAM. La liste lors de l’écriture de cet article est la suivante :
s2s_blacklist = { "bashtel.ru", "creep.im", "darkengine.biz", "default.rs", "hiddenlizard.org", "jabber.cd", "jabber.freenet.de", "jabber.ipredator.se", "jabber.npw.net", "jabber.sampo.ru", "labas.biz", "otr.chat", "paranoid.scarab.name", "rassnet.org", "safetyjabber.com", "sj.ms", "xmpp.bytesund.biz", }
Plugins de monitoring
Pour pouvoir obtenir des statistiques sur l’utilisation de son serveur, et ainsi avoir une interface analogue à stats.jabberfr.org, il faut activer les modules suivants :
"prometheus"; "measure_cpu"; "measure_memory"; "measure_client_identities"; "measure_client_features"; "measure_client_presence"; "measure_message_e2ee"; "measure_registration";
Il faudra également avoir ces lignes dans la configuration globale :
statistics = "internal" statistics_interval = 15