joywayer
|
3fd2c89020
|
fix(vps-xray): 修复定时重启的四类静默失效并补齐安全不变式测试
Critical-1 timer 时区:[Timer] 段没有 TimeZone= 这个 key,systemd 只会记一条
"Unknown key name" 然后按系统本地时区解析 OnCalendar。VPS 出厂多为 UTC,
用户设「04:00 Asia/Shanghai」会在北京时间 12:00 触发且毫无提示。
改为把时区写进日历表达式本身:OnCalendar=*-*-* HH:MM:00 <TZ>(systemd >= 242)。
Critical-2 前导零:^[0-9]+$ 放行 08/09/010,该值原样写进 guard 的 DAYS=,
而 guard 里是算术展开——010 被当八进制解析成 8 天,08/09 直接报
"value too great for base",使间隔判断求值为假,落进重启分支变成每天重启。
校验通过后统一 $((10#$days)) 归一化。
Important-3 状态文件写入失败:mkdir 与写时间戳都不检查返回值,/var 写满或
只读时写入失败却照样重启,「先写时间戳」的保护完全失效,退化成每天硬重启且
无限持续。改为 fail-safe:写不进去就报错并跳过本轮。
update_env_field 的三处写入同样补上返回值检查,调用方改在条件位置。
Important-4 未来时间戳:RTC 错乱或 NTP 大幅向后校正时会写下未来的时间戳,
时钟校回后 now-last 恒为负,此后永远跳过且无自愈路径。与「内容非法按 0 处理」
同策略,读到 last > now 时按 0 处理。
Important-5 静默中止:configure_restart_timer 被 harden_system、main 一路裸调用,
set -e 下 systemctl enable 失败会让部署在「8/8 加固」之后无声退出——
start_service / save_env / print_result 全不执行,config.json 已换、防火墙已改,
但 xray 没重启、.env 没更新、链接没打印。三处 systemctl 全部改到条件位置,
enable 不再吞 stderr(规格本就要求靠 systemctl 报错暴露非法时区)。
Important-6 NEXT 语义:list-timers 的 NEXT 是 timer 的「下次唤醒」,每天一次,
不是下次重启时间。新增 print_next_restart,--restart 输出里直接算出并显示
「下次实际重启时间」,README 同步说明差异。
Important-7 安全不变式测试:configure_restart_timer 与 apply_restart_only 原本
零覆盖,「不重启 xray、不碰 vless 链接」这个最重要的承诺恰恰没有回归保护。
补上启用/关闭两个方向的断言,以及 .env 逐字段 diff 与 systemctl 调用日志断言。
Minor-9 README 补充取舍:完整部署的 systemctl restart xray 不更新状态文件。
Minor-11 save_env 注释「这两项」→「这几项」。
测试 61 → 101 项,全部通过。
|
2026-08-07 09:37:46 +08:00 |
|
joywayer
|
9f1e293d4c
|
feat(vps-xray): 新增 --restart 轻量入口
只改定时重启计划并立即生效,不重装 Xray、不重写配置、不重启服务,
与 --mode/--show/--redetect 互斥。
顺带修正非法参数以退出码 0 结束的问题。
|
2026-08-06 17:02:15 +08:00 |
|
joywayer
|
682b79852d
|
refactor(vps-xray): 完整部署改用 configure_restart_timer
harden_system 与 start_service 里的旧 DAILY_RESTART 分支删除,
save_env 改写三个新字段。
|
2026-08-06 16:49:57 +08:00 |
|
joywayer
|
d19d337bf2
|
feat(vps-xray): 生成 timer/service/guard 三个单元文件
timer 每天唤醒,N 天间隔判断交给 guard 脚本,
绕开 OnCalendar 无法表达任意 N 天间隔的限制。
|
2026-08-06 16:15:03 +08:00 |
|
joywayer
|
dfcaf7e4d0
|
fix(vps-xray): update_env_field 追加时处理缺尾换行的文件,防止字段黏连
|
2026-08-06 16:08:42 +08:00 |
|
joywayer
|
39b0aee2c9
|
feat(vps-xray): 新增 update_env_field 就地更新 .env 单个字段
|
2026-08-06 16:02:22 +08:00 |
|
joywayer
|
920774d7d7
|
fix(vps-xray): 添加过渡兼容赋值 DAILY_RESTART
harden_system / start_service / save_env 仍引用 DAILY_RESTART,
下游清理要到后续任务进行。本任务在 resolve_restart_config 之后
添加兼容赋值,确保 set -u 下脚本完整可运行。
|
2026-08-06 15:57:07 +08:00 |
|
joywayer
|
29236e8e1c
|
feat(vps-xray): 重启计划配置解析与旧字段迁移
新增 normalize_restart_time / resolve_restart_config,
XRAY_RESTART_EVERY_DAYS 缺失时才回退读 XRAY_DAILY_RESTART。
附单元测试,不需要 root 与 systemd。
|
2026-08-06 15:48:43 +08:00 |
|
joywayer
|
938df26cbb
|
www.apple.com 为伪装地址,前端警告消失
|
2026-08-06 13:02:46 +08:00 |
|
joywayer
|
5195986fc4
|
vps部署优化
|
2026-08-05 17:12:18 +08:00 |
|
joywayer
|
2afc2cade6
|
优化部署,增加lisa dmit
|
2026-08-05 09:51:12 +08:00 |
|
joywayer
|
353d3940a9
|
添加clash yaml
|
2026-06-24 20:29:06 +08:00 |
|
joywayer
|
80ba4b046c
|
优化vps部署
|
2026-06-24 18:33:11 +08:00 |
|
joywayer
|
97c6b99b58
|
增加重启机制
|
2026-04-24 14:25:18 +08:00 |
|
joywayer
|
18949f31ba
|
增加vps-xray部署相关脚本
|
2026-04-08 15:19:49 +08:00 |
|