# SOCKS Manager — SOCKS5 代理管理平台 内建 asyncio SOCKS5 服务器的完整代理管理平台,一个 Python 进程即可运行。 ## 架构 ``` ┌──────────────────────────────────────────────┐ │ Web 管理面板 (Flask + Bootstrap 5 暗色主题) │ ├──────────────────────────────────────────────┤ │ RESTful API (/api/*) │ ├────────────┬──────────────┬──────────────────┤ │ engine/ │ services/ │ │ │ └server.py │ └user_service│ 数据: SQLite │ │ asyncio │ 流量/认证 │ socks_manager.db│ │ SOCKS5 │ └stats_ │ │ │ 服务器 │ 监控/趋势 │ │ │ └instances │ └backup_ │ │ │ 多实例 │ 备份恢复 │ │ └────────────┴──────────────┴──────────────────┘ ``` ## 功能覆盖 | 需求 | 实现 | |------|------| | 多实例管理 | 每个实例独立事件循环,支持创建/启动/停止/重启 | | 基础参数 | 监听地址(IPv4/IPv6)、端口、超时可视化配置 | | 底层引擎 | 内建 asyncio SOCKS5 服务器(RFC 1928/1929) | | 配置热重载 | 修改参数后重启实例生效,不中断 Web 面板 | | 多身份认证 | 无认证 / 账号密码认证 | | 流量控制 | 总流量上限、月流量上限、超额自动停机 | | 速度与并发 | 上下行带宽限制(Mbps)、最大并发连接数 | | IP 白名单/黑名单 | 用户级逗号分隔配置 | | 账号生命周期 | 生效时间、过期时间、一键封禁/解封 | | 大盘控制台 | CPU/内存/网络吞吐量/活跃连接实时图表 | | 实时连接追踪 | 源IP/目标域名/协议/持续时间,手动断开 | | 流量统计报表 | 30 天折线/柱状图(Chart.js) | | 详细审计日志 | 按事件/用户/IP 筛选,分页查询 | | 级联代理 | 连接建立时自动代理至目标(可扩展 upstream) | | 负载均衡 | 多实例配置后按端口轮询 | | 管理员认证 | 环境变量 `SM_ADMIN_PASSWORD` 保护 | | 自动备份 | 一键备份 SQLite,按份数清理 | | RESTful API | 全部管理功能通过 `/api/` 暴露 | ## 快速开始 ```bash cd /root/socks-manager # 安装依赖 pip install -r requirements.txt --break-system-packages # 设置管理员密码 export SM_ADMIN_PASSWORD=*** # 启动 python3 run.py ``` 访问 `http://你的IP:5000`,用户名 `admin`,密码为环境变量值。 ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `SM_ADMIN_USER` | `admin` | 管理员用户名 | | `SM_ADMIN_PASSWORD` | `""` | 管理员密码(必须设置) | | `SM_DB_URI` | `sqlite:///socks_manager.db` | 数据库连接串 | | `SM_PORT` | `5000` | Web 面板端口 | | `SM_HOST` | `0.0.0.0` | 监听地址 | | `SM_BACKUP_DIR` | `./backups/` | 备份目录 | | `SM_LOG_LEVEL` | `INFO` | 日志级别 | ## 核心代码结构 ``` ├── app.py # Flask 应用工厂 ├── config.py # 配置 ├── auth.py # 登录认证 ├── models.py # SQLAlchemy 数据模型 ├── database.py # 数据库初始化 ├── run.py # 启动入口 │ ├── engine/ │ ├── server.py # asyncio SOCKS5 服务器(核心引擎) │ └── instances.py # 多实例管理器 │ ├── services/ │ ├── user_service.py # 用户管理/认证/流量/防爆破 │ ├── stats_service.py# 监控/统计/趋势 │ └── backup_service.py# 备份与恢复 │ ├── api/ │ └── v1.py # RESTful API(实例/用户/日志/备份) │ ├── web/ │ └── routes.py # Web 管理面板路由 │ └── templates/ # Jinja2 模板(暗色 Bootstrap 5) ├── base.html # 布局(侧边栏+导航+全局样式) ├── dashboard.html # 仪表盘(实时图表) ├── instances.html # 代理实例管理 ├── users.html # 用户管理 ├── stats.html # 流量统计 ├── connections.html# 活跃连接 ├── logs.html # 审计日志 └── system.html # 系统管理 ``` ## API 参考 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/dashboard` | 仪表盘汇总 | | GET/POST | `/api/instances` | 实例列表/创建 | | PUT/DELETE | `/api/instances/` | 更新/删除实例 | | POST | `/api/instances//start` | 启动实例 | | POST | `/api/instances//stop` | 停止实例 | | GET/POST | `/api/users` | 用户列表/创建 | | PUT/DELETE | `/api/users/` | 更新/删除用户 | | GET | `/api/logs` | 审计日志(支持筛选) | | GET/POST | `/api/backups` | 备份列表/创建 | | GET | `/api/stats/system` | 实时系统指标 | | GET | `/api/stats/connections` | 活跃连接 | ## 生产建议 - 使用 gunicorn/uwsgi 替代内置开发服务器 - 前置 Nginx 反向代理 + Let's Encrypt SSL - 定期备份 `socks_manager.db` - 配置 `SM_LOG_LEVEL=WARN` 减少日志量