Демо · статическая библиотека

Библиотека, на которую можно направить клиент

Игры, homebrew и наборы читов, которых не существует, раздаются вместе с этим сайтом как статическая библиотека Lantern: попробуйте клиент без собственного сервера.

Что в ней есть

Вымышленные игры для Nintendo Switch, New 3DS, PS Vita и Android, с карточками и нарисованными для них иллюстрациями; homebrew для Switch, 3DS и Linux, два из них подписаны; наборы читов в формате Switch. Игры, студии и люди выдуманы.

Её файлы — заглушки из нескольких байт текста, а архивы homebrew содержат только README: ничто из этого не является программой, и ничего нельзя установить или запустить.

Как направить на неё клиент

Укажите клиенту этот адрес. Сначала он запрашивает у сайта /.well-known/lantern, не находит его и затем читает lantern.json: рукопожатие со static (§ 21 спецификации), страницы по четыре элемента, чтобы клиент встретил несколько, и каждый файл по его SHA-256.

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

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

Набор тестов соответствия проверяет её при каждой сборке этого сайта, и она достигает уровня Lantern Static:

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

Из браузера

GitHub Pages, который раздаёт этот сайт, отвечает на каждый файл заголовком Access-Control-Allow-Origin: *: страница другого сайта может прочитать её через fetch(). Запрашивайте без учётных данных и без собственных заголовков (без Lantern-Platform: платформа статической библиотеки указана в её путях), иначе браузер сначала отправит предварительный запрос, на который GitHub Pages не отвечает.

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

Её рукопожатие и файлы не содержат никакого отслеживания: посещения считают только страницы этого сайта. Конфиденциальность

Вариант с ловушками

Рядом — статические библиотеки, нарочно испорченные, по одной ошибке в каждой, для проверки клиентов: файл, не совпадающий со своим SHA-256, манифесты, выходящие из своей папки или за корни платформы, более новая схема, слишком большие или слишком глубокие документы, неверные подписи, ключ малого порядка. Каждая говорит, что должен сделать клиент, и набор тестов соответствия отвергает их все.