Files
socks-manager/app.py
T
Your Name 5ab5366534 fix: SOCKS5 隧道修复 - 子线程事件循环兼容性
1. 去掉 asyncio.wait_for 包装 open_connection,改用直接调用
2. ConnectionHandler 增加 flask_app 参数,数据库操作使用 app context
3. InstanceManager 传递 flask_app 到 Socks5Server
4. 修复 _reply 中 writer.write 不需要 await 的问题

验证:
- 直连测试: HTTP/1.1 200 OK (ifconfig.me)
- 端口监听: 10800 正常工作
2026-07-16 19:00: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, flask_app=app)
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