mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 13:40:45 +00:00
1.7.1:修白屏 + 配对 + 官网管理页分家
手表端 - 修「连上后一片白屏」:initTabs() 从来没被调用过, 导致 tabDefs 为 null、selectTab 直接 return, 标签栏里只剩一个孤立的滑动指示器 - 应用名改成 ykxmz 被控端 - 修「设备已关闭新设备配对」:配对码本身就是密钥, 拿着正确的码就该放行。老逻辑"首台配对后自动关窗"会把 手表重装的人永久挡在外面 - 应用名改成 ykxmz 服务器端 - / 改成官网(公开,简洁介绍 + 下载) - /zhingzhuanzhan 中转站管理(要登录),/admin 自动跳转 - 管理账号 xmz7891,可改 - 官网 / 登录页 / 管理页都加上 favicon
This commit is contained in:
@@ -657,12 +657,26 @@ class RemoteServer:
|
||||
# ---------------- 握手实现 ----------------
|
||||
|
||||
def _do_pair(self, session: Session, msg: dict) -> dict:
|
||||
if not self.pairing_enabled:
|
||||
return {"ok": False, "error": "被控端已关闭新设备配对"}
|
||||
code = str(msg.get("code") or "").strip()
|
||||
expected = self.store.pairing_code()
|
||||
if not expected:
|
||||
return {"ok": False, "error": "被控端尚未生成配对码"}
|
||||
|
||||
# 配对窗口关着、但对方报的码是对的 —— 照样放行。
|
||||
#
|
||||
# 为什么:配对码本身就是密钥。老逻辑是"首台设备配对成功后
|
||||
# 自动关闭配对窗口"(close_pair_after_first),结果手表重装、
|
||||
# 换新表、或清掉 App 数据之后令牌没了,重新配对会被拒,
|
||||
# 用户看到"被控端已关闭新设备配对"就彻底连不上了 ——
|
||||
# 而这时候他能做的只有跑去管理页手动开窗口,完全不合理。
|
||||
#
|
||||
# 码不对时才用"已关闭配对"这个说法挡回去,
|
||||
# 防暴力枚举的按 IP 限速(下面那段)仍然生效。
|
||||
if not self.pairing_enabled and code != expected:
|
||||
return {"ok": False,
|
||||
"error": "被控端已关闭新设备配对" +
|
||||
"(配对码不对;要在管理页临时开启的话,"
|
||||
"打开中转站管理页找「允许新设备配对」)"}
|
||||
# 防暴力枚举:6 位数字只有 100 万种,不限速的话局域网里慢慢试就行。
|
||||
# 按**来源 IP**分别计数 —— 全局计数的话,别人发 10 个错码
|
||||
# 就能把你这个合法用户也锁在门外,那本身就是个拒绝服务的口子。
|
||||
|
||||
Reference in New Issue
Block a user