Files
Nexus/docs/changelog/2026-05-27-fmttime-venv-batchinstall-fix.md
2026-07-08 22:31:31 +08:00

2.4 KiB
Raw Permalink Blame History

2026-05-27 fmtTime Invalid Date修复 + install.sh venv健壮性 + batch install错误上报

变更摘要

  1. 修复6个页面的 fmtTime() 函数对带时区后缀(+00:00)的时间戳解析为 Invalid Date
  2. install.sh 创建 venv 后检测 activate 文件,缺失时自动安装 python3-venv 重试
  3. batch install API 异常时保留 server_name、检测 stdout 中 "Status: FAILED"、stderr 为空时返回提示信息

动机

  1. API 返回的 last_heartbeat 格式为 2026-05-26T16:22:14.444657+00:00fmtTime() 无脑追加 Z 导致双重时区标记 +00:00ZJS Date 解析失败返回 Invalid Date
  2. Debian 12 默认不带 python3-venv 包,python3 -m venv 创建目录但不生成 activate 脚本,source 报错且无明确提示
  3. batch install API 返回 success:false, stdout:"", error:"" 无具体错误信息,无法排查失败原因

涉及文件

前端(6个页面)

  • web/app/servers.html — fmtTime: 先 new Date(t),失败再 new Date(t+'Z')
  • web/app/index.html — 同上
  • web/app/credentials.html — 同上
  • web/app/push.html — 同上
  • web/app/retries.html — 同上
  • web/app/schedules.html — 同上

Agent 安装脚本

  • web/agent/install.sh — venv 创建后检测 activate 文件是否存在,不存在则 apt install python3-venv 后重试

后端

  • server/api/servers.py — batch install _install_one(): server_name 提前赋值、检测 "Status: FAILED"、stderr 空时返回提示、超时改为180s

需要迁移/重启

  • 是:需重启 Nexus 后端(supervisorctl restart nexus
  • 否:无数据库迁移

验证方式

  1. 浏览器打开 servers.html → 最后心跳列显示 "5月27日 00:52" 而非 "Invalid Date"
  2. 在缺少 python3-venv 的 Debian 12 服务器运行 install.sh → 自动安装 python3-venv 后继续
  3. batch install 失败时返回具体错误信息

审计8步

  • H1: install.sh apt-get 需 root — 正常(脚本以 root 运行)
  • H2: install.sh 检测 activate 而非 -d 目录 — 修复旧 bug
  • H3: servers.py shlex.quote 防注入 — 已有
  • H4: servers.py "Status: FAILED" 字符串匹配 — 无注入风险
  • H5: fmtTime 纯前端日期解析 — 无 XSS(用 esc() 函数)
  • DoD: 无明文密码/命令注入/SQL注入/静默吞错/硬编码

进度条

☑实现 ☑WSL验证 ☑审计8步 ☑部署 ☑健康检查 ☑浏览器验证 ☐changelog(本文件)