Intégration avec un middleware IPTV

Important

Version bêta 2.1. Ce qui est décrit ici n’existe que dans la version bêta 2.1 : elle s’installe depuis le dépôt bêta et uniquement avec une licence ; la version stable 2.0.2 et la version de démonstration ne l’ont pas. La version bêta est fournie sans garantie, et l’assistance est assurée dans la mesure du possible (Programme de test bêta).

Depuis la version 2.1.1.516, le nœud comprend le schéma d’adresses et d’autorisation par jeton avec lequel les middlewares IPTV et les lecteurs travaillent déjà avec les serveurs de streaming : Ministra (Stalker), Microimpuls Smarty, TVIP TMS et les lecteurs dont l’archive est en catchup="flussonic". Un tel middleware peut être dirigé vers Perfect Streamer sans modifier ses modèles d’adresses de chaînes : le middleware remet à l’abonné un lien avec jeton, et le nœud vérifie le jeton auprès du middleware.

Deux éléments sont à activer : les formes d’adresses sur le serveur HTTP de diffusion et le serveur de vérification des jetons (Serveur de vérification des jetons). Les deux se configurent dans la console, ainsi que dans le fichier de configuration (Modifier un paramètre) et via l’API HTTP (Pilotage via l’API HTTP).

Adresses des chaînes

L’interrupteur « URL compatibles Flussonic » de la section « Middleware » de l’écran « Serveur HTTP de diffusion » (Serveur HTTP de diffusion ; la clé flussonic-urls dans /config/http-server), désactivé par défaut. Lorsqu’il est activé, chaque flux doté d’un « Nom du flux dans l’URL » (URL et autorisation) est aussi accessible aux adresses suivantes, en plus des anciennes :

Adresse

Contenu servi

/<nom>/index.m3u8, /<nom>/mono.m3u8

direct HLS

/<nom>/index.mpd

direct DASH

/<nom>/mpegts

direct MPEG-TS ; la diffusion par HTTP doit être activée pour le flux

/<nom>/index-<début>-<durée>.m3u8, archive-…, mono-… (et index-…, archive-… avec .mpd)

archive DVR (DVR : archive du flux) à partir du moment <début> (heure Unix en secondes) d’une durée de <durée> secondes, jusqu’à 31 jours, ou now — jusqu’au moment présent

/<nom>/timeshift_abs-<début>.m3u8, /<nom>/timeshift_rel-<secondes>.m3u8

timeshift : l’archive à partir d’un moment passé (ou d’il y a <secondes>), qui se poursuit ensuite comme le direct

L’adresse complète est http://<nœud>:<port>/<nom>/index.m3u8?token=<jeton>. Chaque requête doit porter un jeton (de 512 caractères au plus). Le nom d’un ensemble adaptatif (Ensembles adaptatifs) donne sa playlist adaptative. Si l’archive ou le timeshift est demandé à partir d’un moment où l’enregistrement n’avait pas encore commencé, la playlist master répond 200 et la playlist de la variante (media) répond 404.

Dans ces adresses, un flux ne peut pas porter les noms hls, dash, llhls, http, rsv ni un nom de 17 caractères formé de h et de 16 chiffres hexadécimaux. Dans l’éditeur de flux, sur l’onglet « OTT », sous « Nom du flux dans l’URL », la console affiche ces adresses avec le nom du flux et, pour un tel nom, un avertissement (Configurer le flux).

Serveur de vérification des jetons

Le jeton est vérifié par le middleware. Son adresse se définit comme un serveur sur l’onglet « Distant (facturation) » de l’écran « Utilisateurs / Identifiants » (Utilisateurs / Identifiants ; une entrée dans /config/cs/server). Dans le champ « Connecteur », on choisit l’un des serveurs de jetons :

ministra — « Ministra / Stalker (jeton) »

Ministra (Stalker). Adresse : http://<portail>/stalker_portal/server/api/chk_flussonic_tmp_link.php. Dans Ministra, on définit pour la chaîne le type de lien temporaire Flussonic, le type d’archive Flussonic DVR et l’adresse d’archive http://<nœud>:<port>/<nom>/index.m3u8.

smarty — « Smarty (jeton) »

Microimpuls Smarty. Adresse : http://<smarty>/tvmiddleware/api/streamservice/token/check/. Masque du flux : /$prefix/index.m3u8?token=$token, masque de l’archive : /$prefix/index-$flpbt-$flpdur.m3u8?token=$token.

flussonic — « Flussonic auth backend (jeton) »

Tout autre middleware (par exemple TVIP TMS) qui vérifie les jetons selon le même protocole. Adresse : son adresse de vérification.

Un serveur de jetons ne vérifie que les jetons de ces adresses ; il ne gère pas la connexion par identifiant et mot de passe. C’est pourquoi la console ne lui propose que « Nom », « URL », « Délai d’expiration (s) » et la section « Serveur de jetons », tandis que le mot de passe, la comptabilisation des sessions, le préfixe et le suffixe d’identifiant, la trace et l’analyse de la réponse sont masqués. Le nœud exige la clé password mais ne la transmet pas à ces serveurs : la console la remplit elle-même. Si un serveur de jetons passe à « Universel (HTTP) », la console demande un vrai mot de passe. Lors d’une écriture via l’API, password reçoit n’importe quelle valeur non vide.

Accès et vérifications répétées

  • Sans jeton, refus. Une requête sans jeton, avec un jeton rejeté ou lorsque le serveur de vérification est indisponible reçoit la réponse 403. Si un serveur n’a pas répondu ou a répondu par une erreur, le suivant est interrogé ; un refus (401 ou 403) est définitif.

  • Middleware indisponible. Avec la case « Autoriser tant que le backend est indisponible » (auth-fail-open = true), les nouveaux spectateurs sont admis tant que tous les serveurs de vérification sont indisponibles, et sont vérifiés à nouveau dans les 30 s. Cette clé n’annule pas un refus du middleware.

  • Vérification répétée. Une session en cours est vérifiée à nouveau selon la période fixée par le middleware (en-tête de réponse X-AuthDuration, 180 s par défaut) ou selon la période définie dans le champ « Revérification » : « Défaut du profil », « Jamais » ou « Toutes les N secondes » (clé auth-recheck : -1, 0 ou un nombre de secondes jusqu’à 86400). Un refus lors de la vérification répétée arrête la lecture de ce spectateur. Les liens Ministra ne sont pas vérifiés à nouveau : ils ne vivent que quelques secondes.

  • Sessions par utilisateur. Les en-têtes de réponse X-Max-Sessions et X-UserId limitent le nombre de sessions d’un même utilisateur en HLS, DASH et MPEG-TS réunis. Lorsque la limite est atteinte, la session inactive depuis le plus longtemps est fermée ; une nouvelle connexion MPEG-TS n’est alors pas acceptée.

  • Le jeton n’est pas visible. Le jeton n’est pas écrit dans le journal et n’est pas affiché dans la console : sur l’écran « Clients » (Clients), la session apparaît comme tok:<16 chiffres hexadécimaux>.

  • Réserve OTT. Les sessions avec jeton ne participent pas à la réserve OTT (Réserve OTT/DVR).

Ministra charge le programme des émissions depuis l’export XMLTV du serveur EPG (/xmltv, Distribution XMLTV).

Limites

  • Timeshift : uniquement HLS (TS) d’un seul flux.

  • Les aperçus, les playlists vidéo seule et de pistes séparées (video.m3u8, tracks-*) et l’archive en MPEG-TS ne sont pas servis : ces adresses répondent 404.

  • L’intégration a été testée sur des émulateurs de ces middlewares, pas encore sur des systèmes en production.