unlock

package
v1.6.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package unlock 保存与读取节点的「流媒体 / AI 解锁」探测结果。

结果由节点上的探针产生并上报,服务端只负责存最近一次的快照。之所以必须由探针 来测:解锁取决于发起请求的那个 IP,服务端在别的机房,只能测到它自己。

Index

Constants

This section is empty.

Variables

View Source
var ErrNotVisible = errors.New("unlock report is not readable for this caller")

ErrNotVisible 表示调用者无权读取该 uuid 的解锁快照:客户端表里没有这个 uuid, 或者它对应的节点是 hidden 而调用者不是管理员。

Functions

func ClientHistoryReadable added in v1.6.9

func ClientHistoryReadable(hidden map[string]bool, loggedIn bool, uuid string) bool

ClientHistoryReadable 判断某个 uuid 的节点数据是否可以返回给这个调用者。

规则与 web/rpc/jsonrpc 的 clientHistoryReadable 逐字相同,两个要点:

  • **存在性是答案的一部分。** 客户端表里没有这个 uuid 时一律不可读,否则已删除 节点留存下来的数据会被当成「存在且可见」而返回;
  • hidden 节点只对已登录管理员可读。

这里重新实现而不是共享同一个函数,是因为 jsonrpc 那份是包内私有的;公开的解锁 读取路径必须先过同一道门,两处必须同进同退。

func LoadVisible added in v1.6.9

func LoadVisible(uuid string, loggedIn bool) (*v2.UnlockParams, error)

LoadVisible 读取 uuid 的解锁快照,并先做可见性判断。

这是公开读取路径唯一允许使用的入口:load 不再导出,调用者必须显式给出 loggedIn, 否则就会重现 P1-5 —— 匿名的 /api/public/ip-info/v1/lookup?uuid=… 按 uuid 拿到任意 节点探针上报的出口地址(egress_ip)。

返回 (nil, nil) 的两种情况是既有契约的一部分:uuid 为空(没有节点上下文,第三方主题 的按地址查询就是这么调用的),以及数据库未就绪(无库时也没有任何解锁数据可泄露, 而解锁只是附加信息,不该让整个 IP 信息接口失败)。

uuid 存在但不可见时返回 ErrNotVisible,调用方必须把它渲染成与「不存在」完全相同的 错误 —— 两者可区分时,这个接口就成了隐藏节点存在性的判定器。

func Save

func Save(uuid string, params v2.UnlockParams) error

Save 覆盖写入一个节点的最近一次探测结果。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL