Files
config-man/README.md
2026-04-15 13:05:45 +08:00

213 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Config-Man CLI 工具
## 项目概述
Config-Man 是一个Python CLI工具用于管理存储在对象存储中的加密静态资源配置文件。该工具支持多版本管理通过Cloudflare CDN进行分发主要用于游戏应用的配置管理。
### 项目目标
- 简化多版本配置文件的查看和管理
- 支持版本升级策略(建议更新和强制更新)
- 确保配置文件的加密存储和CDN缓存同步
- 提供直观的配置对比功能
## 系统架构
### 存储架构
```
对象存储服务器
├── ab/
│ ├── 0_29/
│ │ ├── androidconfig.json (加密)
│ │ └── iosconfig.json (加密)
│ ├── 0_30/
│ │ ├── androidconfig.json (加密)
│ │ └── iosconfig.json (加密)
│ └── 1_00/
│ ├── androidconfig.json (加密)
│ └── iosconfig.json (加密)
```
### 技术栈
- **开发语言**: Python 3.13+
- **CLI框架**: Click 或 Typer
- **存储同步**: rclone
- **CDN服务**: Cloudflare
- **文件加密**: AES-256
- **配置格式**: JSON
## 功能说明
### 功能1: 查看配置文件
对比显示对象存储和CDN中的配置内容支持Android和iOS平台。
```bash
config-man view --version <版本号>
```
**参数说明**:
- `--version`: 版本号,格式为 0.29, 0.30, 0.31 等
**功能特性**:
- 同时显示Android和iOS平台的配置文件
- 对比对象存储中的内容和CDN中的内容
- 使用表格格式漂亮地展示配置差异
- 支持JSON格式化输出
### 功能2: 建议更新
在目标版本的配置文件中添加 `Ver_New` 属性,提示用户有新版本可用。
```bash
config-man suggest-update --platform <平台> --target-version <目标版本> --update-version <更新版本>
```
**参数说明**:
- `--platform`: 平台类型,支持 android 或 ios
- `--target-version`: 目标版本号,如 0.29
- `--update-version`: 更新版本号,如 0.30
- `--storage-path`: 对象存储路径前缀(覆盖配置文件)
- `--cdn-url`: CDN基础URL覆盖配置文件
- `--mock`: 使用模拟环境进行测试
**功能特性**:
- 在目标版本配置中添加 `Ver_New` 属性
- `Ver_New` 的值设为更新版本的 `Ver` 属性值
- 自动加密并上传到对象存储
- 自动刷新CDN缓存
**配置变更示例**:
```json
// 修改前
{
"Ver": "0.29.1abc123",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
// 修改后
{
"Ver": "0.29.1abc123",
"Ver_New": "0.30.1def456",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
```
**使用示例**:
```bash
# 基本用法
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
# 指定存储路径和CDN URL
config-man suggest-update --platform ios --target-version 0.29 --update-version 0.30 --storage-path custom/path --cdn-url https://custom.cdn.com
# 使用模拟环境测试
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30 --mock
```
### 功能3: 强制更新
直接更新目标版本的 `Ver` 属性,强制用户升级到新版本。
```bash
config-man force-update --platform <平台> --target-version <目标版本> --update-version <更新版本>
```
**参数说明**:
- `--platform`: 平台类型,支持 android 或 ios
- `--target-version`: 目标版本号,如 0.29
- `--update-version`: 更新版本号,如 0.30
## 配置文件结构
### 配置项说明
```json
{
"EventApiURL": "https://n3backend.azurewebsites.net/",
"Ver": "0.28.2ece920695",
"PlayFabTitle": "B066F",
"Google_Play_URL": "https://play.google.com/store/apps/details?id=com.arkgame.ft",
"APP_Store_URL": "https://apps.apple.com/us/app/id6505145935",
"HeartBeat": "60",
"RTMPid": "80000586",
"RTMServerEndpoint": "rtm-intl-frontgate.ilivedata.com:13321",
"RTMHmacSecret": "57047697437f4f2c97a835e8d9a53358",
"FuncUrl": "https://leaderboardcreate.azurewebsites.net",
"FuncKey": "R5kU45fNBRd52Eqp3tEqfpZqrbFw53uSSEo7wraUSqIfAzFuRmLm_w=="
}
```
### 配置项分类
- **API端点**: EventApiURL, FuncUrl
- **版本信息**: Ver, Ver_New
- **应用商店链接**: Google_Play_URL, APP_Store_URL
- **实时通信**: RTMPid, RTMServerEndpoint, RTMHmacSecret
- **功能配置**: PlayFabTitle, HeartBeat, FuncKey
## 技术要求
### 安全要求
- 配置文件在对象存储中加密存储
- 支持AES-256加密算法
- 加密密钥安全管理
- 操作日志记录
### 性能要求
- 配置文件查看响应时间 < 3秒
- 配置文件修改响应时间 < 5秒
- CDN缓存刷新响应时间 < 10秒
### 兼容性要求
- 支持Python 3.13+
- 支持Windows、macOS、Linux
- 支持rclone命令行工具
## 安装和使用
### 安装依赖
```bash
pip install -r requirements.txt
```
### 配置环境
```bash
# 配置rclone
rclone config
# 配置Cloudflare CDN可选
export CLOUDFLARE_API_TOKEN=your_api_token
export CLOUDFLARE_ZONE_ID=your_zone_id
```
### 使用示例
```bash
# 查看配置
config-man view --version 0.30
# 建议更新自动刷新CDN缓存
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
# 强制更新
config-man force-update --platform ios --target-version 0.29 --update-version 0.30
```
### Cloudflare CDN 配置
Config-Man 支持 Cloudflare CDN 缓存自动刷新。详细设置请参考:[Cloudflare CDN 设置指南](docs/cloudflare_setup.md)
## 错误处理
### 常见错误场景
- 版本号不存在
- 平台类型错误
- 网络连接失败
- 文件加密/解密失败
- CDN刷新失败
### 错误处理策略
- 提供清晰的错误信息
- 支持重试机制
- 记录详细的操作日志
- 提供回滚功能