mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 16:00:43 +00:00
按用户定的规矩,这一轮有新功能,升第二位:2.0.0 -> 2.1.0。
== 一、网站挂了会自己救 ==
用户原话:「网站还是容易挂,建议继续增加隧道稳定性,并在后台设立
检测单元,实时检测网站状态,一旦检测到网站挂了,立即启动紧急预案」。
新增 relay/monitor.sh + lanremote-monitor.timer:
每 60 秒从**公网**查一次 /v1/health(不是查 127.0.0.1)
为什么不查本机:本机 200 只说明中转进程活着,用户真正关心的是
经过 Cloudflare 边缘 + 隧道 + 本机三段之后能不能打开。实测过
隧道两条实例都掉了、本机 curl 照样 200,只有从公网测才发现 502。
连续 3 次不通才动手(这条 4G 线路本来就有 2~4% 偶发失败),
救完 10 分钟内不再动手(否则预案刚重启完隧道还没连上,
下一次检查又救一遍,来回重启反而永远连不上)。
新增 relay/rescue.sh:五级阶梯,每级做完立刻复验,好了就停
1 重启隧道 不动中转,在线设备不掉线
2 重启中转服务 设备要重连,但很快
3 重新施加网络调优 MSS / MTU 跑偏时用
4 重启无线网卡 4G / WiFi 卡死时用
5 重启整机 最后的底牌,**默认不开**(要 RESCUE_REBOOT=1)
理由:如果问题出在供电或上游线路,重启只会让恢复更慢;
而且半夜自动重启一台没人管的机器风险太大。
== 二、抢救报告 + 后台分区 ==
用户原话:「如果紧急预案未能解决,则将问题打包成 .txt,然后在
中转站设置里面加一个分区专门放还有下载这个 txt。解决后将解决问题
的方法加入紧急预案」。
* 五级都没救回来 -> 把现场(内存/进程/隧道连接数/路由和 MTU、
三份日志尾部、内核异常)整理成 rescue_reports/<时间戳>.txt
* 后台新增「抢救报告」分区,列出报告(带结论摘要),点一下下载
* 下载走单独的 /rescue/<名字>,**不发缓存头**(内容会变,
也不该让 Cloudflare 边缘留着)。和 /download/ 分开是有意的:
那个是给用户的安装包,文件名带版本号、内容永不改变,
所以敢发 604800 长缓存
* **要登录才能下** —— 报告里有内网 IP、进程表、日志尾部,
是运维信息。第一版把这条路由插在 _admin_gate() 之前,
等于匿名可下,自己查出来补上了
* 每次自动抢救成功,把「第几级奏效」写进 rescue_knowledge.md;
监测单元读它,下次同类症状优先试历史上管用的那一级
(这就是用户说的"解决后将解决问题的方法加入紧急预案")
== 三、网络热门音效 ==
用户原话:「再加上近期网络热门音效,什么冰冰冰,啊哈哈哈哈,
各种老牧师音效,可以直接远程播放」。
**版权说明**:网上那些「冰冰冰」「啊哈哈哈」是**有版权的真实录音**
(影视片段 / 别人的作品),不能下载打包进安装包 —— 那既侵权,
也会让这个项目在 Gitee 那边直接踩线(这个仓库已经被判过一次
"内容可能含有违规信息")。
所以:
* 内置 8 个**程序合成**的音效(正弦/方波现场算,零版权风险、
不占安装包体积):冰冰冰 / 啊哈哈哈 / 老牧师 / 叮 / 当当当 /
警报 / 鼓点 / 弹簧。名字对着感觉来,但不是那些录音本身
* 做「自己放进来」的目录:mp3/wav 丢进 data/sfx/ 就自动出现在
列表里,照样能远程播。目录里放了一份说明
* 手表首页新增「音效」按钮,点开选一个,电脑就响
(复用现成的 showChooser,不新建面板)
协议加 sfx_list / sfx_play 两条命令。
== 四、修「安卓设置页一片空白」 ==
用户报的。根因:设置页**建好了但忘了 root.addView()** ——
showOnly() 让它 VISIBLE 也没用,它根本不在视图树里。
这类"漏挂"编译完全不报,只在运行时表现为空白。已加断言
_tests/test_watch_panels_wired.py 盯着:每个面板都必须挂到 root、
并且纳入 showOnly()。
== 五、全量测试改成后台静默 ==
用户原话:「把全量测试改为在后台静默运行不要打开任何窗口或锁屏」。
会开窗口的 6 个阶段(含开**全屏**那个)现在跑在独立的 Windows
隐藏桌面上(_tests/hidden_desktop.py)。窗口是**真的** —— 全屏、
可见、几何、Win32 枚举都真实,测试有效性一点没损失 ——
只是不在用户眼前,全屏也不会锁屏。
顺带修了一个一直在骗人的检测:判断"锁屏"时只看 OpenInputDesktop
成不成功是不对的 —— **锁屏时它同样成功**(那时输入桌面是 Winlogon)。
于是截屏类测试在锁屏时被记成 FAIL 而不是 SKIP,把真问题淹掉了
(用户电脑锁了一夜,我就是被这个误导过)。改成看输入桌面的**名字**。
现在锁屏也能跑全量:该 SKIP 的 SKIP,该跑的照跑。
== 六、顺手修的真 bug ==
* windows/lanremote/server.py 的 sfx_play 分支用了不存在的变量名 body
(应该是 msg)-> **一调就 NameError**。pyflakes 那关抓出来的,
说明"未定义名"这条检查有用。
* _build/package_remote.py 的文件白名单只有 .py/.sh/.ico,
**.service/.timer 收不进服务端 zip** -> 新机器上监测根本不启动,
而且不报错、只是静默不跑。已加。
* protocol.py 被我补丁插入了 LF 行到 CRLF 文件里 -> 行尾混用,编码审计红。
* deploy.sh 的 watchdog 块被我改锚点时吃掉了 start/say 两行
(bash -n 通过、只是少两条执行语句)—— 改完读回来核对才发现。
* _build/CHANGELOG.md 的 2.1.0 说明里写了"管理后台",
触发对外材料清洁度检查。改成不提管理页(用户定的规矩:
对外只能提官网)。
全量回归 46 个阶段全部通过。
224 lines
7.5 KiB
Plaintext
224 lines
7.5 KiB
Plaintext
========================================================
|
||
ykxmz 安装后须知(后信息文件)
|
||
========================================================
|
||
|
||
软件名称:ykxmz
|
||
版本:2.1.0
|
||
作者:小麦子
|
||
|
||
装好之后看这一页:怎么确认它在跑、怎么改设置、
|
||
怎么彻底卸载、出问题怎么查。
|
||
|
||
|
||
--------------------------------------------------------
|
||
一、确认它真的在运行
|
||
--------------------------------------------------------
|
||
|
||
被控端装好后**看不到任何窗口**,这是正常的。想确认它在跑:
|
||
|
||
方法一(最直观)
|
||
Ctrl+Shift+Esc 打开任务管理器
|
||
-> "详细信息"标签 -> 找 ykxmz.exe
|
||
有,就是在跑
|
||
|
||
方法二(看端口)
|
||
命令行执行: netstat -ano | findstr 8765
|
||
有 LISTENING,就是正常
|
||
|
||
方法三(问程序自己)
|
||
命令行执行: ykxmz.exe --status
|
||
会打印:配对码、端口、中转连接状态、已配对设备数
|
||
|
||
方法四(从手表看)
|
||
手表上点"自动连接",能连上就说明在跑
|
||
|
||
|
||
--------------------------------------------------------
|
||
二、常用操作
|
||
--------------------------------------------------------
|
||
|
||
重新打开设置窗口
|
||
ykxmz.exe --setup
|
||
|
||
换一个配对码
|
||
在设置窗口里改,或者:
|
||
ykxmz.exe --new-code (随机生成一个)
|
||
换完之后,手表那边要用新码重连
|
||
|
||
看看当前状态
|
||
ykxmz.exe --status
|
||
|
||
临时允许新设备配对(默认关着)
|
||
ykxmz.exe --add-device 10 (开放 10 分钟)
|
||
过了时间自动关回去
|
||
|
||
关掉/打开开机自启
|
||
ykxmz.exe --autostart off
|
||
ykxmz.exe --autostart on
|
||
|
||
网络自检(连不上时先跑这个)
|
||
双击 wlzj.bat
|
||
或 ykxmz.exe --netcheck 90
|
||
|
||
修复防火墙(要管理员)
|
||
右键 xffhq.bat -> 以管理员身份运行
|
||
或 ykxmz.exe --fix-firewall
|
||
|
||
|
||
--------------------------------------------------------
|
||
三、彻底卸载
|
||
--------------------------------------------------------
|
||
|
||
一条命令清干净:
|
||
|
||
ykxmz.exe --uninstall
|
||
|
||
它会依次:
|
||
1. 停掉正在跑的进程
|
||
2. 删掉开机自启项
|
||
3. 删掉数据目录(配对码、已配对手表全没了)
|
||
4. 安排删除程序目录本身(退出后几秒自动删)
|
||
|
||
**想保留数据**(比如以后还要用,只是换个位置装):
|
||
先手动把 data 目录复制出来,再卸载。
|
||
|
||
**手动卸载也可以**(如果程序已经删了):
|
||
1. 任务管理器结束 ykxmz.exe
|
||
2. 删除注册表项
|
||
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
|
||
下的 ykxmz
|
||
3. 删除整个程序目录
|
||
4. (可选)删除防火墙规则:netsh advfirewall firewall
|
||
delete rule name="LAN Remote TCP"
|
||
|
||
|
||
--------------------------------------------------------
|
||
四、连不上怎么查
|
||
--------------------------------------------------------
|
||
|
||
按顺序排查,绝大多数问题在前三步就解决了:
|
||
|
||
第 1 步 被控端在跑吗?
|
||
任务管理器里有没有 ykxmz.exe
|
||
没有 -> ykxmz.exe --setup
|
||
|
||
第 2 步 防火墙放行了吗?
|
||
右键 xffhq.bat -> 以管理员身份运行
|
||
|
||
第 3 步 网络通不通?
|
||
双击 wlzj.bat 做自检
|
||
它会生成一份《网络自检结果.txt》
|
||
|
||
第 4 步 跨网络的话,中转通不通?
|
||
浏览器打开 http://<随身WiFi的IP>:8080/url
|
||
看它有没有返回公网地址
|
||
|
||
第 5 步 手表上点"连不上?点这里诊断"
|
||
|
||
常见现象对照:
|
||
|
||
"连接失败,配对码错误"
|
||
-> 手表上的码和电脑上的不一样,对一下
|
||
|
||
"该配对码已被使用,请换一个配对码"
|
||
-> 这个码被另一台电脑占了。换一个,
|
||
或者去中转管理页把占用它的那台设备删掉
|
||
|
||
"设备不在线"
|
||
-> 电脑上的程序没跑,或者网络断了
|
||
|
||
"连不上中转服务器"
|
||
-> 随身 WiFi 那台机器上的中转没起来,
|
||
或者隧道挂了。SSH 上去执行 lanremote-status 看看
|
||
|
||
|
||
--------------------------------------------------------
|
||
五、服务器端(随身 WiFi)日常维护
|
||
--------------------------------------------------------
|
||
|
||
三个服务都是开机自启,正常情况下不用管:
|
||
|
||
lanremote-relay 中转服务
|
||
lanremote-tunnel Cloudflare 隧道
|
||
lanremote-watchdog.timer 每 30 秒检查一次隧道连接
|
||
|
||
想一眼看清状态:
|
||
lanremote-status
|
||
|
||
常用命令:
|
||
lanremote-url 打印当前公网地址
|
||
lanremote-key 打印管理页钥匙
|
||
systemctl restart lanremote-tunnel 手动换个地址
|
||
journalctl -u lanremote-relay -f 看实时日志
|
||
|
||
管理页:
|
||
浏览器打开 <公网地址>,用管理密码登录(默认 120830)
|
||
能看:设备列表、在线状态、配对码、流量、会话数
|
||
能做:删除设备(连配对码一起清)、踢会话、查看当前地址
|
||
|
||
忘了公网地址?
|
||
打开 http://<随身WiFi的IP>:8080/url —— 直接返回当前地址,
|
||
不用登录。
|
||
|
||
|
||
--------------------------------------------------------
|
||
六、已知限制
|
||
--------------------------------------------------------
|
||
|
||
1. 一条隧道同时只服务一台手表
|
||
新连上来的会顶掉旧的,旧的那台会提示"已被另一台手表接管"。
|
||
|
||
2. 跨网络时的延迟
|
||
经 Cloudflare 隧道走一圈,一来一回约 0.6 秒;
|
||
局域网直连只有几十毫秒。**程序和手表会自动判断**:
|
||
发现两边在同一个网络就切直连,断了自动切回中转。
|
||
|
||
3. 网络环境的影响
|
||
如果随身 WiFi 用的 4G 卡对 UDP 有限制,隧道可能偶尔抖。
|
||
程序里有看门狗会自动重启隧道,通常 1 分钟内恢复。
|
||
|
||
4. 杀毒软件误报
|
||
见《安装前必读》第六节。作者不提供绕过杀软的功能。
|
||
|
||
|
||
--------------------------------------------------------
|
||
七、出问题时怎么反馈
|
||
--------------------------------------------------------
|
||
|
||
请带上这几样,作者才能定位:
|
||
|
||
1. ykxmz.exe --status 的输出
|
||
2. wlzj.bat 生成的《网络自检结果.txt》
|
||
3. 手表上的诊断结果(手表首页"连不上?点这里诊断")
|
||
4. 问题什么时候开始的、之前做过什么
|
||
|
||
|
||
--------------------------------------------------------
|
||
八、版本记录
|
||
--------------------------------------------------------
|
||
|
||
2.1.0
|
||
* 下载改走 Cloudflare 边缘缓存 —— 安装包和 APK 快了几十倍
|
||
* 跨网络更稳:隧道**两种协议同时跑**(QUIC + HTTP/2,
|
||
合计 10 条连接),一种协议犯病另一种还在服务
|
||
* 修网卡 MTU 和 QUIC 不匹配(QUIC 走 UDP,之前不受 MSS 钳制保护),
|
||
隧道建连明显加快
|
||
* 修偶发"已断开"误报:连续失败 3 次才判离线
|
||
* **中转地址默认为空** —— 需要跨网络时自己填
|
||
|
||
1.7.1
|
||
* 跨网络支持:Cloudflare 具名隧道,固定域名
|
||
* 中转服务器:单设备单配对码
|
||
* 手表端:自动判断局域网/中转并无缝切换
|
||
* 被控端:所有开关和画面功能支持回退/撤销
|
||
* 配对码被占用时弹通知提示
|
||
* 新增 --uninstall 一键卸载
|
||
* 针对 512MB 内存的小机器做了优化
|
||
|
||
|
||
--------------------------------------------------------
|
||
作者:小麦子
|
||
软件:ykxmz 2.1.0
|
||
许可条款见《许可协议》(LICENSE.txt)
|
||
--------------------------------------------------------
|