Demo · uma biblioteca estática

Uma biblioteca para onde apontar o seu cliente

Jogos, homebrew e batotas que não existem, servidos com este site como uma biblioteca estática Lantern: experimente um cliente sem ter servidor próprio.

O que contém

Jogos fictícios para Nintendo Switch, New 3DS, PS Vita e Android, com as suas fichas e ilustrações desenhadas para eles; homebrew para Switch, 3DS e Linux, dois deles assinados; batotas no formato da Switch. Os jogos, os estúdios e as pessoas são inventados.

Os seus ficheiros são marcadores de alguns bytes de texto, e os arquivos de homebrew contêm apenas um README: nada disto é software, e nada pode ser instalado nem executado.

Apontar-lhe um cliente

Dê este endereço ao seu cliente. Primeiro pede ao site /.well-known/lantern, não o encontra e depois lê lantern.json: um handshake com static (§ 21 da especificação), páginas de quatro itens para que um cliente encontre várias, e cada ficheiro pelo seu SHA-256.

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

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

A suite de conformidade verifica-a em cada compilação deste site, e ela atinge Lantern Static:

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

A partir de um navegador

O GitHub Pages, que serve este site, responde a cada ficheiro com Access-Control-Allow-Origin: *: uma página de outro site pode lê-la com fetch(). Peça sem credenciais e sem cabeçalhos próprios (sem Lantern-Platform: a plataforma de uma biblioteca estática está nos seus caminhos); caso contrário, o navegador envia primeiro um pedido prévio, a que o GitHub Pages não responde.

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

O seu handshake e os seus ficheiros não têm qualquer rastreio: só as páginas deste site contam as visitas. Privacidade

A variante armadilhada

Ao lado, bibliotecas estáticas estragadas de propósito, com uma falha cada, para testar clientes: um ficheiro que não corresponde ao seu SHA-256, manifestos que saem da sua pasta ou das raízes da plataforma, um esquema mais recente, documentos demasiado grandes ou profundos, assinaturas que não se verificam, uma chave de ordem pequena. Cada uma diz o que um cliente deve fazer, e a suite de conformidade recusa-as todas.