Demo · eine statische Bibliothek

Eine Bibliothek für Ihren Client

Spiele, Homebrews und Cheat-Sets, die es nicht gibt, mit dieser Website als statische Lantern-Bibliothek ausgeliefert: Probieren Sie einen Client aus, ohne eigenen Server.

Was sie enthält

Erfundene Spiele für Nintendo Switch, New 3DS, PS Vita und Android, mit ihren Datenblättern und eigens gezeichneten Bildern; Homebrews für Switch, 3DS und Linux, zwei davon signiert; Cheat-Sets im Format der Switch. Spiele, Studios und Personen sind erfunden.

Ihre Dateien sind Platzhalter aus wenigen Bytes Text, und ihre Homebrew-Archive enthalten nur eine README: Nichts davon ist Software, und nichts darin lässt sich installieren oder starten.

Einen Client darauf richten

Geben Sie Ihrem Client diese Adresse. Er fragt die Website zuerst nach /.well-known/lantern, findet nichts und liest dann lantern.json: ein Handshake mit static (§ 21 der Spezifikation), Seiten mit je vier Einträgen, damit ein Client mehrere sieht, und jede Datei über ihren SHA-256.

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

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

Die Konformitätssuite prüft sie bei jedem Build dieser Website, und sie erreicht Lantern Static:

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

Aus einem Browser

GitHub Pages, das diese Website ausliefert, antwortet für jede Datei mit Access-Control-Allow-Origin: *: Eine Seite einer anderen Website darf sie mit fetch() lesen. Fragen Sie ohne Anmeldedaten und ohne eigene Header an (kein Lantern-Platform: Die Plattform einer statischen Bibliothek steht in ihren Pfaden), sonst schickt der Browser zuerst eine Preflight-Anfrage, die GitHub Pages nicht beantwortet.

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

Ihr Handshake und ihre Dateien enthalten kein Tracking: Nur die Seiten dieser Website zählen ihre Besuche. Datenschutz

Die präparierte Variante

Daneben absichtlich kaputte statische Bibliotheken, mit je einem Fehler, zum Testen von Clients: eine Datei, die nicht ihrem SHA-256 entspricht, Manifeste, die ihren Ordner oder die Wurzeln der Plattform verlassen, ein neueres Schema, zu große oder zu tief verschachtelte Dokumente, Signaturen, die sich nicht prüfen lassen, ein Schlüssel kleiner Ordnung. Jede sagt, was ein Client tun muss, und die Konformitätssuite lehnt sie alle ab.