Files
socks-manager/app.py
T
Your Name 558bd8153f feat: 重构为 SOCKS5 代理管理平台 v2.0
架构:
- engine/server.py: asyncio SOCKS5 服务器引擎(含隧道/认证/限速)
- engine/instances.py: 多实例管理器(独立事件循环/热启动/热停止)
- services/user_service.py: 用户认证/流量统计/IP白名单/防爆破
- services/stats_service.py: 实时监控/流量趋势/连接追踪
- services/backup_service.py: 数据库备份与恢复
- api/v1.py: 完整 RESTful API
- web/routes.py: Web 管理面板(暗色 Bootstrap 5 主题)

功能覆盖:
 多实例 SOCKS5 管理(创建/启动/停止/重启/热加载)
 用户认证(无认证/账号密码/流量上限/限速/并发限制)
 IP 白名单/黑名单/防爆破
 实时仪表盘(CPU/内存/网络/活跃连接)
 流量统计(30天趋势图/用户排名/实例统计)
 活跃连接追踪
 审计日志(事件/用户/IP 筛选)
 数据库备份与恢复
 管理员密码保护
 16 项功能测试全部通过
2026-07-16 17:31:53 +08:00

63 lines
1.7 KiB
Python

"""Flask 应用工厂。"""
import os
import logging
from flask import Flask
from config import Config
from database import db
from models import Instance # 触发表创建
# ── 全局服务 ───────────────────────────────────────────────────
from engine.instances import InstanceManager
from services.user_service import UserService
from services.backup_service import set_backup_dir
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
app.config["SECRET_KEY"] = os.environ.get(
"SM_SECRET_KEY", "sm-dev-key-change-in-prod"
)
app.config["SESSION_COOKIE_HTTPONLY"] = True
app.config["SESSION_COOKIE_SAMESITE"] = "Lax"
# 日志
logging.basicConfig(
level=getattr(logging, Config.LOG_LEVEL),
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)
# 数据库
db.init_app(app)
app.db = db
# 全局服务注册
with app.app_context():
db.create_all()
# 初始化全局 db.app
from database import db as _db
_db.app = app
# 用户服务
user_service = UserService()
user_service.set_db_app(app)
app.user_service = user_service
# 实例管理器
instance_manager = InstanceManager(user_service)
app.instance_manager = instance_manager
# 备份目录
set_backup_dir(Config.BACKUP_DIR)
# 注册蓝图
from auth import bp as auth_bp
from web.routes import bp as web_bp
from api.v1 import bp as api_bp
app.register_blueprint(auth_bp)
app.register_blueprint(web_bp)
app.register_blueprint(api_bp, url_prefix="/api")
return app