Comment utiliser exporte-le

Blog: http://www.ddcs.re/fr

email: exportit.ddcs@gmail.com

Application exporte-le

politique de confidentialité

Description

Cette application permet d’utiliser les fichiers données, installés dans un téléphone ou une tablette Android, à partir d’un autre système android, ou un PC, et, si le type de fichier est supporté, sur la télévision. Pour cela, l’application utilise les protocoles standards UPnP et HTTP.

exporte-le est constituée d’un serveur et un client (deux icônes sur l’écran des applications Android). Le serveur construit une liste des fichiers vidéos, audios et images, et, en plus, les pdf et eBooks trouvés sur ce système. La liste de ces fichiers est mise en mémoire, avec leurs caractéristiques, et publiée à l’aide d’un serveur « UpnP Directory Service » et d’un serveur HTTP.

Les fichiers sont distribués en quatre (et uniquement 4) catégories: les vidéos (mp4, webm et 3gpp), les audios (mp3, ogg et m4a), les images (jpeg, gif or png) et les « ebooks » (pdf, prc, epub, pdb, mobi and djvu).

Le serveur n’a pas été conçu pour supporter des milliers de fichiers, juste quelques centaines au maximum, ce que l’on trouve normalement dans une tablette ou un téléphone.

Comment utiliser cette application

Tout d'abord démarrer le serveur et attendre la fin de l'initialisation. Vous pouvez trouver dans la console si vous êtes connecté en réseau Wifi ou Mobile, et les URLS pour accéder au serveur. Pour le commun des mortels, le serveur est innaccessible sur le réseau GSM. Mais localement, ou si vous êtes connecté en Wifi ave un navigateur, vous pouvez obtenir la page Web distribuée par le serveur. Pour cela vous devez sortir de la page "serveur", ce qui n'arrête rien, car le serveur proprement dit s'éxécute en arrière-plan. Il est aussi possible d'utiliser l'adresse locale IPv6 pour accéder à la page Web, un URL comme http://[::1]:8192...

En deuxième étape, vous devez utiliser la page de configuration dans la fenêtre serveur, pour modifier le nom du serveur, ainsi que peut-être la taille des caractères, et la langue si le défaut ne vous convient pas.

L'étape suivante consiste à définir un nom d'utilisateur dans la catégorie "propriétaire" avec accès à toutes les catégories. A partir de là, il faudra s'identifier pour se connecter au serveur.

Quand cela fonctionne, vous pouvez définir d'autres utilisateurs avec des accès plus restreints.

Et finalement vous pouvez définir un alias de port, lorsque vous êtes connecté à votre réseau Wifi. Si vous utiliser l'application complète avec le support UPnP, il suffit de définir un numéro non nul mais inférieur à 65535 dans la configuration et controller que cela fonctionne sans message d'erreur. Si vous avez export-it-web, ou si vous avez une erreur en UPnP, il vous faut en outre configurer votre routeur ADSL comme expliquer dans le chapitre à propos du serveur. Finalement vous pouvez essayer un accès comme de l'extérieur en utilisant un proxy web avec support javascript et en pointant votre navigateur vers l'URL externe.

HTTPS quoique supporté, ne semble pas être utilisable à cause de la complexité de mise en oeuvre et la perte de performances.

Lorsque la redirection de port et l'authentification fonctionnent, vous pouvez utiliser l'option "club" pour être facilement accessible sur Internet, et publier vos données sur www.ddcs.re. Pour tester votre propre serveur, vous devez utiliser un Web proxy car votre adresse IP externe n'est pas accessible de votre réseau Wifi. Cette option permet d'éviter la diffusion d'une URL avec l'adresse IP et le numéro de port, juste en sélectionnant votre serveur sur le site "club", par son nom, une petite phrase et une de vos images comme icône.

Environnement technique

Le support UPnP est fourni par la librairie java Teleal Cling 1.0.5 (Copyright (C) 2010 Teleal GmbH, Switzerland), et le serveur Http a été construit à partir de NanoHTTPD version 1.25, Copyright 2001,2005-2012 Jarno Elonen et 2010 Konstantinos Togias. Cette application contient donc des produits sous licence LGPL. Les deux sont des versions adaptées pour l’application, et pas le code natif. La librairie java Teleal Cling a été reconfigurée en un seul fichier jar, à partir de cling-core(1.0.5), cling-support (1.0.5) and teleal-common (1.0.14), et des modifications ont été apportées pour permettre le passage des paramètres de configuration directement à partir de l’application… NanoHttpd a été modifié pour supporter la commande « HEAD », et ajouter les « en-têtes » DLNA, une page initiale est automatiquement construite donnant la liste des fichiers exportés par catégorie. En plus, un catalogue OPS est préparé au démarrage pour pouvoir prendre les livres directement à partir des produits « lecteurs d’eBooks ».

Toutes les émoticônes utilisées dans les commentaires ont été conçues et fabriquées par Enrico Gollnow (Erni). Visitez son site pour plus d'infos sur lui et ses émoticônes (http://www.gomotes.com).

La routine de cryptage du mot de passe utilise la bibliothèque jsbn de Tom Wu (Javascript BigInteger et RSA) du côté du navigateur Web et la bibliothèque java SpongyCastle du côté serveur.

Cette application utilise JmDNS, une implémentation de DNS multi-cast en Java pour la découverte et l'enregistrement de services. Cette bibliothèque est entièrement interopérable avec le protocole Bonjour d'Apple. Tous mes remerciements à Arthur van Hoff, Rick Blair et Kai Kreuzer, pour cette bibliothèque efficace sous licence Apache, Version 2.0.

Cette application utilise un lecteur vidéo HTML5 appelé Playr développé par Julien 'delphiki' Villetorte gdelphiki@gmail.com sous licence MIT, tous mes remerciements pour cet excellent travail et la permission de l'utiliser.

Nous utilisons PDF.JS pour afficher les fichiers PDF via une WebView. Ce projet Open Source est soumis à une licence Apache Version 2. PDF.js (https://mozilla.github.io/pdf.js/) est un visualiseur de format de document portable (PDF) construit avec HTML5. PDF.js est piloté par la communauté et pris en charge par Mozilla.

Le package epubjs-reader (https://github.com/futurepress/epubjs-reader) est utilisé pour les livres électroniques epub et les livres sont affichés dans une WebView. Ce logiciel est disponible via une licence MIT.

Composants de l'application

Nous utilisons désormais Acme4J comme client Java (https://shredzone.org) pour le protocole _Automatic Certificate Management Environment_ (ACME) comme spécifié dans la RFC 8555 (https://tools.ietf.org/html/rfc8555 ). ACME est un protocole qu'une autorité de certification (CA) et un demandeur peuvent utiliser pour automatiser le processus de vérification et d'émission de certificat. Il s'agit d'une implémentation open source indépendante qui n'est ni affiliée ni approuvée par Let's Encrypt.

Acme4J a besoin de la bibliothèque Jose4j (https://bitbucket.org/b_c/jose4j/wiki/Home) qui est une implémentation open source robuste et facile à utiliser de JSON Web Token (JWT) et de la suite de spécifications JOSE.

Composants de l'application

Cette application est composée d'un serveur et d'un client, et donc après installation, vous trouvez deux icônes dans le tableau des applications.

L'application "serveur"démarre un service "android" s'exécutant en arrière plan, qui est le véritable serveur Media UPnP, complété d'un serveur HTTP. Quand le service est actif, il apparait comme une petite icône sur la barre de tâches android. Une partie importante de l'application serveur, c'est la fenêtre de configuration. Par défaut le serveur exporte tous les fichiers données trouvés dans ce système android. On peut faire son choix en configurant l'application. Dès que le service est configuré et démarré, on peut refermer cette application serveur, le véritable serveur continuant d'être actif en arrière plan.

Le client quant à lui, traite les fichiers distribués par les serveurs UPnP trouvés sur le réseau sans fil. Il a comme sous-tâches, un Mediaplayer pour visualiser les vidéos (mp4, webm ou 3gpp), et écouter la musique (mp3, ogg et m4a), et il démarre une fenêtre Webview pour regarder les photos. On peut aussi utiliser des produits complémentaires pour lire les fichiers .pdf et les livres électroniques. En complément, un service s'exécutant en arrière plan, permet de réaliser une copie locale d'une série de fichiers, mais cela uniquement avec un serveur exporte-le. Si l'on démarre le client sans avoir activé le serveur, il va faire tourner un serveur vide, pour pouvoir utiliser le protocol UPnP avec les autres serveurs.

Autorisations et ressources

Dans les paramètres du système, puis sous Paramètres avancés, vous pouvez trouver gestionnaire de batterie. Pour garder le serveur opérationnel en permanence, vous devez sélectionner Performance pour le plan d'alimentation, et activer cette application dans les applications protégées et dans les applications à forte intensité énergétique.

Si possible, vous devez garder votre WiFi actif lorsque votre appareil est en veille et que le serveur fonctionne, et en outre, si votre appareil possède une pile DLNA intégrée, vous ne devriez pas rechercher des "périphériques proches" dans les paramètres système.

Le serveur a besoin de l'accès au système de fichiers et de lire les paramètres du téléphone pour détecter les changements d'état comme en Wifi ou si la transmission de données est activée en cas de connexion à un réseau mobile. En option, le serveur peut envoyer des SMS lorsque l'adresse IP externe est modifiée (option dans la configuration) et le code du pays par ACCESS_COARSE_LOCATION, (pas l'endroit précis, juste le code pays en deux lettres). Le programme client utilise l'autorisation d'écrire sur stockage externe pour enregistrer les fichiers téléchargés, et l'autorisation d'enregistrement audio pour montrer des courbes lors de l'écoute de la musique.

Utilisation du serveur

Que peut-on faire avec le client

Utilisation d'un navigateur pour accéder un serveur exporte-le

Utilisation de FFmpeg pour la fonction de canal multidiffusion

Configurations normales

Publication sur Internet à partir du réseau domestique Wifi

Pour publier des fichiers sur Internet avec votre serveur exporte-le, vous devez configurer le port aliasing pour leserveur HTTP dans votre routeur ADSL. Le protocole UPnP n'est pas disponible sur Internet, il n'y a que le protocole HTTP. Le numéro de port par défaut est 8192 (vous pouvez le modifier dans la configuration), et un numéro d'alias de port pour le réseau public, doit être donné sur le routeur ADSL en association avec l'adresse IP du serveur export-le. Le numéro de port externe par défaut dans la configuration est 0, mais vous pouvez définir ce que vous voulez comme 8192 ou 80. L'URL à utiliser pour accéder à votre serveur, sur le réseau publique, est donnée sur le côté droit en haut de la fenêtre du serveur.

Utilisation de HTTPS sur Internet

Mon serveur Web supportait HTTPS avec des certificats auto-signés depuis des années, mais, bien que cela fonctionne, cette méthode génère des problèmes et des messages d'erreur. C'est la raison pour laquelle j'ai décidé d'implémenter le protocole Automatic Certificate Management Environment_ (ACME), pour obtenir et maintenir des certificats X509 standard.

Le protocole ACME a certaines exigences techniques, il n'est pas utilisable par tout le monde. Pour utiliser ce protocole, vous avez besoin d'un nom DNS fixe sur votre adresse IP externe. Le certificat X509 doit être défini uniquement sur un nom DNS et non sur une adresse IP.

Pour obtenir le certificat de Let's Encrypt, vous devez utiliser un serveur HTTP avec le numéro de port standard (80) sur ce nom DNS externe. Avec mon application, vous pouvez obtenir le certificat uniquement sur un serveur fonctionnant avec un alias de port externe HTTP défini sur "80". Un seul serveur peut utiliser cette valeur sur votre réseau Wi-Fi domestique. Lorsque vous disposez d'un certificat valide, vous pouvez utiliser le port HTTPS par défaut "443" uniquement sur l'un de vos serveurs Web défini comme "port alias". Mais pour éviter de "rooter" votre appareil, vous devez utiliser les ports supérieurs à 1024 comme numéros de port "locaux" par exemple 8080 pour HTTP et 8443 pour HTTPS.

Le panneau "configuration" est modifié pour prendre en charge les alias de port pour les protocoles HTTP et HTTPS, et en plus vous pouvez donner un nom DNS que vous savez fonctionner, pour votre adresse IP externe Ce nom sera défini dans votre certificat X509 en plus du nom de votre fournisseur de réseau si vous en avez un. Le certificat est automatiquement distribué à d'autres serveurs export-it fonctionnant sur le même réseau Wi-Fi, permettant d'utiliser HTTPS sur Internet mais avec d'autres valeurs d'alias de port.