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