读取演示库
演示库是随本站提供的静态库:无需安装,无需登录。
-
读取握手文档
每个库用一份文档说明它是什么、提供哪些功能以及有哪些限制。
curl -s https://lantern.boreale.dev/demo/lantern.json -
列出其中的应用
某个平台的一页应用:每个都带有大小、sha256 和文件路径。
curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json -
下载并校验
文件的 SHA-256 与应用声明的一致,不一致则客户端拒绝。
curl -s https://lantern.boreale.dev/demo/v1/blobs/sha256/fa75492f7b78cad7ca4044e8fb548ac67bfd7fbf05242ceecb29ebe492218a0d | sha256sum
更多尝试,包括专门用来刁难客户端的库: 演示库
与你自己的服务器通信
有账户的服务器会先要求设备配对。这些调用使用虚构的地址。
-
发现
在局域网中客户端用 UDP 数据报发现它;有地址时,则在约定路径读取握手文档。
curl -s https://shelf.example.org/.well-known/lantern -
配对
服务器返回一个代码,所有者在另一台设备上登录、输入并批准。
curl -s -X POST https://shelf.example.org/api/lantern/v1/pairing \ -H 'Content-Type: application/json' \ -d '{"schema":1,"device":"My console","scopes":["library"]}' -
调用
携带获得的令牌(Bearer);以密钥配对的设备还会对每个请求签名。
curl -s https://shelf.example.org/api/lantern/v1/apps?page_size=5 \ -H 'Authorization: Bearer et_…'
完整流程
逐步查看:每按一次点亮一步,其余变暗。
- 设备 → 服务器: UDP 47115 {"lantern":"discover"}
- 服务器 → 设备: {"lantern":"server", uid, port, base}
- 仅作提示:信任来自 TLS 和配对
- 设备 → 服务器: GET /.well-known/lantern
- 服务器 → 设备: handshake: uid, versions, platforms, features, limits
- 配对 (§ 5.2)
- 设备 → 服务器: POST /v1/pairing {device, scopes, key}
- 服务器 → 设备: code KQ4M-7TXD, verify_complete, poll, interval
- 显示代码、二维码 和密钥的短指纹
- 用户的手机 → 服务器: 打开链接、登录, 核对指纹并批准
- 设备 → 服务器: GET <poll> (every interval)
- 服务器 → 设备: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
- 为此 uid 固定 服务器密钥 (§ 5.3)
- 之后,每次调用
- 设备 → 服务器: Authorization: Bearer et_… + request signature
- 服务器 → 设备: 200 · 401 · 403