隔离864与855登录态读取边界
- robot 仅对 legacy_855 继续兼容历史 config.toml - server_864 运行时构建时主动清空 wxid、device_name、device_id,避免误用 855 残留状态 - 更新多版本适配路线图,记录 864 登录态硬隔离策略
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
- 已为 864 接入补充 `wechat_ipad.server_key` 统一配置项,支持通过 `.env` 的 `WECHAT_SERVER_KEY` 注入
|
||||
- 已在 [wechat_ipad/gateway.py](/d:/learn/abot/wechat_ipad/gateway.py:1) 中注册 `server_864 / 864` 别名
|
||||
- 已实现 864 第一版登录、初始化等待、HTTP 消息轮询、联系人、群信息、资料与朋友圈基础接口
|
||||
- 已在 [robot.py](/d:/learn/abot/robot.py:1) 中为 864 增加登录态硬隔离,默认不再回读 855 的历史 `config.toml` 与动态字段
|
||||
|
||||
当前尚未完成的关键项:
|
||||
|
||||
|
||||
15
robot.py
15
robot.py
@@ -345,6 +345,7 @@ class Robot:
|
||||
3. 最后兼容历史 `wechat_ipad/config.toml`,让老环境升级后可以平滑迁移。
|
||||
"""
|
||||
base_config = dict(getattr(self.config, "wechat_ipad", {}) or {})
|
||||
normalized_provider_key = self._normalize_wechat_provider_key(base_config.get("server_type", "legacy_855"))
|
||||
state_path = str(base_config.get("state_file", "") or self._default_wechat_state_path(base_config))
|
||||
legacy_config_path = str(
|
||||
base_config.get("legacy_config_path", "wechat_ipad/config.toml") or "wechat_ipad/config.toml"
|
||||
@@ -352,7 +353,11 @@ class Robot:
|
||||
|
||||
state_config = self._load_toml_config_if_exists(state_path)
|
||||
legacy_config = {}
|
||||
if os.path.abspath(state_path) != os.path.abspath(legacy_config_path):
|
||||
# 只有 855 家族继续兼容历史 `wechat_ipad/config.toml`:
|
||||
# 1. 用户当前明确担心 864 调试时误用本地 855 登录信息;
|
||||
# 2. 864 的静态鉴权已经切到 `server_key`,不需要再借助旧 TOML 补状态;
|
||||
# 3. 因此从这一层开始做硬隔离,避免 provider 切换时把 855 缓存带进 864 运行链路。
|
||||
if normalized_provider_key == "legacy_855" and os.path.abspath(state_path) != os.path.abspath(legacy_config_path):
|
||||
legacy_config = self._load_toml_config_if_exists(legacy_config_path)
|
||||
|
||||
merged_config = dict(base_config)
|
||||
@@ -381,6 +386,14 @@ class Robot:
|
||||
if legacy_value not in (None, ""):
|
||||
merged_config[field_name] = legacy_value
|
||||
|
||||
# 对 864 这类新 provider,进一步清理可能残留的 855 动态字段:
|
||||
# 1. `wxid/device_name/device_id` 对 864 不是主鉴权参数;
|
||||
# 2. 若用户历史上跑过 855,本地 `.env` 或旧缓存里残留这些字段,最容易让人误以为“复用了旧号”;
|
||||
# 3. 这里直接在构建运行时快照时清空,保证 864 启动只依赖 `server_key + 远端登录态`。
|
||||
if normalized_provider_key != "legacy_855":
|
||||
for field_name in ("wxid", "device_name", "device_id"):
|
||||
merged_config[field_name] = ""
|
||||
|
||||
merged_config["state_file"] = state_path
|
||||
merged_config["legacy_config_path"] = legacy_config_path
|
||||
return merged_config
|
||||
|
||||
Reference in New Issue
Block a user