Rascunho 0.2
O texto ainda pode mudar antes da 1.0. Os comentários são bem-vindos, sobretudo de quem escreve clientes e servidores.
Feito para durar
O que o torna sólido
O Lantern começa do zero: não é compatível com nenhum protocolo anterior, por isso cada escolha serve a segurança e a duração.
- Versionado duas vezes, no caminho e em cada documento: uma alteração nunca parte um cliente em silêncio.
- Um token por dispositivo, aprovado no servidor e revogável um a um: nenhuma palavra-passe é escrita ou guardada na consola.
- HTTPS em todo o lado. Um servidor em casa com o seu próprio certificado fica fixado no emparelhamento, depois de comparada a impressão digital da sua chave nos dois ecrãs.
- Conteúdo verificado: cada ficheiro vem com o seu SHA-256, que a consola verifica antes de qualquer instalação.
- Funções declaradas: o servidor diz o que oferece, a quem e em que esquema.
- Uma suite de conformidade que verifica um servidor de fora, e um servidor de referência que passa nela.
O que é novo
O que acrescenta
O que os clientes tinham de adivinhar até agora, por escrito.
- Um SHA-256 para cada ficheiro, verificado antes de qualquer instalação.
- Uma versão no caminho e um schema em cada documento: um cliente e um servidor de idades diferentes continuam a entender-se.
- Uma lista de funções declarada em vez de adivinhada.
- Páginas com cursor que não saltam nem repetem nada enquanto a biblioteca muda.
- Emparelhar uma consola com um token revogável, em vez de uma palavra-passe guardada nela.
- Erros com códigos de estado reais, todos num só formato.
- Nada escondido: nenhum identificador de hardware, nenhuma cifragem proprietária, nenhuma alteração ao cliente decidida pelo servidor.
Implementá-lo
Para quem escreve servidores e clientes
A especificação é curta: poucas rotas, formas fixas, HTTP e JSON simples.
Escrever um servidor
Sirva o handshake e a biblioteca; acrescente cópias de jogos guardados, batotas ou emparelhamento quando quiser, e declare-os nas suas funções. Um servidor cabe num fim de semana.
GET /.well-known/lantern
GET /api/lantern/v1/apps?sort=added
Escrever um cliente
Encontre os servidores da rede local, leia as suas funções, percorra a biblioteca página a página e verifique o SHA-256 de cada transferência. Um cliente cabe em algumas centenas de linhas de C++.
User-Agent: ExampleClient/0.1
Range: bytes=0-1048575
Esquemas e exemplos
Um esquema JSON para cada documento, um exemplo de cada um e uma descrição OpenAPI das rotas, para verificar os seus.
schemas/v1 · examples/v1 · openapi.yaml
No repositório: uma suite de conformidade para correr contra um servidor (conformance/) e um pequeno servidor de referência que passa nela (server/). Só uma implementação que passe a suite se deve dizer compatível com o Lantern.
O primeiro cliente será o PlayShelf, um gestor de pacotes homebrew para a Nintendo Switch. PlayShelf
Para os seus próprios jogos
O Lantern leva o que o seu servidor tem, entre ele e a sua consola. Não encontra nada nem distribui nada: não é uma forma de obter jogos, e os seus servidores são para os jogos que possui.
Licenças
Livre para implementar
- CC BY 4.0O texto da especificação: partilhe-o e adapte-o, indicando a origem.
- MITTudo o resto (esquemas, descrição OpenAPI, exemplos, suite de conformidade, servidor de referência), para que qualquer servidor ou cliente, sob qualquer licença, possa implementar o protocolo e copiar os seus esquemas tal como estão.
Perguntas, comentários e propostas vão para as issues do repositório.
Este site
Privacidade
Este site não usa cookies e só guarda no teu navegador o idioma que escolhes no cabeçalho. Não carrega nada de outro site: os tipos de letra, as imagens e os scripts são servidos com ele.
Conta as visitas com Umami Cloud, na União Europeia (Frankfurt), sem cookies. Por cada página vista: a página, a página de onde vens, o teu navegador, sistema e tipo de dispositivo, o tamanho do ecrã, o teu idioma e o teu país. O teu endereço IP serve para saber o país e distinguir as visitas, e não é guardado com elas. As contagens são guardadas seis meses, usadas só para saber o que é lido, e nunca vendidas nem partilhadas. A política da Umami: umami.is/privacy.
Quem publica este site, quem o aloja e como perguntar pelos seus dados: Privacidade e aviso legal
Leia-o e diga-nos
O rascunho é o momento de mudar as coisas. Uma issue sobre uma rota, um campo ou um caso esquecido ajuda todos os servidores e clientes que virão.