Brouillon 0.2
Le texte peut encore changer avant la 1.0. Les remarques sont bienvenues, surtout celles des auteurs de clients et de serveurs.
Fait pour durer
Ce qui le rend solide
Lantern repart de zéro : il n'est compatible avec aucun protocole d'avant, si bien que chaque choix sert la sécurité et la durée.
- Versionné deux fois, dans le chemin et dans chaque document : un changement ne casse jamais un client en silence.
- Un jeton par appareil, approuvé sur le serveur et révocable un par un : aucun mot de passe n'est jamais saisi ni gardé sur la console.
- HTTPS partout. Un serveur maison avec son propre certificat est épinglé à l'appairage, une fois l'empreinte de sa clé comparée sur les deux écrans.
- Un contenu vérifié : chaque fichier vient avec son SHA-256, que la console contrôle avant toute installation.
- Des fonctions déclarées : le serveur dit ce qu'il offre, à qui, et dans quel schéma.
- Une suite de conformité qui vérifie un serveur de l'extérieur, et un serveur de référence qui la passe.
Ce qui est nouveau
Ce qu'il ajoute
Ce que les clients devaient deviner jusqu'ici, écrit noir sur blanc.
- Un SHA-256 pour chaque fichier, vérifié avant toute installation.
- Une version dans le chemin et un schema dans chaque document : un client et un serveur d'âges différents continuent de s'entendre.
- Une liste de fonctions déclarée plutôt que devinée.
- Des pages à curseur qui ne sautent ni ne répètent rien quand la ludothèque change.
- L'appairage d'une console avec un jeton révocable, plutôt qu'un mot de passe gardé dessus.
- Des erreurs avec de vrais codes HTTP, toutes dans un même format.
- Rien de caché : aucun identifiant matériel, aucun chiffrement propriétaire, aucun changement du client décidé par le serveur.
L'implémenter
Pour les auteurs de serveurs et de clients
La spécification est courte : peu de routes, des formes fixes, du HTTP et du JSON simples.
Écrire un serveur
Servez la poignée de main et la ludothèque ; ajoutez sauvegardes, cheats ou appairage quand vous voulez, et déclarez-les dans ses fonctions. Un serveur tient en un week-end.
GET /.well-known/lantern
GET /api/lantern/v1/apps?sort=added
Écrire un client
Trouvez les serveurs du réseau local, lisez leurs fonctions, parcourez la ludothèque page à page et vérifiez le SHA-256 de chaque téléchargement. Un client tient en quelques centaines de lignes de C++.
User-Agent: ExampleClient/0.1
Range: bytes=0-1048575
Schémas et exemples
Un schéma JSON pour chaque document, un exemple de chacun et une description OpenAPI des routes, pour y confronter les vôtres.
schemas/v1 · examples/v1 · openapi.yaml
Dans le dépôt : une suite de conformité à lancer contre un serveur (conformance/), et un petit serveur de référence qui la passe (server/). Seule une implémentation qui passe la suite devrait se dire compatible Lantern.
Le premier client sera PlayShelf, un gestionnaire de paquets homebrew pour la Nintendo Switch. PlayShelf
Pour vos propres jeux
Lantern transporte ce que contient votre serveur, entre lui et votre console. Il ne trouve rien et ne distribue rien : ce n'est pas un moyen d'obtenir des jeux, et ses serveurs sont faits pour les jeux que vous possédez.
Licences
Libre à implémenter
- CC BY 4.0Le texte de la spécification : partagez-le et adaptez-le en citant sa source.
- MITTout le reste (schémas, description OpenAPI, exemples, suite de conformité, serveur de référence), pour que tout serveur ou client, sous n'importe quelle licence, puisse implémenter le protocole et reprendre ses schémas tels quels.
Questions, remarques et propositions vont dans les tickets du dépôt.
Ce site
Confidentialité
Ce site ne dépose aucun cookie, et ne garde dans votre navigateur que la langue choisie dans son en-tête. Il ne charge rien d'un autre site : ses polices, ses images et ses scripts sont servis avec lui.
Il compte ses visites avec Umami Cloud, dans l'Union européenne (Francfort), sans cookie. Pour chaque page vue : la page, la page d'où vous venez, votre navigateur, votre système et votre type d'appareil, la taille de votre écran, votre langue et votre pays. Votre adresse IP sert à déduire le pays et à distinguer les visites, et n'est pas conservée avec elles. Les comptes sont gardés six mois, servent seulement à savoir ce qui est lu, et ne sont ni vendus ni partagés. La politique d'Umami : umami.is/privacy.
Qui publie ce site, qui l'héberge, et comment poser une question sur vos données : Confidentialité et mentions légales
Lisez-le, puis dites-le-nous
Le brouillon est le moment de changer les choses. Un ticket sur une route, un champ ou un cas oublié aide tous les serveurs et clients à venir.