Awuqing
|
5c896bb96c
|
修复: 后端审查发现的 5 项问题
根据 Spec + Code Quality 双审查修复:
1. BatchCreate 事务保护(node_service.go/node_repository.go)
原循环 Create 在 DB 约束失败时会残留半截数据。改为预先构造所有 Node
再走 repo.BatchCreate 单一事务,任一失败整体回滚。
2. Peek 语义与 Consume 对齐(agent_install_token_repository.go)
FindByToken 无条件返回任意记录,导致已消费/已过期的僵尸 token
可通过 compose 端点的 mode 检查但必然 Consume 失败,出现 410 假错。
新增 FindValidByToken,Peek 改用之。
3. MasterURL / AgentToken / AgentVersion 渲染前校验(installscript/renderer.go)
防止 YAML 注入(换行/引号逃逸 compose 配置)、shell 注入($(...))、
非法字符。加 TestRenderScriptRejects* 系列测试覆盖。
4. ipLimiter 无界增长修复(install_handler.go)
新增 gc 方法 + startGC 后台协程,每 window 周期清理过期 IP 条目。
RouterDependencies.Context 控制生命周期;app 传入 ctx,测试 t.Cleanup 取消。
5. CreateInstallToken 的 CreatedByID 从 JWT subject 解析(node_handler.go)
原硬编码 0 导致审计不可追溯。新增 resolveCurrentUserID helper,
借助 UserRepository 把 JWT subject(用户名)→ user.ID;失败退回 0。
|
2026-04-19 17:14:17 +08:00 |
|
Awuqing
|
8d52be23b0
|
功能: NodeService 新增 BatchCreate 与 RotateToken
|
2026-04-19 16:26:41 +08:00 |
|
Wu Qing
|
81c9c042d6
|
功能: 修复并实现多节点集群部署 (#38)
基础修复:
- 新增节点离线检测:每 15s 扫描,超 45s 未心跳的远程节点自动置离线
- 节点删除前检查关联任务,避免孤立备份任务
- BackupTaskRepository 新增 CountByNodeID/ListByNodeID
Master 端 Agent 协议:
- 新增 AgentCommand 模型与命令队列仓储(pending/dispatched/succeeded/failed/timeout)
- 新增 AgentService:任务下发、命令轮询、结果回收、超时扫描
- 新增专用 Agent HTTP API(X-Agent-Token 认证):
/api/agent/heartbeat
/api/agent/commands/poll
/api/agent/commands/:id/result
/api/agent/tasks/:id
/api/agent/records/:id
- BackupExecutionService 支持 node 路由:task.NodeID 指向远程节点时自动入队派发
Agent CLI(backupx agent 子命令):
- 配置:YAML 文件 / 环境变量 / CLI 参数,优先级 CLI > 文件 > 环境
- 心跳循环 + 命令轮询循环 + 优雅退出
- 本地复用 BackupRunner 与 storage registry 执行备份并直接上传
- 支持 run_task 和 list_dir 两种命令
远程目录浏览:
- NodeService 支持通过 Agent RPC 列出远程节点目录(15s 超时)
前端:
- NodesPage 添加节点后展示 Agent 启动命令和环境变量配置
文档:
- README 中英文重写"多节点集群"章节,含架构图、步骤、限制、CLI 参考
|
2026-04-17 12:29:08 +08:00 |
|
Wu Qing
|
970eb154e1
|
优化: 多模块功能修复与体验改进 (#34)
1. 保留策略清理后自动删除空文件夹(新增 StorageDirCleaner 接口)
2. 备份任务删除时清理远端文件但保留备份记录
3. 节点管理修复:本机 IP/版本检测、Heartbeat OS/Arch 修正、新增编辑功能
4. 审计日志规范化:统一格式、丰富详情、节点操作增加审计记录
5. 系统设置移除一键更新操作,仅保留版本检查
6. Rclone 配置项分层展示(必填 + 高级可选折叠)
7. DirectoryPicker 目录选择器样式优化
|
2026-04-05 11:23:46 +08:00 |
|
Awuqing
|
eadd3f8961
|
first commit
|
2026-03-17 13:29:09 +08:00 |
|