登录方案:确认复用 /login 并一次返回两条链接,密钥已入库

This commit is contained in:
root
2026-09-21 10:33:00 +08:00
parent dfb647bcd3
commit 628f3ad0a2
+28 -15
View File
@@ -56,8 +56,9 @@ nginx 无需改动:`location /` 会把 `/login` 改写成后端 `/personal/log
### 2.1 生成票据
密钥必须与主站一致,存 PersonalHub 的秘密库(共享盘只留 `secret://` 引用),
不要写进仓库或聊天记录。Python 侧计算方式:
密钥必须与主站一致。**已由主人批准写入 PersonalHub 保险库**,引用为
`secret://services/service-lionwebsite/panel-login-secret`;机器人侧按既有秘密读取流程
申请取值,不要写进仓库或聊天记录。Python 侧计算方式:
```python
import hashlib, hmac, time
@@ -75,23 +76,35 @@ Shell 等价写法(`openssl`)供人工验证用:
SIG=$(printf 'v1.%s' "$STAMP" | openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $NF}')
```
### 2.2 命令接入
### 2.2 命令接入(主人已确认的方案)
- Telegram:`TELEGRAM_COMMANDS` 增加 `login`,并复用 PersonalHub 现成的
`configure_handlers(login_handler=...)` 形状;文案可沿用
「已生成登录链接,5 分钟内有效,请勿转发」。
- QQ(LionQQBot):增加 `/login`(别名 `/登录`),走同一套生成逻辑。
- 按项目既有约定,新命令必须同时覆盖 QQ 与 Telegram,帮助菜单同步更新。
**复用既有 `/login`,不新建命令名;一条回复里同时给出两个登录链接。**
- Telegram:`telegram_panel_login()` 的返回文案改为同时给出 PersonalHub 面板链接与
LionWebsite 面板链接,`TELEGRAM_COMMANDS` 里 `login` 的描述同步更新。
- QQ(LionQQBot):既有 `/login`(别名 `/登录`)返回同样两条链接,共用同一套生成逻辑。
- PersonalHub 未完整配置(缺 password / session_secret / TOTP)时,现有逻辑会回一句
配置提示;此时**仍要发出 LionWebsite 链接**,不要让一条链接的失败带掉另一条。
- 帮助菜单(Telegram `/help` 与 QQ 菜单)中 `/login` 的描述同步更新。
- 文案不要写成「两条都只能用一次」:PersonalHub 链接是一次性的,
LionWebsite 票据是 300 秒窗口内可重放。
示例文案:
```
已生成登录链接:
· Personal Hub:[打开面板](< PersonalHub 链接 >)
· LionWebsite:[打开面板](< LionWebsite 链接 >)
两条链接 5 分钟内有效,请勿转发。
```
### 2.3 与 PersonalHub 现有 /login 的关系
PersonalHub 已有一个 `/login`,但它签发的是**它自己面板**的票据
(`OneTimePanelLoginTickets` + `/panel/telegram-login`),与 LionWebsite 无关。
接入时二选一,建议前者:
1. `/login` 仍只回 PersonalHub 面板链接,另加 `lionlogin`(或 `/面板`)专给
LionWebsite —— 语义清晰,不改动既有命令行为;
2. 让 `/login` 一条消息里同时给出两个链接 —— 少一个命令,但会改动现有文案与测试。
PersonalHub 的 `/login` 原本只签发**它自己面板**的票据
(`OneTimePanelLoginTickets` + `/panel/telegram-login`)。改造时保留这条,
再在同一回复里附加 LionWebsite 链接;两者的票据机制与有效期互不影响。
## 3. 可选收尾(未做,需要时另开任务)