暫無描述

mrh fcf6d08bd0 新增 readme.md 10 月之前
.vscode e2a1300758 新增 python 搜索环境变量在 vscode 10 月之前
backend fcf6d08bd0 新增 readme.md 10 月之前
.clinerules ce0cf2ce2f 完成单个订阅到数据库 10 月之前
.clinerules-code ce0cf2ce2f 完成单个订阅到数据库 10 月之前
.gitignore ce0cf2ce2f 完成单个订阅到数据库 10 月之前
CONVENTIONS.md 09b8f2b3ed 完成 client 启动和随机获取代理 10 月之前
README.md fcf6d08bd0 新增 readme.md 10 月之前

README.md

项目概述

本项目是一个基于 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() 方法用于停止所有子进程。

数据库设计

  • 系统使用数据库存储代理池数据和订阅链接信息,确保数据的持久化和高效查询。

当前状态

  • 后端: 已完成
  • 前端: 尚未开始

后续计划

  • 完成前端开发
  • 进行整体测试和部署