Files
ykxmz/_build/deploy_and_test.py
T
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

64 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
"""一键:上传 relay -> 重启 -> 拿隧道地址和管理钥匙 -> 跑端到端测试。
把这一串固定下来,省得每次手工拼。
"""
from __future__ import annotations
import re
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(ROOT / "_build"))
from devssh import run, upload # noqa: E402
def main() -> int:
print("===== 1. 上传 relay.py =====")
upload(str(ROOT / "relay" / "relay.py"),
"/root/lanremote-relay/relay.py", 0o644)
print()
print("===== 2. 重启 relay + 隧道 =====")
_code, out, _err = run("bash /root/deploy_relay.sh", timeout=600, quiet=True)
url = ""
match = re.search(r"PUBLIC_URL=(\S+)", out)
if match:
url = match.group(1)
if not url:
print(" 拿不到隧道地址,部署输出:")
print(out[-1500:])
return 1
print(f" 隧道地址: {url}")
print()
print("===== 3. 拿管理钥匙 =====")
_code, key_out, _err = run("cat /root/lanremote-relay/data/admin_key.txt",
quiet=True)
admin_key = key_out.strip()
print(f" 管理钥匙: {admin_key}")
# 存起来,后面其它脚本要用
(ROOT / "_build" / "relay_info.json").write_text(
'{"url": "%s", "adminKey": "%s"}' % (url, admin_key), encoding="utf-8")
print()
print("===== 4. 端到端测试 =====")
result = subprocess.run(
[sys.executable, "-u", str(ROOT / "_tests" / "test_relay_e2e.py"),
url, admin_key],
capture_output=True, text=True, encoding="utf-8", errors="replace")
print(result.stdout)
if result.stderr.strip():
print("[stderr] " + result.stderr[-500:])
return result.returncode
if __name__ == "__main__":
sys.exit(main())