Files
socks-manager/config.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

59 lines
3.2 KiB
Python

import os
from datetime import timedelta
_basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
# ── Flask ──────────────────────────────────────────────────
SECRET_KEY = os.environ.get("SM_SECRET_KEY", "sm-dev-key-change-in-prod")
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = "Lax"
PERMANENT_SESSION_LIFETIME = timedelta(hours=8)
# ── 数据库 ─────────────────────────────────────────────────
SQLALCHEMY_DATABASE_URI = os.environ.get(
"SM_DB_URI", f"sqlite:///{os.path.join(_basedir, 'socks_manager.db')}"
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
# ── 管理后台 ───────────────────────────────────────────────
@staticmethod
def admin_user():
return os.environ.get("SM_ADMIN_USER", "admin")
@staticmethod
def admin_password():
return os.environ.get("SM_ADMIN_PASSWORD", "")
# ── SOCKS5 引擎 ───────────────────────────────────────────
SOFT_ENGINE = "builtin" # builtin | 3proxy
DEFAULT_LISTEN_HOST = "0.0.0.0"
DEFAULT_PORT = 1080
DEFAULT_TIMEOUT = 30 # 秒
MAX_INSTANCES = 20
# ── 流量与限速 (默认值) ────────────────────────────────────
DEFAULT_BANDWIDTH_DOWN = 0 # 下行默认 Mbps (0=不限)
DEFAULT_BANDWIDTH_UP = 0 # 上行默认 Mbps
DEFAULT_CONCURRENT = 10 # 单用户最大并发连接
DEFAULT_TOTAL_TRAFFIC = 0 # 总流量上限 MB (0=不限)
DEFAULT_MONTHLY_TRAFFIC = 0 # 月流量 MB
# ── 健康检测 ───────────────────────────────────────────────
HEALTH_TIMEOUT = 8 # 秒
HEALTH_CHECK_ALL_INTERVAL = 300 # 秒
# ── 备份 ───────────────────────────────────────────────────
BACKUP_DIR = os.environ.get("SM_BACKUP_DIR",
os.path.join(_basedir, "backups"))
BACKUP_KEEP = 10 # 保留份数
# ── 防爆破 ─────────────────────────────────────────────────
FAIL2BAN_MAX_ATTEMPTS = 10
FAIL2BAN_WINDOW = 600 # 秒
# ── Webhook ────────────────────────────────────────────────
WEBHOOK_URLS = os.environ.get("SM_WEBHOOK_URLS", "").split(",")
# ── 日志 ───────────────────────────────────────────────────
LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", "INFO")