授权密钥分发 · 受信客户端管理 · 审计事件 · 计算逻辑自检
口令以 PBKDF2-HMAC-SHA256 散列存储在服务端;管理会话有效期由配置项 ADMIN_SESSION_HOURS(Python 版为 admin_session_hours)控制。
首次部署未配置口令时,此处会显示服务端返回的原因(例如"未配置管理员口令"); 任何未通过校验的请求都不会进入后台界面。
密钥默认只能激活一个浏览器(次数 = 1),激活成功后立即失效。 可用次数 > 1 时同一把密钥可以被多次激活,激活出来的设备属于同一个身份组: 共用一份昵称、外观、绑定设备与应用范围(对外就是同一个人)。 次数可以随时在下方列表里增减,调高到超过已用次数会自动把「已用尽」的密钥重新打开。 应用范围决定这把密钥激活出来的设备能用什么:论坛、设备,或两者都给。
| 授权密钥 | 备注 | 应用范围 | 状态 | 生成时间 | 有效期至 | 使用情况 | 操作 |
|---|
激活成功的浏览器会出现在这里。两个名称字段独立存储、互不覆盖: 显示名=管理员备注优先,其次用户激活时自己填的自述; 管理员备注只在后台可见,不会回显给用户。 身份组=同一把授权密钥(可用次数 > 1)激活出来的设备集合,组内共享昵称、外观、 绑定设备、用户自述与应用范围 —— 改一台就是改全组;而撤销信任 / 删除只作用于这一台。 可改备注、改写自述、延长/取消有效期、撤销信任(该浏览器立即失去计算权限)或删除记录。
| 客户端 ID | 显示名 | 管理员备注 | 用户自述 | 状态 | 应用范围 | 绑定设备 | 激活 / 最近 | 计算次数 | 来源 IP | 操作 |
|---|
记录激活、计算、管理员操作等,最近 1000 条(Workers 版存于 Durable Object 状态,Python 版存于同一个 JSON 文件)。
服务端直接调用计算模块(Workers 版 src/admin_code.js / Python 版 admin_code.py)计算,返回响应码与中间摘要,便于与实机结果比对。
论坛跑在独立的 Durable Object(ForumState)里:SQLite 存帖子与图片,
图片按 7 天保留、配额满时从最旧的开始滚动删除;实时推送走 Hibernation WebSocket。
把一个帖子固定到位置:宽屏(≥1328px)时它贴在信息流左右两侧的空白区, 手机 / 窄屏时排在信息流最前面并标注「置顶」。被固定的帖子不再出现在普通信息流里; 每个位置只留一条,往同一侧再固定别的帖子就替换掉它。
| 作者 | 内容 | 时间 | 位置 | 操作 |
|---|
备份是增量的:新事件写成 NDJSON 分片,图片按需上传,最后写 cursor.json 作为提交点。
凭据只以 Secret 形式存在服务端,这里只显示主机名。
作者名是发帖时的快照。在「设备备注不对外」这条规则之前发过的帖子, 快照里可能存着设备备注(可能继承自密钥备注)。这里把历史作者名清空 —— 清空后那些人会显示成中性名字,直到他们自己在「我的」里设一个昵称。
明暗与主题色是**整站共用**的一份偏好(存在本机 localStorage):这里改了,用户页也跟着改; 反之亦然。「自动」按你所在位置的日出日落切换。