Commit Graph
3 Commits
Author SHA1 Message Date
lee f1fa6dca7c fix: 恢复心跳发送、断线重连、注册定时任务的完整实现
故障诊断结果:Agent启动后TCP连接成功,但连接断开后无法重连

根因:
- connectionTask()重连方法是空stub,连接断开后无法自动重连
- heartbeatTask()心跳逻辑被简化,只是本地计数不通过TCP发送
- registerTask()注册方法是空stub
- MultiTargetNettyClient没有断线检测和重连机制

修复内容:
- BusinessTasks.java: 恢复完整的heartbeatTask(心跳上报)、connectionTask(断线重连)、
  registerTask(注册)、policyTask(策略更新)、networkDetectTask(多网IP探测)、
  checkFrpcTask(FRPC保活)、upFrpcMsgTask(FRPC状态上报)方法
- 新增 NetBusinessService.java 接口(定时任务依赖)
- 新增 NetBusinessVO.java VO类
- 新增 NetworkInterfaceInfo.java VO类
- 新增 NetworkInterfaceUtil.java 工具类
- MsgEnum.java: 新增心跳上报、注册、多网IP探测枚举值
2026-07-22 17:15:10 +08:00
lee ff7cd12fd7 fix: 恢复1.20版SaaS连接核心代码,修复Agent无法连接SaaS服务器问题
问题根因:1.21代码优化时误删了SaaS连接核心组件
- 误删 MultiTargetNettyClient.java (Netty TCP客户端)
- 误删 ConnectionConfig.java (连接配置封装)
- 误改 AgentNettyConfig 配置前缀从 netty.server 改为 tcp.netty.charge
- 误删 AppInitializer 中的SaaS连接初始化逻辑
- 误删 AgentService 中的 connection() 等接口方法
- 误增 AgentNettyServer.java (1.20中不存在的服务端类)

修复内容(从1.20原版JAR反编译恢复):
- 恢复 MultiTargetNettyClient: Bootstrap.connect() 主动连接SaaS服务器
- 恢复 ConnectionConfig: 连接配置封装类
- 恢复 AgentNettyConfig: @ConfigurationProperties(prefix = "netty.server")
- 恢复 AppInitializer: CommandLineRunner.run() 调用 initConnection()
- 恢复 AgentService/AgentServiceImpl: connection()方法及全部业务接口
- 恢复 MachineFingerprint: 硬件指纹生成工具类
- 恢复 application-dev.yml: netty.server.host/port 配置
- 删除 AgentNettyServer.java (1.21错误新增)
- 删除旧 AgentNettyConfig.java (tcp.netty.charge 前缀)

部署验证:39.96.218.1 已成功连接SaaS服务器 120.211.95.173:6620
2026-07-22 15:50:03 +08:00
lee 546eef3372 feat(v1.21-beta): 代码安全审计与全面优化
基线: v1.20 (e58137c) | 分支: agent1.21bate

## P0 严重修复 (14项)
- 安全: 命令注入漏洞修复 (SpecificTimeTaskService)
- 安全: 路径穿越漏洞修复 (AgentEndpoint)
- 安全: 下载安全加固 (AdvancedAsyncDownloader)
- 数据: CPU avg1/avg5/avg15 赋值错误修复 (CPUServiceImpl)
- 数据: 磁盘读写字节/速率赋值反转修复 (DiskServiceImpl)
- 逻辑: updateTaskInterval 丢失原始任务修复 (DynamicTaskService)
- 并发: GlobalConfig 100+ 静态字段 volatile + 并发集合
- 性能: SessionManager O(n)->O(1) Channel反向映射
- 并发: SessionManager 序列号 AtomicInteger
- 并发: CompensatedTrigger CAS 竞态修复
- 泄漏: UDPListenHandler ByteBuf 内存泄漏修复
- NPE: BaseNettyServer stop() 空指针修复
- 线程: AsyncCommandExecutor 无界线程池改有界+守护线程
- 泄漏: AdvancedAsyncDownloader 连接和线程池资源释放

## P1 重要修复 (5项)
- NetServiceImpl: Process 资源泄漏 + 超时控制
- DockerServiceImpl: 数组越界保护 + 资源释放
- MemoryServiceImpl: 除零风险修复
- SystemServiceImpl: 除零风险修复 + 异常处理规范化

## P2 代码质量 (6项)
- 100+ System.out/err -> AssertLog 日志框架
- e.printStackTrace() -> 结构化日志
- InterruptedException 中断状态恢复
- BaseNettyConfig Boolean 包装类型改基本类型
- BaseException cause 构造函数修复
- 新增安全配置项 (命令白名单/HMAC/下载安全/握手认证)

## 新增安全模块
- security/AuthHandshakeHandler.java - Netty握手认证
- security/HmacSignVerifier.java - HMAC签名验证
- security/SecureCommandExecutor.java - 安全命令执行器
- security/SecureFileDownloader.java - 安全文件下载器
- security/SecurityProperties.java - 安全配置属性
- security/SystemCommandRunner.java - 系统命令运行器
- 对应单元测试 4个

版本更新: pom.xml 0.0.1-SNAPSHOT -> 1.21-beta
          application.yml 1.0 -> 1.21

涉及文件: 34个 (21 modified + 13 new)
代码变更: +1085/-868 lines
2026-07-22 12:58:52 +08:00