Files
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

65 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
"""把重做后的设置窗口截个图,方便看效果。"""
from __future__ import annotations
import sys
import tempfile
import time
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(ROOT / "windows"))
OUT = ROOT / "_build" / "ui_preview.png"
def main() -> int:
from lanremote.config import Store
from lanremote.ui import SetupWindow
store = Store(Path(tempfile.mkdtemp(prefix="ui_shot_")))
window = SetupWindow(store)
def ready(win):
# 等界面画完
win.root.update_idletasks()
win.root.update()
time.sleep(0.6)
win.root.update()
try:
from PIL import ImageGrab
x = win.root.winfo_rootx()
y = win.root.winfo_rooty()
w = win.root.winfo_width()
h = win.root.winfo_height()
# 窗口阴影/边框留一点边
shot = ImageGrab.grab(bbox=(x - 2, y - 2, x + w + 2, y + h + 2))
shot.save(OUT)
print(f" 截图: {OUT} {shot.size[0]}x{shot.size[1]}")
except Exception as exc: # noqa: BLE001
print(f" 截图失败: {exc}")
# 顺手打印一下界面上的元素
def walk(widget, depth=0):
for child in widget.winfo_children():
text = ""
try:
text = str(child.cget("text"))
except Exception: # noqa: BLE001
pass
if text.strip():
print(" " + " " * depth + f"{child.winfo_class()}: {text[:44]}")
walk(child, depth + 1)
print(" 界面元素:")
walk(win.root)
win._cancel()
window.show(on_ready=ready)
return 0
if __name__ == "__main__":
sys.exit(main())