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
+96
View File
@@ -0,0 +1,96 @@
# -*- coding: utf-8 -*-
"""把「多中转地址」写进被控端说明。
用户的实际场景:电脑和随身 WiFi 往往在同一个局域网。
那就没必要绕隧道 —— 直连局域网中转快得多、地址还不会变。
"""
from __future__ import annotations
import sys
from pathlib import Path
PKG = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\_build"
r"\package_remote.py")
OLD = '''【跨网络:告诉它中转地址】
这一版支持不在同一网络也能控制,但需要先架好服务器端。
在命令行里执行一次:
LanRemote-Agent.exe --relay https://relay.你的域名
它会当场测一遍能不能连上,连得上就记住了。
看看当前状态:
LanRemote-Agent.exe --relay-status
关掉中转(只走局域网):
LanRemote-Agent.exe --relay ""'''
NEW = '''【跨网络:告诉它中转地址】
支持**多个地址**,用分号隔开,按顺序尝试,第一个通的就用它。
推荐这样配(局域网优先,断了自动切隧道):
LanRemote-Agent.exe --relay "192.168.2.156:8080;relay.xxmxxs.top"
为什么局域网优先?
* 快:局域网几十毫秒,绕隧道要 600 毫秒左右
* 稳:不依赖隧道,隧道抽风也不影响
* 地址永远不变:不用管隧道地址变来变去
只走隧道也行:
LanRemote-Agent.exe --relay https://relay.xxmxxs.top
地址**不用写 http:// 或 https://**,程序会自己判断:
192.168.x.x / 10.x.x.x / *.local -> 按 http 连(局域网是明文)
域名 -> 按 https 连
看看当前状态(会显示用了哪个地址、有几个候选):
LanRemote-Agent.exe --relay-status
关掉中转(只走局域网直连):
LanRemote-Agent.exe --relay ""'''
DOC_OLD = '''【忘了中转地址?】
如果随身 WiFi 在你身边(同一个网络),浏览器打开:
http://<随身WiFi的IP>:8080/url
它会告诉你当前的公网地址。'''
DOC_NEW = '''【忘了中转地址?】
如果随身 WiFi 在你身边(同一个网络),浏览器打开:
http://<随身WiFi的IP>:8080/url
它会告诉你当前的公网地址(纯文本,不用登录)。
小技巧:把局域网地址也填进 --relay,电脑在家里就走局域网,
完全不用管隧道地址变没变:
LanRemote-Agent.exe --relay "192.168.2.156:8080;relay.xxmxxs.top"'''
def main() -> int:
text = PKG.read_text(encoding="utf-8")
ok = True
for old, new, tag in ((OLD, NEW, "跨网络一节"),
(DOC_OLD, DOC_NEW, "忘了地址一节")):
if old in text:
text = text.replace(old, new, 1)
print(f" {tag}: 已更新")
else:
print(f" [跳过] {tag} —— 锚点没找到")
ok = False
PKG.write_text(text, encoding="utf-8", newline="\n")
import ast
try:
ast.parse(text)
print(" 语法 OK")
except SyntaxError as exc:
print(f" 语法错误: {exc}")
ok = False
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())