Démo · une bibliothèque statique

Une bibliothèque vers laquelle pointer votre client

Des jeux, des homebrews et des codes de triche qui n'existent pas, servis avec ce site sous la forme d'une bibliothèque statique Lantern : essayez un client sans avoir votre propre serveur.

Ce qu'elle contient

Des jeux fictifs sur Nintendo Switch, New 3DS, PS Vita et Android, avec leurs fiches et des illustrations dessinées pour eux ; des homebrews pour la Switch, la 3DS et Linux, dont deux signés ; des codes de triche au format de la Switch. Ses jeux, ses studios et ses personnes sont inventés.

Ses fichiers sont des substituts de quelques octets de texte, et les archives de ses homebrews ne contiennent qu'un README : rien de tout cela n'est un logiciel, et rien ne peut y être installé ni lancé.

Y pointer un client

Donnez cette adresse à votre client. Il demande d'abord /.well-known/lantern au site, n'en trouve pas, puis lit lantern.json : une poignée de main avec static (§ 21 de la spécification), des pages de quatre éléments pour qu'un client en rencontre plusieurs, et chaque fichier par son SHA-256.

https://lantern.boreale.dev/demo/

lantern.json · v1/apps/switch/pages/1.json · v1/titles/switch/0100ABCD00010000.json

La suite de conformité la vérifie à chaque construction de ce site, et elle atteint Lantern Static :

python3 conformance/run.py --static https://lantern.boreale.dev/demo/
…
Levels reached (SPEC.md § 17, draft 0.6): Lantern Static

Depuis un navigateur

GitHub Pages, qui sert ce site, répond pour chaque fichier avec Access-Control-Allow-Origin: * : une page d'un autre site peut la lire avec fetch(). Faites la requête sans identifiants et sans en-têtes à vous (pas de Lantern-Platform : la plateforme d'une bibliothèque statique est dans ses chemins), sinon le navigateur envoie d'abord une requête préalable, à laquelle GitHub Pages ne répond pas.

const hello = await (await fetch("https://lantern.boreale.dev/demo/lantern.json")).json();

Sa poignée de main et ses fichiers ne portent aucun suivi : seules les pages de ce site comptent leurs visites. Confidentialité

La variante piégée

À côté, des bibliothèques statiques cassées exprès, une faute chacune, pour tester les clients : un fichier qui n'est pas son SHA-256, des manifestes qui sortent de leur dossier ou des racines de la plateforme, un schéma plus récent, des documents trop gros ou trop profonds, des signatures qui ne se vérifient pas, une clé d'ordre faible. Chacune dit ce qu'un client doit faire, et la suite de conformité les refuse toutes.