UseThemAll : Proxy Freeplayer

Un article de Wiki FreePlayer.org.

Sommaire

Introduction

L'idée est de permettre le lancement simultané de plusieurs logiciels FreePlayer (mods FreePlayer ou logiciels multipostes avec module FreePlayer). Un application gererait le partage du port 8080 et référencerait les applications FreePlayer actuellement lancées sur l'ordinateur. Une page permettrait à l'utilisateur de sélectionner depuis sa télévision l'application qu'il souhaite utiliser.

La création d'un Proxy Freeplayer a été lancée par VieuxBenou sur les forums communautaires :


Cet article permet de définir une base commune sur le développement de cet outil afin que les logiciels multiposte et les mods Freeplayer souhaitant l'utiliser puissent avoir un protocole d'échange normalisé. Il décrit principalement le protocole de dialogue entre les applications FreePlayer et l'application UseThemAll et spécifit certains comportements que doivent respecter les applications FreePlayer pour être compatibles

Principe

Une application Freeplayer (mod freeplayer ou freeplayer light dans un logiciel multiposte) souhaite utiliser le port 8080. Cependant, ce port est utilisé, l'application tente alors un appel au proxy Freeplayer. Si celui ci est lancé, il alloue un port à l'application Freeplayer qui peut alors se lancer en parallèle.

Le proxy Freeplayer permet d'afficher sur la Freebox une liste des logiciels disponibles sur le PC (et enregistré auprés du proxy)

Lorsque l'utilisateur choisit un logiciel particulier, celui ci devient alors l'application courante et toutes les demandes de la freebox sur le port 8080 sont redirigées vers l'application en question...

Protocole d'échange

Remarque : le charset utilisé par UseThemAll est l'UTF-8. Attention de bien utiliser ce charset pour encoder les paramètres des url.

GetFreePort

Lorsqu'un nouveau logiciel démarre et trouve le port 8080 occupé, il tente de faire une demande d'allocation d'un port libre en utilisant une fonction getFreePort et en s'identifiant auprés du proxy freeplayer. ex

http://localhost:8080/UseThemAll/getFreePort?name=leNomDeLApplication


Url de la requête: http://localhost:8080/UseThemAll/getFreePort

Paramètres :

  • name (obligatoire) : nom de l'application. Ce nom est libre et peut être sélectionné par l'application FreePlayer. Il doit permettre d'identifier sans ambiguité l'application lancée. Des caractères spéciaux peuvent être utilisés à condition d'utiliser l'url encoding en UTF-8. Dans le cas où le nom est déjà utilisé, cela ne provoque pas une erreur : UseThemAll devrait alloué un nom unique basé sur le nom passé en paramètre
  • url (optionnel) : C'est cette url qui sera appelée lors de la sélection de l'application par l'utilisateur. (valeur par défaut : /settings.html)
  • logoUrl (optionnel) : Cette url sera utilisée pour afficher un logo à côté du nom de l'application. Cette image doit être de petite taille pour éviter de dégrader l'affichage de la page de sélection des application. Par défaut, il n' a pas de logo associé (donc aucune image ne sera affichée à côté du nom de l'application). Exemple de valeur pour ce paramètre : /images/logo.gif
  • logoWidth (optionnel) : largeur de l'image en pixel (valeur par défaut : 32)
  • logoHeight (optionnel) : hauteur de l'image en pixel (valeur par défaut : 32)


En cas de succès, Le code de réponse HTTP 200 sera envoyé et le corps de la réponse HTTP contiendra le numréo de port à utiliser (réponse de type text/plain). ex :

37330


En cas d'échec (erreur interne, tous les ports sont utilisés, etc), un code de réponse HTTP 500 est retourné et un message indique la cause de l'erreur dans le corp de la réponse (en text/plain)


Remarques :

  • UseThemAll se laisse la possibilité de faire régulierement une requête HTTP vers l'url de l'application pour vérifier que l'application est toujours lancée. En cas de non réponse (echec de connexion), UseThemAll peut supprimer l'application de la liste des applications et le port redevient disponible
  • L'adresse IP de l'emmeteur de la requête est sauvegardée. C'est vers le couple (adresse ip - port) que les requêtes HTTP seront reroutées. Cela permet de lancer une application FreePlayer sur un ordinateur différent de l'ordinateur hébergeant UseThemAll

ReleasePort

Lorsque l'application s'arrête, elle l'indique au serveur proxy en utilisant la fonction releasePort. ex:

http://localhost:8080/UseThemAll/releasePort?port=portUtilisé


Url de la requête: http://localhost:8080/UseThemAll/releasePort

Paramètres :

  • port (obligatoire) : port utilisé par l'application qui lui a été alloué par UseThemAll en réponse à la requête GetFreePort


En cas de succès, un code de réponse 200 est retourné. En cas d'échec, un code de réponse HTTP 500 est retourné et un message indique la cause de l'erreur dans le corp de la réponse (en text/plain)


Remarque : Dans le cas où le port libéré est le port de l'application courante (UseThemAll est en mode proxy vers cette apllication), UseThemAll sort du mode proxy.

Retour au proxy

Afin de permettre de retourner à la page d'accueil, il faut ajouter un lien dans l'application freeplayer pour rediriger la freebox vers l'url "/UseThemAll/index.html"

Le proxy abandonne alors le mode proxy repasse alors en mode "liste d'applications" et l'utilisateur peut choisir sur la freebox l'application à utiliser...


Attention : l'application quittée a la responsabilité de rendre les ressources qu'elle a utilisée de façon à ne pas gêner l'utilisation d'une autre application par la suite. Exemple : si l'application a démarrée une instance de VLC qui écoute en HTTP sur port 8081, elle doit arrêter cette instance avant de revenir sous UseThemAll de façon à ce qu'un autre mod puisse à son tour lancer VLC en écoute sur port 8081. Remarque : ca permet aussi de libérer de la mémoire sur l'ordinateur de l'utilisateur ...


Remarque : C'est cette url qui est affichée à l'utilisateur par UseThemAll lors du tout premier accès.

Les applications UseThemAll


VieuxBenou a développé une application en Java. Elle est actuellement en version beta et est accessible à cette adresse : http://usethemall.free.fr. Cette application est multiplateforme. Dans sa version windows, elle peut s'installer sous forme de service.


Pour le moment, seule cette application apporte la fonctionnalité UseThemAll. Cependant, d'autres applications peuvent être développées pour rendre ce service. Il suffit qu'elles respectent le protocol défini ci dessus. On pourrait même envisager que les applications FreePlayer implémentent elles-même cette fonctionnalité.

Les applications FreePlayer compatibles UseThemAll

Vous pouvez ajouter ici les softs qui sont (ou seront) compatibles avec le protocole UseThemAll

Applications actuellement disponibles

Application ayant annoncé leur compatibilité future