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
+83
View File
@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
"""随身 WiFi(Debian)远程执行小工具。
用法:
python _build/devssh.py "命令" # 跑一条命令
python _build/devssh.py --script 文件 # 跑一段脚本
"""
from __future__ import annotations
import sys
import time
from pathlib import Path
import paramiko
HOST = "192.168.10.105"
USER = "root"
PASSWORD = "1313144"
def run(command: str, timeout: int = 600, quiet: bool = False) -> tuple:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(HOST, username=USER, password=PASSWORD, timeout=15,
banner_timeout=20, auth_timeout=20,
look_for_keys=False, allow_agent=False)
try:
_stdin, stdout, stderr = client.exec_command(command, timeout=timeout)
out = stdout.read().decode("utf-8", "replace")
err = stderr.read().decode("utf-8", "replace")
code = stdout.channel.recv_exit_status()
if not quiet:
if out.strip():
print(out.rstrip())
if err.strip():
print("[stderr] " + err.rstrip())
return code, out, err
finally:
client.close()
def upload(local: str, remote: str, mode: int = 0o644) -> None:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(HOST, username=USER, password=PASSWORD, timeout=15,
look_for_keys=False, allow_agent=False)
try:
sftp = client.open_sftp()
sftp.put(local, remote)
sftp.chmod(remote, mode)
sftp.close()
print(f" 已上传 {Path(local).name} -> {remote}")
finally:
client.close()
def download(remote: str, local: str) -> None:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(HOST, username=USER, password=PASSWORD, timeout=15,
look_for_keys=False, allow_agent=False)
try:
sftp = client.open_sftp()
sftp.get(remote, local)
sftp.close()
print(f" 已下载 {remote} -> {local}")
finally:
client.close()
if __name__ == "__main__":
if len(sys.argv) < 2:
print(__doc__)
sys.exit(1)
if sys.argv[1] == "--script":
run(Path(sys.argv[2]).read_text(encoding="utf-8"), timeout=600)
else:
args = sys.argv[1:]
timeout = 600
if args and args[0] == '--timeout':
timeout = int(args[1])
args = args[2:]
run(" ".join(args), timeout=timeout)