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
+135
View File
@@ -0,0 +1,135 @@
# -*- coding: utf-8 -*-
"""把所有"名字"里的中文去掉,统一成 ykxmz / ASCII。
用户要求:"名字不要带中文,就 ykxmz"
要改的"名字"(不含文档正文,正文还是中文,那是内容不是名字):
1. 版本信息里的 FileDescription: "ykxmz 被控端" -> "ykxmz"
2. 交付包顶层目录: LanRemote-跨网络版-1.4.0 -> ykxmz-1.4.0
3. 压缩包文件名: LanRemote-跨网络版-1.4.0.zip -> ykxmz-1.4.0.zip
4. 三个子目录: 1-被控端(电脑) -> 1-agent
2-服务器端(随身WiFi) -> 2-server
3-控制端(手表) -> 3-watch
5. 说明文件名: 先看这个.txt -> README.txt
使用说明.txt -> README-<部分>.txt
文档**正文**保持中文 —— 用户是中文用户,正文翻译成英文反而没法看。
这里只动"名字"。
"""
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote")
VERSION = ROOT / "windows" / "version_info.txt"
PKG = ROOT / "_build" / "package_remote.py"
DIR_NAMES = ("1-agent", "2-server", "3-watch")
# ---------- 1. 版本信息 ----------
VER_OLD = 'StringStruct("FileDescription", "ykxmz 被控端")'
VER_NEW = 'StringStruct("FileDescription", "ykxmz")'
# ---------- 2. 打包脚本 ----------
PKG_RULES = [
# 顶层目录名和压缩包名
('NAME = f"LanRemote-跨网络版-{VERSION}"', 'NAME = f"ykxmz-{VERSION}"'),
('f"LanRemote-跨网络版-{VERSION}.zip"', 'f"ykxmz-{VERSION}.zip"'),
('dist / f"{NAME}.zip"', 'dist / f"{NAME}.zip"'),
# 子目录名
('agent_dir = build / "1-被控端(电脑)"', 'agent_dir = build / "1-agent"'),
('relay_dir = build / "2-服务器端(随身WiFi)"',
'relay_dir = build / "2-server"'),
('watch_dir = build / "3-控制端(手表)"', 'watch_dir = build / "3-watch"'),
# 说明文件名(正文不动)
('write_readme(agent_dir / "使用说明.txt", AGENT_README)',
'write_readme(agent_dir / "README-agent.txt", AGENT_README)'),
('write_readme(relay_dir / "使用说明.txt", RELAY_README)',
'write_readme(relay_dir / "README-server.txt", RELAY_README)'),
('write_readme(watch_dir / "使用说明.txt"',
'write_readme(watch_dir / "README-watch.txt"'),
('write_readme(build / "先看这个.txt", TOP_README)',
'write_readme(build / "README.txt", TOP_README)'),
# 校验里的文件名
('agent_dir / "使用说明.txt"', 'agent_dir / "README-agent.txt"'),
('relay_dir / "使用说明.txt"', 'relay_dir / "README-server.txt"'),
('watch_dir / "使用说明.txt"', 'watch_dir / "README-watch.txt"'),
('build / "先看这个.txt"', 'build / "README.txt"'),
# 顶层说明里提到的路径名
('├── 先看这个.txt ← 三步上手说明',
'├── README.txt ← 三步上手说明'),
('├── 1-被控端(电脑)/ 998 个文件',
'├── 1-agent/ 998 个文件'),
('├── 2-服务器端(随身WiFi)/ 4 个文件',
'├── 2-server/ 4 个文件'),
('└── 3-控制端(手表)',
'└── 3-watch'),
]
def main() -> int:
ok = True
# ---- 版本信息 ----
text = VERSION.read_text(encoding="utf-8")
if VER_OLD in text:
text = text.replace(VER_OLD, VER_NEW, 1)
VERSION.write_text(text, encoding="utf-8", newline="\n")
print(" version_info.txt: FileDescription -> ykxmz(去掉中文)")
elif VER_NEW in text:
print(" version_info.txt: 已经是纯 ykxmz")
else:
print(" [警告] version_info.txt 里找不到 FileDescription")
# ---- 打包脚本 ----
text = PKG.read_text(encoding="utf-8")
changed = 0
for old, new in PKG_RULES:
if old in text and old != new:
text = text.replace(old, new)
changed += 1
if changed:
PKG.write_text(text, encoding="utf-8", newline="\n")
print(f" package_remote.py: 改了 {changed} 类名字")
else:
print(" package_remote.py: 没变化(可能已改过)")
# ---- 语法 ----
import ast
try:
ast.parse(PKG.read_text(encoding="utf-8"))
print(" package_remote.py 语法 OK")
except SyntaxError as exc:
print(f" package_remote.py 语法错误: {exc}")
ok = False
# ---- 复核:还有没有中文名字 ----
print()
print(" 复核 —— 打包脚本里还剩哪些含中文的字符串(应以文档正文为主):")
text = PKG.read_text(encoding="utf-8")
import re
name_like = []
for match in re.finditer(r'"([^"\n]*[\u4e00-\u9fff][^"\n]*)"', text):
value = match.group(1)
# 只关心"看起来像文件名/目录名"的
looks_like_name = any(
token in value for token in (".txt", ".zip", "/", "\\"))
if looks_like_name and len(value) < 40:
name_like.append(value)
if name_like:
for item in sorted(set(name_like)):
print(f" 还有: {item}")
else:
print(" 没有(文件名都已经是 ASCII)")
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())