Files
ykxmz/_build/fix_safety_switches.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

98 lines
4.4 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 -*-
"""设置窗口补上四个安全开关。
审计发现:allow_run / allow_power / allow_screen / allow_new_pairing 的注释
都写着"可在界面关闭",但设置对话框里根本没有这四项 ——
用户只能手改 settings.json 才能关掉"任意命令执行"(默认还是开着的)。
另外:pairing_enabled 只在启动时读一次,运行中改设置不生效,这里一并修。
"""
from __future__ import annotations
import sys
from pathlib import Path
UI = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\windows"
r"\lanremote\ui.py")
# 1. 在「自定义命令」之后插入四个开关
ANCHOR = ''' row_label("自定义命令", "一行一个,格式:显示名=命令。手表只能选这里登记过的")
txt_cmds = textbox(str(self.store.get("extra_commands") or "").replace(";", "\\n"))
'''
ADDITION = ''' row_label("自定义命令", "一行一个,格式:显示名=命令。手表只能选这里登记过的")
txt_cmds = textbox(str(self.store.get("extra_commands") or "").replace(";", "\\n"))
# ---- 安全开关(遥控能做什么的底线,默认全开)----
row_label("允许的操作", "关掉之后手表就做不了这项,改了立刻生效")
safety = tk.Frame(win, bg=BG)
safety.pack(fill="x", padx=16)
var_run = tk.BooleanVar(value=bool(self.store.get("allow_run", True)))
var_power = tk.BooleanVar(value=bool(self.store.get("allow_power", True)))
var_screen = tk.BooleanVar(value=bool(self.store.get("allow_screen", True)))
var_pair = tk.BooleanVar(value=bool(self.store.get("allow_new_pairing", True)))
for text, var in (("远程执行命令", var_run),
("关机 / 重启 / 锁屏", var_power),
("屏幕共享 / 截屏", var_screen),
("允许新设备配对", var_pair)):
check = tk.Checkbutton(safety, text=text, variable=var, bg=BG, fg=FG,
activebackground=BG, selectcolor=CARD,
font=FONT_SMALL, anchor="w", bd=0,
highlightthickness=0)
check.pack(side="left")
'''
# 2. 保存时写入,并立刻同步到运行中的服务
SAVE_OLD = ''' self.store.set("file_roots", join_lines(txt_roots))
self.store.set("extra_apps", join_lines(txt_apps))
self.store.set("extra_commands", join_lines(txt_cmds))
self.log(f"设置已保存(音色={chosen},语速={rate})")'''
SAVE_NEW = ''' self.store.set("file_roots", join_lines(txt_roots))
self.store.set("extra_apps", join_lines(txt_apps))
self.store.set("extra_commands", join_lines(txt_cmds))
self.store.set("allow_run", bool(var_run.get()))
self.store.set("allow_power", bool(var_power.get()))
self.store.set("allow_screen", bool(var_screen.get()))
self.store.set("allow_new_pairing", bool(var_pair.get()))
# 立刻生效:pairing_enabled 原本只在启动时读一次
if getattr(self, "server", None) is not None:
self.server.pairing_enabled = bool(var_pair.get())
off = [name for name, var in (("执行命令", var_run), ("电源操作", var_power),
("屏幕共享", var_screen), ("新配对", var_pair))
if not var.get()]
if off:
self.log(f"设置已保存;已关闭:{'、'.join(off)}")
else:
self.log(f"设置已保存(音色={chosen},语速={rate})")'''
def main() -> int:
text = UI.read_text(encoding="utf-8")
ok = True
for old, new, tag in ((ANCHOR, ADDITION, "四个安全开关"),
(SAVE_OLD, SAVE_NEW, "保存并同步")):
if old not in text:
print(f" [失败] {tag} 锚点没找到")
ok = False
else:
text = text.replace(old, new, 1)
print(f" {tag}: OK")
if ok:
UI.write_text(text, encoding="utf-8")
import ast
try:
ast.parse(UI.read_text(encoding="utf-8"))
print(" ui.py: 语法 OK")
except SyntaxError as exc:
print(f" ui.py: 语法错误 {exc}")
ok = False
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())