Files
ykxmz/_build/rename_tools.py
xmz7891 b62ac865ea 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 + 双连接

文档
- 许可协议 / 安装前必读 / 安装后须知(作者:小麦子)
2026-10-06 19:01:05 +08:00

128 lines
3.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""整理交付目录里的工具脚本(按用户要求)。
放行防火墙_以管理员运行.bat -> fxfhq.bat
工具箱.bat -> 删掉
网络自检.bat -> wlzj.bat
一键修复防火墙.bat -> xffhq.bat
关键改动:**不再依赖系统装的 Python**。
wlzj.bat 调 ykxmz.exe --netcheck(自检逻辑已经打进 EXE)
xffhq.bat 纯 netsh,本来就不需要 Python
fxfhq.bat 纯 netsh,本来就不需要 Python
网络自检.py 删掉(逻辑已移植到 lanremote/netcheck.py,随 EXE 打包)
"""
from __future__ import annotations
import shutil
import sys
from pathlib import Path
ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote")
TOOLS = ROOT / "tools"
# ---- wlzj.bat:网络自检,调 EXE,不需要 Python ----
WLZJ = r"""@echo off
chcp 936 >nul
title LAN Remote - Network Self Check
cd /d "%~dp0"
rem 找被控端 exe(脚本可能在 exe 同目录,也可能在子目录)
set "EXE=%~dp0ykxmz.exe"
if not exist "%EXE%" set "EXE=%~dp0..\ykxmz.exe"
if not exist "%EXE%" set "EXE=%~dp0ykxmz\ykxmz.exe"
if not exist "%EXE%" (
echo.
echo 找不到 ykxmz.exe
echo 请把这个脚本放在被控端目录里运行。
echo.
pause
exit /b 1
)
rem 自检逻辑已经打进 EXE,不需要系统装 Python。
rem --netcheck 会自己开一个控制台窗口并监听 90 秒。
start "" "%EXE%" --netcheck 90
exit /b 0
"""
# ---- fxfhq.bat:运行时也会由 firewall.py 重新生成一份,这里放一份备用 ----
FXFHQ = r"""@echo off
chcp 936 >nul
title LAN Remote - Allow Through Firewall
echo.
echo 这个文件由 ykxmz.exe 自动生成/覆盖。
echo 直接双击它以管理员身份运行即可放行防火墙。
echo.
echo 如果内容为空,请先运行一次 ykxmz.exe。
echo.
pause
"""
NEW_FILES = {
"wlzj.bat": WLZJ,
"fxfhq.bat": FXFHQ,
}
# 要删掉的
OLD_FILES = [
"工具箱.bat",
"网络自检.bat",
"网络自检.py",
]
def write_crlf(path: Path, text: str) -> None:
"""bat 必须是 CRLF,裸 LF 会让 cmd 误读。"""
path.write_bytes(text.replace("\n", "\r\n").encode("gbk", errors="replace"))
def main() -> int:
TOOLS.mkdir(parents=True, exist_ok=True)
# 1. 一键修复防火墙.bat -> xffhq.bat(内容原样搬,只是改名)
old_fix = TOOLS / "一键修复防火墙.bat"
new_fix = TOOLS / "xffhq.bat"
if old_fix.is_file():
data = old_fix.read_bytes()
# 确保是 CRLF
data = data.replace(b"\r\n", b"\n").replace(b"\n", b"\r\n")
new_fix.write_bytes(data)
print(f" 一键修复防火墙.bat -> xffhq.bat({len(data)} 字节)")
old_fix.unlink()
elif new_fix.is_file():
print(" xffhq.bat 已存在")
else:
print(" [警告] 找不到 一键修复防火墙.bat")
# 2. 新脚本
for name, content in NEW_FILES.items():
path = TOOLS / name
write_crlf(path, content)
print(f" 已写入 {name}")
# 3. 删旧的
for name in OLD_FILES:
path = TOOLS / name
if path.is_file():
path.unlink()
print(f" 已删除 {name}")
# 4. 残留的旧名字(放行防火墙_以管理员运行.bat 是运行时生成的)
for name in ("放行防火墙_以管理员运行.bat",):
path = TOOLS / name
if path.is_file():
path.unlink()
print(f" 已删除 {name}")
print()
print(" tools/ 现在的内容:")
for item in sorted(TOOLS.iterdir()):
print(f" {item.name} ({item.stat().st_size} 字节)")
return 0
if __name__ == "__main__":
sys.exit(main())