Files
socks-manager/config.py
T
Your Name aa8af6c2e0 feat: SOCKS5 代理管理系统 v1.0
Flask + SQLite + Bootstrap5 暗色主题
- 仪表盘: 在线/离线统计 + 最近代理 + 操作日志
- 代理 CRUD: 增删改 + 启用/禁用 + 单/批量健康检测(SOCKS5)
- 分组管理: 创建/删除/筛选
- 操作日志: 分页查询
- RESTful API + Web 界面
- 管理员登录认证 (SM_ADMIN_PASSWORD 环境变量)
2026-07-16 16:40:20 +08:00

59 lines
1.5 KiB
Python

import os
import logging
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
SECRET_KEY = os.environ.get("SM_SECRET_KEY", "change-me-in-production")
SQLALCHEMY_DATABASE_URI = os.environ.get(
"SM_DB_URI", f"sqlite:///{os.path.join(basedir, 'socks_manager.db')}"
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 管理后台认证(在 create_app 时读取,确保 env var 生效)
@staticmethod
def admin_user():
return os.environ.get("SM_ADMIN_USER", "admin")
@staticmethod
def admin_password():
return os.environ.get("SM_ADMIN_PASSWORD", "")
# 健康检测
HEALTH_CHECK_TIMEOUT = int(os.environ.get("SM_HEALTH_TIMEOUT", "10"))
HEALTH_CHECK_INTERVAL = int(os.environ.get("SM_HEALTH_INTERVAL", "300")) # 秒
LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", "INFO")
def create_app(config_class=Config):
from flask import Flask
app = Flask(__name__)
app.config.from_object(config_class)
# 日志
logging.basicConfig(
level=getattr(logging, app.config["LOG_LEVEL"]),
format="%(asctime)s [%(levelname)s] %(message)s",
)
from extensions import db
db.init_app(app)
from models import db as _db
with app.app_context():
_db.create_all()
# Blueprint 注册
from routes import main
from routes import api
from auth import bp as auth_bp
app.register_blueprint(auth_bp)
app.register_blueprint(main.bp)
app.register_blueprint(api.bp, url_prefix="/api")
return app