ykxmz 1.5.0:修复手表端 TLS 证书校验 + MTU 修复网络稳定性

被控端
- 修复 MTU 问题:夹 MSS + 路径 MTU 探测(公网可用率 48% -> 100%)
- 复用 HTTP 连接(免掉每次新建 TLS 的 30% 握手失败)
- 每分钟回头找局域网,自动切回快 400 倍的路径
- 画面心跳帧:静止时省流量,客户端仍知道流是活的
- 锁屏时给出可操作的提示

手表端
- 内置 GTS Root R4 / GlobalSign Root CA,修 SSLHandshakeException
- 连接错误翻译成人话(证书/时间/解析/超时分别提示)
- 经中转连上后用服务器报的地址刷新已配对记录
- 新增局域网连接页面、服务器延迟检测

服务器端
- 支持 chunked 请求体(修每 16 秒一次的连接错乱与大面积 502)
- 网络调优脚本 net-tune.sh(开机自动应用)
- 管理页:批量删除、网络体检、下载区
- 隧道改 HTTP/2 + 双连接

文档
- 许可协议 / 安装前必读 / 安装后须知(作者:小麦子)
This commit is contained in:
xmz7891
2026-10-06 19:01:05 +08:00
commit b62ac865ea
3195 changed files with 203292 additions and 0 deletions
+140
View File
@@ -0,0 +1,140 @@
# -*- coding: utf-8 -*-
"""让测试跟上这一轮的行为改动。
1. 自检:改代码路径时把日志弄丢了,补回来。
2. 静默模式测试:现在"一台设备都没配对过时配对是开的"(自愈,用户报的 bug)。
要测"静默模式拒绝新配对",得先预置一台已配设备。
3. 端到端:爆破测试原本排在成功配对之后 —— 那时配对窗口已经关了,
测不到限速。要挪到成功配对之前。
"""
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote")
SERVER = ROOT / "windows" / "lanremote" / "server.py"
TESTS = ROOT / "_tests"
# ---------------- 1. 自检日志 ----------------
LOG_OLD = ''' return self._selfcheck_report(from_ip)'''
LOG_NEW = ''' note = self._selfcheck_report(from_ip)
first = note.splitlines()[0] if note else ""
self._log(f"[自检] 收到来自 {from_ip} 的自检请求,已生成诊断结论({first})")
return note'''
# ---------------- 2. test_silent_mode 预置已配设备 ----------------
SILENT_SEED_OLD = '''def seed_setup_done(data_dir):'''
SILENT_SEED_NEW = '''def seed_paired_device(data_dir):
"""预置一台已配设备。
现在的规则是:**一台设备都没配对过时,配对是开着的**
(这是修用户报的"设完码却连不上")。所以想测
"静默模式拒绝新配对",得先让电脑认为已经有设备配过了。
"""
import json as _json
data_dir = Path(data_dir)
data_dir.mkdir(parents=True, exist_ok=True)
(data_dir / "devices.json").write_text(
_json.dumps({"already-paired": {
"id": "already-paired", "name": "已配的手表",
"token": "seed-token", "last": 0}}, ensure_ascii=False),
encoding="utf-8")
def seed_setup_done(data_dir):'''
# ---------------- 3. test_e2e_features 爆破测试挪到最前 ----------------
E2E_MARK = ''' print()
print("六、★ 配对防爆破")'''
E2E_MOVE_OLD = ''' check("配对成功", reply.get("ok") is True, str(reply)[:120])
print()
print("二、★ 功能列表(这是之前完全失败的那一项)")'''
E2E_MOVE_NEW = ''' check("配对成功", reply.get("ok") is True, str(reply)[:120])
print()
print("一b、★ 配对防爆破(必须在成功配对之前测,"
"否则配对窗口已经关了)")
breaker = Client("127.0.0.1", PORT)
wrong = "000000" if code != "000000" else "111111"
limited = False
for i in range(12):
r = breaker.call({"cmd": "pair", "deviceId": f"brute-{i}",
"deviceName": "爆破", "code": wrong}, timeout=10)
if not r.get("ok") and "过多" in str(r.get("error", "")):
limited = True
print(f" 第 {i + 1} 次开始被限速")
break
check("连续错码会被限速", limited,
f"12 次都没触发限速,最后一次: {r}")
breaker.close()
print()
print("二、★ 功能列表(这是之前完全失败的那一项)")'''
def main() -> int:
ok = True
# 1.
text = SERVER.read_text(encoding="utf-8")
if LOG_OLD in text:
SERVER.write_text(text.replace(LOG_OLD, LOG_NEW, 1), encoding="utf-8")
print(" server: 自检日志已补回")
else:
print(" [跳过] server 自检日志 —— 锚点没找到")
ok = False
# 2.
path = TESTS / "test_silent_mode.py"
text = path.read_text(encoding="utf-8")
if "seed_paired_device" in text:
print(" test_silent_mode: 加过了")
elif SILENT_SEED_OLD in text:
text = text.replace(SILENT_SEED_OLD, SILENT_SEED_NEW, 1)
# 在 seed_setup_done(DATA) 之后也预置一台设备
if "seed_setup_done(DATA)" in text:
text = text.replace("seed_setup_done(DATA)",
"seed_setup_done(DATA)\n seed_paired_device(DATA)", 1)
path.write_text(text, encoding="utf-8")
print(" test_silent_mode: 已加预置设备")
else:
print(" [跳过] test_silent_mode —— 锚点没找到")
ok = False
# 3.
path = TESTS / "test_e2e_features.py"
text = path.read_text(encoding="utf-8")
if "一b、" in text:
print(" test_e2e_features: 挪过了")
elif E2E_MOVE_OLD in text:
text = text.replace(E2E_MOVE_OLD, E2E_MOVE_NEW, 1)
# 删掉后面那段旧的爆破测试
start = text.find(' print()\n print("六、★ 配对防爆破")')
if start > 0:
end = text.find(' print()\n print("七、', start)
if end > 0:
text = text[:start] + text[end:]
print(" test_e2e_features: 旧爆破测试已删")
path.write_text(text, encoding="utf-8")
print(" test_e2e_features: 爆破测试已挪到最前")
else:
print(" [跳过] test_e2e_features —— 锚点没找到")
ok = False
import ast
for p in (SERVER, TESTS / "test_silent_mode.py", TESTS / "test_e2e_features.py"):
try:
ast.parse(p.read_text(encoding="utf-8"))
except SyntaxError as exc:
print(f" {p.name}: 语法错误 {exc}")
ok = False
print(" 语法检查完成")
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())