Moxl

Moxl est la librairie XMPP officielle du projet Movim, elle remplace Jaxl à partir de la version 0.6 (incluse).

Historique

Moxl (pour Movim XMPP Librairie) a été développée pendant l'été 2012 par Jaussoin Timothée suite à la décision de l'équipe de développement de remplacer la librairie Jaxl qui commençais à montrer de sérieuses limites pour le bon développement du projet Movim.

Fonctionnalités

Son mode de fonctionnement diffère fondamentalement de Jaxl. En effet Moxl est conçue pour ne dialoguer avec le serveur XMPP cible qu'en HTTP(s). Elle ne contient donc pas de mode synchrone ou de système pouvant la faire fonctionner sous forme de démon.

Sessions

Pour garder la session ouverte entre les requêtes Moxl est conçue pour sauvegarder à chaque requête l'ensemble des variables de session en base de donnée. Pour son intégration au sein de Movim elle se base donc sur la classe Session elle même basée sur Modl (https://launchpad.net/modl).

Il est bon de noter que l'ensemble de paramètres de session (hash de session, ris, sid, id, utilisateur, serveur cible…) tiennent dans un simple tableau PHP.

Namespaces

Contrairement à de très nombreuses librairies XMPP, Moxl préfère traiter les messages entrant et sortant au travers des namespaces XMPP plutôt que via les extensions (XEP).

Fonctionnalités présentes

Authentification

Pour l'authentification Moxl peut actuellement se connecter en

  • PLAIN : authentification en clair, sans chiffrement du mot de passe
  • DIGEST-MD5 : authentification sécurisée basée sur l'échange de secrets entre le serveur et le client
  • CRAM-MD5
Ressources XMPP

Le système d'authentification a aussi été adapté pour pouvoir se connecter aisément sur des serveurs imposants une ressource (tel que Gmail ou Facebook). Une ressource XMPP est une chaine se plaçant à la fin du JID (Jabber ID en autres mots l'adresse de l'utilisateur sur le réseaux XMPP) et permettant de spécifier depuis quel client les messages envoyés au serveur sont émis, ce qui permet à une personne d'être connectée depuis plusieurs clients à la fois. Par exemple si on envois un message sur :

  • user@serveur.com/android l'utilisateur le recevra sur son mobile Android
  • user@serveur.com/home l'utilisateur le recevra sur son ordinateur à la maison

La ressource par défaut de Moxl est moxl (les adresses seront donc écrites de cette façon : utilisateur@serveur.tld/moxl) mais certains serveurs imposent une ressource particulière à la connexion, les serveurs XMPP de Gmail par exemple imposent un hash de ce type :

  • user@serveur.com/ACE45E

Moxl s'adapte donc aux directives du serveur et permet ainsi de se connecter sans encombres sur un large panel de serveurs.

Implémentation du protocole XMPP

Voir la page Protocol Implementations.

Fonctionnement interne

Structure de la librairie

Voici la structure des dossiers qui composent la librairie Moxl :

Moxl/
|-- stanza/
|   |-- base/
|   `-- microblog/
|
`-- xec
    |-- action/
    `-- payload/
Stanza

Ce dossier contient un ensemble de fonctions permettant de construire le XML nécessaire à la création de Stanza (requêtes XMPP) valides. Ces fonctions sont regroupées arbitrairement par fichiers de même thème (Presence.php, Message.php…).

Ces fonction retournent donc une chaine de caractère contenant le XML en question qui sera ensuite envoyé au requèteur.

XEC

XEC (pour XMPP Event Controller) est un sous module de Moxl. Il permet de gérer intelligemment les requêtes passées au travers de Moxl. Voir la page dédiée à XEC.


Autres langues
Traductions de cette page: