diff --git a/docs/login-command-plan.md b/docs/login-command-plan.md index 6e7be6d..89cf0aa 100644 --- a/docs/login-command-plan.md +++ b/docs/login-command-plan.md @@ -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. 可选收尾(未做,需要时另开任务)