# 项目概述 本项目是一个基于 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()` 方法用于停止所有子进程。 ### 数据库设计 - 系统使用数据库存储代理池数据和订阅链接信息,确保数据的持久化和高效查询。 ## 当前状态 - **后端**: 已完成 - **前端**: 尚未开始 ## 后续计划 - 完成前端开发 - 进行整体测试和部署