Entwurf 0.2
Der Text kann sich vor 1.0 noch ändern. Anmerkungen sind willkommen, besonders von Client- und Server-Autoren.
Gebaut, um zu bleiben
Was es solide macht
Lantern fängt neu an: Es ist mit keinem früheren Protokoll kompatibel, also dient jede Entscheidung der Sicherheit und der Dauer.
- Zweifach versioniert, im Pfad und in jedem Dokument: Eine Änderung legt nie stillschweigend einen Client lahm.
- Ein Token pro Gerät, auf dem Server bestätigt und einzeln widerrufbar: Auf der Konsole wird nie ein Passwort eingegeben oder gespeichert.
- HTTPS überall. Ein Server zu Hause mit eigenem Zertifikat wird bei der Kopplung festgepinnt, sobald der Fingerabdruck seines Schlüssels auf beiden Bildschirmen verglichen ist.
- Geprüfte Inhalte: Jede Datei kommt mit ihrem SHA-256, den die Konsole vor jeder Installation prüft.
- Erklärte Funktionen: Der Server sagt, was er anbietet, wem und in welchem Schema.
- Eine Konformitätssuite, die einen Server von außen prüft, und ein Referenzserver, der sie besteht.
Was neu ist
Was es hinzufügt
Was Clients bisher raten mussten, schwarz auf weiß.
- Ein SHA-256 für jede Datei, geprüft vor jeder Installation.
- Eine Version im Pfad und ein schema in jedem Dokument: Client und Server unterschiedlichen Alters verstehen sich weiter.
- Eine erklärte Liste der Funktionen statt geratener.
- Seiten mit Cursor, die nichts überspringen und nichts wiederholen, während sich die Bibliothek ändert.
- Die Kopplung einer Konsole mit einem widerrufbaren Token statt eines darauf gespeicherten Passworts.
- Fehler mit echten Statuscodes, alle im selben Format.
- Nichts Verstecktes: keine Hardware-Kennung, keine proprietäre Verschlüsselung, keine vom Server verordnete Änderung am Client.
Umsetzen
Für Server- und Client-Autoren
Die Spezifikation ist kurz: wenige Routen, feste Formen, schlichtes HTTP und JSON.
Einen Server schreiben
Den Handshake und die Bibliothek ausliefern; Spielstand-Sicherungen, Cheats oder Kopplung nach Belieben ergänzen und in den Funktionen erklären. Ein Server passt in ein Wochenende.
GET /.well-known/lantern
GET /api/lantern/v1/apps?sort=added
Einen Client schreiben
Server im lokalen Netz finden, ihre Funktionen lesen, die Bibliothek seitenweise durchgehen und den SHA-256 jedes Downloads prüfen. Ein Client passt in ein paar hundert Zeilen C++.
User-Agent: ExampleClient/0.1
Range: bytes=0-1048575
Schemas und Beispiele
Ein JSON-Schema für jedes Dokument, zu jedem ein Beispiel und eine OpenAPI-Beschreibung der Routen, um die eigenen daran zu prüfen.
schemas/v1 · examples/v1 · openapi.yaml
Im Repository: eine Konformitätssuite, die gegen einen Server läuft (conformance/), und ein kleiner Referenzserver, der sie besteht (server/). Nur eine Umsetzung, die die Suite besteht, sollte sich Lantern-kompatibel nennen.
Der erste Client wird PlayShelf, ein Homebrew-Paketmanager für die Nintendo Switch. PlayShelf
Für die eigenen Spiele
Lantern trägt, was der eigene Server hat, zwischen ihm und der Konsole hin und her. Es findet nichts und verteilt nichts: Es ist kein Weg, an Spiele zu kommen, und seine Server sind für die Spiele, die man besitzt.
Lizenzen
Frei umzusetzen
- CC BY 4.0Der Text der Spezifikation: teilen und bearbeiten, mit Angabe der Quelle.
- MITAlles andere (Schemas, OpenAPI-Beschreibung, Beispiele, Konformitätssuite, Referenzserver), damit jeder Server und Client unter jeder Lizenz das Protokoll umsetzen und seine Schemas unverändert übernehmen kann.
Fragen, Anmerkungen und Vorschläge gehören in die Issues des Repositorys.
Diese Website
Datenschutz
Diese Website setzt keine Cookies und speichert in deinem Browser nur die Sprache, die du in ihrer Kopfzeile wählst. Sie lädt nichts von einer anderen Website: Ihre Schriften, Bilder und Skripte werden mit ihr ausgeliefert.
Sie zählt ihre Besuche mit Umami Cloud, in der Europäischen Union (Frankfurt), ohne Cookies. Für jede aufgerufene Seite: die Seite, die Seite, von der du kommst, dein Browser, System und Gerätetyp, deine Bildschirmgröße, deine Sprache und dein Land. Deine IP-Adresse dient dazu, dein Land zu bestimmen und Besuche zu unterscheiden, und wird nicht mit ihnen gespeichert. Die Zählungen werden sechs Monate aufbewahrt, nur genutzt, um zu wissen, was gelesen wird, und nie verkauft oder weitergegeben. Umamis Datenschutzerklärung: umami.is/privacy.
Wer diese Website veröffentlicht, wer sie hostet und wie man nach seinen Daten fragt: Datenschutz und Impressum
Lesen, dann Bescheid sagen
Im Entwurf lässt sich noch etwas ändern. Ein Issue zu einer Route, einem Feld oder einem vergessenen Fall hilft allen künftigen Servern und Clients.