|
|
@@ -0,0 +1,68 @@
|
|
|
+# 项目概述
|
|
|
+
|
|
|
+本项目是一个基于 FastAPI + Vue3 的代理池管理系统,主要用于通过订阅链接获取服务商提供的代理池数据,并通过 mihomo 工具启动本地代理池服务。系统支持对代理池进行增删改查操作,方便用户管理和使用代理服务器。
|
|
|
+
|
|
|
+## 核心功能
|
|
|
+
|
|
|
+### 1. 订阅管理
|
|
|
+- 用户可以通过 API 添加订阅链接。
|
|
|
+- 系统会自动解析订阅链接中的代理服务器信息,并将其存储到数据库中。
|
|
|
+
|
|
|
+### 2. 代理池管理
|
|
|
+- **随机获取代理**:通过 `/get` 接口可以随机获取一个代理,支持过滤仅返回支持 HTTPS 的代理。
|
|
|
+- **删除代理**:通过 `/delete` 接口可以删除指定的代理。
|
|
|
+- **添加代理**:通过 `/add` 接口可以手动添加新的代理。
|
|
|
+- **查看所有代理**:通过 `/all` 接口可以获取当前所有的代理列表。
|
|
|
+- **统计代理数量**:通过 `/count` 接口可以查看当前代理池中的代理数量。
|
|
|
+
|
|
|
+### 3. 本地代理池启动
|
|
|
+- 使用 mihomo 工具启动本地代理池服务,方便开发和测试。
|
|
|
+
|
|
|
+## 技术实现
|
|
|
+
|
|
|
+### 后端实现细节
|
|
|
+后端基于 FastAPI 框架开发,主要功能模块包括:
|
|
|
+
|
|
|
+1. **生命周期管理**:
|
|
|
+ - `lifespan(app: FastAPI)` 函数用于管理应用的启动和关闭流程,确保资源的正确初始化和释放。
|
|
|
+
|
|
|
+2. **健康检查**:
|
|
|
+ - `health_check()` 函数提供了一个健康检查接口,用于验证服务是否正常运行。
|
|
|
+
|
|
|
+3. **API 接口**:
|
|
|
+ - `root()` 函数定义了根路径接口,返回 API 的基本介绍。
|
|
|
+ - `get_random_proxy()` 函数实现了随机获取代理的功能,支持根据需求过滤代理类型。
|
|
|
+
|
|
|
+4. **Mihomo 相关路由**:
|
|
|
+ - `POST /mihomo/start`: 启动 Mihomo 代理。
|
|
|
+ - `POST /mihomo/start-each-provider`: 启动每个服务商的代理。
|
|
|
+ - `POST /mihomo/stop`: 停止指定的 Mihomo 代理。
|
|
|
+ - `GET /mihomo/status`: 获取当前运行的 Mihomo 状态。
|
|
|
+ - `GET /mihomo/reachability`: 检查代理的可达性。
|
|
|
+ - `POST /mihomo/reachability/start-all`: 启动所有代理的可达性检查。
|
|
|
+ - `GET /mihomo/controller-urls`: 获取控制器 URL 列表。
|
|
|
+ - `POST /mihomo/stop-all`: 停止所有 Mihomo 代理。
|
|
|
+
|
|
|
+5. **订阅相关路由**:
|
|
|
+ - `POST /subscriptions/add`: 添加订阅链接。
|
|
|
+ - `GET /subscriptions/list`: 列出所有订阅。
|
|
|
+ - `GET /proxies/list`: 列出所有代理。
|
|
|
+
|
|
|
+### 进程管理
|
|
|
+系统通过 `ProcessManager` 类管理子进程,主要功能包括:
|
|
|
+- **启动子进程**: `start_process(command: str, process_name: str)` 方法用于启动一个子进程并记录其 PID。
|
|
|
+- **停止子进程**: `stop_process(process_name: str)` 方法用于停止指定名称的子进程。
|
|
|
+- **停止所有子进程**: `stop_all_processes()` 方法用于停止所有子进程。
|
|
|
+
|
|
|
+### 数据库设计
|
|
|
+- 系统使用数据库存储代理池数据和订阅链接信息,确保数据的持久化和高效查询。
|
|
|
+
|
|
|
+## 当前状态
|
|
|
+
|
|
|
+- **后端**: 已完成
|
|
|
+- **前端**: 尚未开始
|
|
|
+
|
|
|
+## 后续计划
|
|
|
+
|
|
|
+- 完成前端开发
|
|
|
+- 进行整体测试和部署
|