2.4 KiB
2.4 KiB
2026-05-27 fmtTime Invalid Date修复 + install.sh venv健壮性 + batch install错误上报
变更摘要
- 修复6个页面的 fmtTime() 函数对带时区后缀(+00:00)的时间戳解析为 Invalid Date
- install.sh 创建 venv 后检测 activate 文件,缺失时自动安装 python3-venv 重试
- batch install API 异常时保留 server_name、检测 stdout 中 "Status: FAILED"、stderr 为空时返回提示信息
动机
- API 返回的 last_heartbeat 格式为
2026-05-26T16:22:14.444657+00:00,fmtTime() 无脑追加Z导致双重时区标记+00:00Z,JS Date 解析失败返回 Invalid Date - Debian 12 默认不带 python3-venv 包,
python3 -m venv创建目录但不生成 activate 脚本,source 报错且无明确提示 - 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) - 否:无数据库迁移
验证方式
- 浏览器打开 servers.html → 最后心跳列显示 "5月27日 00:52" 而非 "Invalid Date" ✅
- 在缺少 python3-venv 的 Debian 12 服务器运行 install.sh → 自动安装 python3-venv 后继续 ✅
- 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(本文件)