# app-update **Repository Path**: oyhx/app-update ## Basic Information - **Project Name**: app-update - **Description**: 这是一个专为第三方程序设计的自动更新系统,通过配置化的方式实现文件的自动替换和版本管理。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-12 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 应用同步管理平台 一个专为第三方程序设计的应用同步管理平台,支持Web管理界面,通过配置化的方式实现文件的自动同步、版本管理和增量更新。 ## 🌟 核心功能 ### 文件同步管理 - **智能增量同步**:仅下载并替换有差异的文件 - **版本备份回退**:同步前自动创建备份,支持版本回退 - **文件清单生成**:自动生成目录下所有文件的MD5校验清单 - **实时进度监控**:显示同步进度和状态 - **异常处理恢复**:同步失败时自动回退到上一个稳定版本 ### Web管理界面 - **任务管理**:可视化创建和配置同步任务 - **实时日志**:WebSocket实时推送任务执行日志 - **状态监控**:实时监控任务执行状态和进度 - **历史记录**:查看任务执行历史和结果 - **REST API**:完整的API支持前后端分离 ### 安全认证 - **JWT认证**:基于Token的用户认证系统 - **AES加密**:敏感数据加密存储 - **路径安全**:限制文件操作只能在指定路径下进行 - **权限控制**:敏感操作需要认证 ## 🚀 快速开始 ### 系统要求 - Java 8 或以上版本 - Maven 3.6+ (仅编译时需要) - 现代Web浏览器(推荐Chrome、Firefox、Safari最新版本) ### 编译和运行 ```bash # 编译项目 mvn clean package -DskipTests # 启动应用 java -jar target/app-sync-1.0-SNAPSHOT.jar # 或使用启动脚本 ./start.sh build ``` ### 访问应用 启动成功后访问:http://localhost:8019 **默认认证信息:** - 用户名:`admin` - 密码:`admin` ## 📋 环境配置 ### 配置文件 - `application.yml`:主配置文件(包含开发/生产通用配置) ### 环境变量 ```bash export SERVER_PORT=8020 export APP_SYNC_TASK_STORAGE_BASE_PATH="/custom/tasks/path" export AUTH_JWT_SECRET="your-custom-secret" ``` ## 🔧 配置说明 ### 主要配置文件 - `application.yml`:主配置文件,包含服务端口、任务存储、安全路径、认证等配置 ### 核心配置项 - **服务端口**:默认8019 - **任务存储路径**:`C:/AppData/Tasks` - **安全路径**:限制文件操作只能在配置的允许路径下进行 - **日志文件**:`./logs/debug.log` - **JWT配置**:密钥、访问令牌30分钟有效期、刷新令牌7天有效期 - **AES加密**:16字符密钥和初始化向量 ## 📁 项目结构 ``` app-update/ ├── src/main/java/cn/okay/appsync/ │ ├── AppSyncApplication.java # 主程序入口 │ ├── auth/ # 认证模块 │ │ ├── AuthService.java # 认证服务 │ │ ├── JwtUtil.java # JWT工具类 │ │ ├── AESUtil.java # AES加密工具 │ │ ├── AuthProperties.java # 认证配置属性 │ │ ├── config/ # 认证配置 │ │ ├── dto/ # 认证DTO │ │ └── interceptor/ # JWT拦截器 │ ├── config/ # 系统配置 │ │ ├── AppSyncProperties.java # 主配置属性 │ │ └── WebConfig.java # Web配置 │ ├── manager/ # 核心管理器 │ │ ├── UpdateManager.java # 更新管理器 │ │ ├── BackupManager.java # 备份管理器 │ │ ├── DownloadManager.java # 下载管理器 │ │ ├── FileManifestManager.java # 文件清单管理器 │ │ └── RollbackManager.java # 回滚管理器 │ ├── model/ # 数据模型 │ │ ├── FileInfo.java # 文件信息 │ │ ├── FileManifest.java # 文件清单 │ │ ├── UpdateConfig.java # 更新配置 │ │ ├── UpdateProgress.java # 更新进度 │ │ └── UpdateResult.java # 更新结果 │ ├── service/ # 核心业务服务 │ │ ├── UpdateService.java # 更新服务 │ │ ├── BackupService.java # 备份服务 │ │ ├── DownloadService.java # 下载服务 │ │ ├── FileManifestService.java # 文件清单服务 │ │ ├── RollbackService.java # 回滚服务 │ │ └── ImportExportService.java # 导入导出服务 │ ├── task/ # 任务管理模块 │ │ ├── model/ # 任务数据模型 │ │ ├── service/ # 任务服务 │ │ └── storage/ # 任务存储服务 │ ├── log/ # 日志模块 │ │ ├── model/ # 日志数据模型 │ │ └── service/ # 日志服务 │ ├── security/ # 安全模块 │ │ └── PathSecurityValidator.java # 路径安全验证器 │ ├── util/ # 工具类 │ │ └── PathUtils.java # 路径工具 │ ├── utils/ # 工具类 │ │ └── FileUtils.java # 文件工具 │ └── web/ # Web层 │ ├── controller/ # REST API控制器 │ │ ├── TaskController.java # 任务管理API │ │ ├── GroupController.java # 分组管理API │ │ ├── AuthController.java # 认证API │ │ ├── LogController.java # 日志API │ │ ├── SystemController.java # 系统API │ │ ├── HomeController.java # 首页控制器 │ │ └── ImportExportController.java # 导入导出API │ ├── dto/ # 数据传输对象 │ └── websocket/ # WebSocket处理 ├── src/main/resources/ │ └── application.yml # 主配置文件 ├── DOCS/ # 项目文档 ├── start.sh # 启动脚本 └── pom.xml # Maven配置文件 ``` ## 🛠️ 开发指南 ### 开发命令 ```bash # 运行应用程序(开发模式) mvn spring-boot:run # 运行测试 mvn test # 生成测试覆盖率报告 mvn jacoco:report ``` ### API文档 详细的API接口文档请参考:[DOCS/API接口文档.md](DOCS/API接口文档.md) ### WebSocket连接 ``` WebSocket地址:ws://localhost:8019/ws/logs ``` ## 🔍 更新服务器要求 更新服务器需要提供以下文件结构: ``` update-server/ ├── version.txt # 最新版本号 ├── manifest.json # 文件清单 └── files/ # 更新文件目录 ``` ### manifest.json格式 ```json { "version": "2.1.0", "targetDirectory": "./target-app", "generateTime": "2024-01-01T12:00:00.000Z", "files": [ { "filePath": "file1.txt", "fileName": "file1.txt", "md5Hash": "abc123...", "fileSize": 1024, "lastModified": 1640995200000, "fileType": "FILE" } ], "manifestHash": "def456..." } ``` ## 📚 相关文档 - [API接口文档](DOCS/API接口文档.md) - 完整的REST API和WebSocket接口说明 - [API响应格式规范](DOCS/API响应格式规范.md) - API统一响应格式说明 - [API测试文档](DOCS/API测试文档.md) - API接口测试示例 - [快速启动指南](DOCS/快速启动指南.md) - 一键启动和常用命令 - [后端启动说明](DOCS/后端启动说明.md) - 详细的后端部署和配置说明 - [前端开发指南](DOCS/前端开发指南.md) - 完整的前端开发文档 - [前端快速集成指南](DOCS/前端快速集成指南.md) - 前端快速接入说明 - [任务管理系统开发文档](DOCS/任务管理系统开发文档.md) - 任务管理系统架构设计 - [详细开发文档](DOCS/详细开发文档.md) - 完整的开发文档 - [产品需求文档](DOCS/产品需求文档.md) - 产品需求说明 - [分组基础路径功能说明](DOCS/分组基础路径功能说明.md) - 分组基础路径配置说明 - [安全路径配置使用说明](DOCS/安全路径配置使用说明.md) - 安全路径配置指南 - [JWT认证系统集成文档](DOCS/JWT认证系统集成文档.md) - JWT认证集成说明 - [AES加密登录实现文档](DOCS/AES加密登录实现文档.md) - AES加密登录实现细节 - [README-JWT认证](DOCS/README-JWT认证.md) - JWT认证快速入门 - [文件清单工具](DOCS/bat/README.md) - 文件清单生成工具说明 ## 🔧 故障排除 ### 常见问题 1. **端口占用**:修改`server.port`配置或使用其他端口 2. **权限问题**:检查安全路径配置和目录权限 3. **网络连接失败**:检查更新服务器URL和网络连接 4. **磁盘空间不足**:检查备份目录空间,定期清理旧备份 ### 调试模式 ```bash # 启用DEBUG模式 java -jar target/app-sync-1.0-SNAPSHOT.jar --logging.level.cn.okay.appsync=DEBUG ``` ## 🛡️ 技术栈 - **后端框架**:Spring Boot 2.6.3 - **工具库**:Hutool 5.8.31 - **WebSocket**:Spring Boot WebSocket - **HTTP客户端**:Apache HttpClient 4.5.13 - **JSON处理**:Jackson 2.13.1 - **构建工具**:Maven - **日志框架**:SLF4J + Logback - **安全认证**:JWT + AES加密 ## 📄 许可证 本项目采用 MIT 许可证。 ## 🔄 更新日志 ### v0.0.6 - 功能优化与导入导出 - ✅ **移除脚本执行功能**:由于安全风险,已从项目中移除 - ✅ **新增列表展示**:任务列表页面增加列表方式展示 - ✅ **新增导入导出功能**:支持任务和分组数据的导入导出 ### v0.0.5 - 脚本执行功能(已移除) - ~~**脚本执行功能**~~:支持脚本文件的执行和结果返回(因安全问题已移除) ### v0.0.4 - WebSocket连接修复 - ✅ **修复ws连接失败问题**:修复WebSocket连接不稳定的问题 - ✅ **修复跨域请求**:正确处理跨域请求 ### v0.0.3 - 认证安全增强 - ✅ **新增用户认证系统**:基于JWT的Token认证机制 - ✅ **AES加密支持**:敏感数据AES加密存储,支持加密登录 - ✅ **路径安全验证**:限制文件操作在配置的安全路径范围内 - ✅ **统一接口返回格式**:规范化API响应格式 ### v0.0.2 - 分组管理功能 - ✅ **任务分组管理**:支持任务的分组创建和管理 - ✅ **分组基础路径**:每个分组支持独立的基础路径配置 ### v0.0.1 - 基础功能 - ✅ **Web管理界面**:现代化的任务管理界面 - ✅ **文件同步核心**:智能增量同步和版本管理 - ✅ **任务管理系统**:任务的创建、执行、监控 - ✅ **实时日志推送**:WebSocket实时日志推送 - ✅ **备份回退机制**:文件备份和版本回退功能 - ✅ **REST API接口**:完整的API支持前后端分离 ## 🤝 贡献指南 欢迎提交Issue和Pull Request来帮助改进项目。在提交代码前,请确保: 1. 遵循项目的代码规范 2. 添加必要的测试用例 3. 更新相关文档 4. 确保所有测试通过 --- **注意**:本项目目前处于开发阶段,生产环境使用请谨慎评估。