Version XMPP (Jabber) du serveur Prosody 0.11.0

La première version de la 0.11ème branche XMPP stable du serveur Prosody avec des corrections de plus de 2000 erreurs a été introduite.


Changements majeurs


Les améliorations les plus importantes ont été apportées aux modules MUC et pubsub.


Ensemble, ces composants implémentent deux des extensions XEP les plus étendues de la norme XMPP que le protocole fournit actuellement. Bien que les versions précédentes prennent en charge MUC et pubsub depuis un certain temps, les deux sont assez compliqués, et après la mise en œuvre initiale, il est devenu clair qu'il était nécessaire de mettre à jour et de refactoriser le code afin d'augmenter la couverture de la fonctionnalité XEP requise, d'améliorer la structure du code et l'évolutivité des solutions.


De nombreuses autres modifications, améliorations, corrections de bogues et performances ont été apportées à cette version.


Améliorations du chat


La plupart des modifications de cette version concernaient la réécriture de la quasi-totalité du code de la MUC (Multi-User Conference). Ce projet ambitieux a été lancé il y a quelques années par l'utilisateur daurnimator , qui a développé l'essentiel du nouveau code.


Bien que les changements les plus importants soient internes, cela a permis au projet d'ajouter plus facilement de nouvelles fonctionnalités et d'améliorer l'évolutivité des services MUC (cette version du module MUC permet à de nombreux services de fonctionner avec des centaines de milliers de conversations courantes, comme Jitsi Meet ).


Configuration améliorée


Le formulaire de configuration du serveur a été mis à jour pour fournir une disposition plus nette et des noms de paramètres plus pratiques.
Boîte de dialogue Conversation Conversation.


Archivage des messages


Un support a été ajouté pour l'archivage et le chargement des messages précédemment écrits dans MUC (Multi User Chat) en utilisant le protocole XEP-0313 (MAM). Cela permet au client d'afficher, par exemple, des messages qui ont été écrits dans une conversation générale lorsque l'utilisateur était absent en ligne.


Réservation de nom d'utilisateur


Pour éviter toute confusion, Prosody peut désormais appliquer une réservation de nom d'utilisateur. Cela empêche l'utilisation du nom de quelqu'un d'autre lorsque le véritable propriétaire n'est pas dans une conversation commune. Par défaut, seuls les propriétaires / administrateurs de chats partagés peuvent réaffecter un nom (lors de l'ajout d'un utilisateur à une conversation partagée), mais le module peut également être configuré pour que les utilisateurs puissent enregistrer leurs propres alias et devenir des participants.


Protocole Pubsub


L'implémentation de Pubsub est considérablement améliorée dans cette version. Link Mauve a ajouté un code responsable de la sécurité des nœuds et des éléments, maintenant les données peuvent être stockées sur disque, pas dans la RAM, et ne sont pas perdues au redémarrage du serveur.


Une prise en charge a également été introduite pour la configuration, les nœuds et la gestion de la propriété nécessaires au contrôle d'accès avancé, et enfin la prise en charge des fameuses options de publication, qui permettent aux clients de publier en toute sécurité des éléments avec un contrôle d'accès approprié.


Pep


L'ancien code PEP est une implémentation distincte de pubsub limitée qui a implémenté tout ce dont les utilisateurs avaient besoin en 2009. Cependant, au fil des ans, de plus en plus de fonctionnalités de pubsub ont été demandées dans le PEP, en raison de leur grande pertinence. Par conséquent, il est devenu évident que PEP devait ajouter toutes les fonctions pubsub et utiliser le code existant.


Florian Zeitz a commencé ce travail en créant un nouveau module "mod_pep_plus". Ce module a maintenant remplacé le "mod_pep" d'origine et est déjà l'implémentation PEP par défaut.


Cela fournit un support OMEMO lors de la communication avec les utilisateurs qui ne sont pas dans le carnet d'adresses, dans les conversations et les autres clients. Il permet également aux utilisateurs d'utiliser PEP pour stocker des signets et d'autres données.


Nouveau format vCard


Cette version prend en charge la nouvelle version de la spécification vCard décrite dans XEP-0292, qui inclut la prise en charge de diverses nouvelles fonctionnalités.


Le nouveau format est également stocké dans PEP, offrant un accès de contrôle d'accès complet (par exemple, vous pouvez choisir si votre vCard est ouverte ou disponible uniquement pour les contacts).


Peu (le cas échéant) de clients prennent actuellement en charge la vCard4, mais l'ancien protocole vcard-temp est toujours pris en charge à l'aide de mod_vcard_legacy, qui convertit de manière transparente au nouveau format jusqu'à ce que les clients soient mis à jour.


Optimisation de la batterie mobile


Cette version présente certains modules communautaires conçus pour augmenter la durée de vie de la batterie des clients de messagerie mobile. Le trafic qui transmet en permanence sur le réseau, comme les changements de statut des contacts et les messages de chat, peut empêcher le téléphone de passer en mode basse consommation. Cependant, ces données sont généralement sans importance, surtout lorsque l'écran du téléphone est éteint ou que l'application est en arrière-plan.


Les clients prenant en charge XEP-0352, tels que Conversations, peuvent informer le serveur lorsque l'application est en arrière-plan et Prosody optimise le trafic de connexion en conséquence.


Cette fonction est implémentée dans le module mod_csi_simple.


Changements internes


API asynchrones


Beaucoup de travail a été fait sur l'API asynchrone interne, augmentant sa fiabilité grâce aux tests ajoutés. À terme, cette API sera utilisée pour améliorer les performances des grands serveurs de chat publics.


Avec ces modifications, la version actuelle dispose d'un support expérimental pour l'authentification asynchrone et les modules de stockage de données. Cependant, dans cette version, la nouvelle API n'est pas officiellement prise en charge, car des changements majeurs sont prévus pour les futures versions.


Tests automatisés


L'une des plus grandes améliorations du projet ces dernières années a été l'augmentation du nombre de tests automatiques. Les versions précédentes étaient presque entièrement testées manuellement, avec très peu de tests automatisés disponibles. Il existe maintenant un grand nombre de tests qui s'exécutent après chaque modification.


Prise en charge native d'Epoll


Ce nouveau serveur réseau expérimental offre une alternative à libevent. Les principaux avantages sont la petite taille de l'implémentation et la facilité d'utilisation, tandis que la caractéristique est son support exceptionnel dans les systèmes Linux.


Source

Source: https://habr.com/ru/post/fr430998/


All Articles