Files
Your Name 00d9750662 fix: 首次启动自动设置默认密码
新服务器无 .env 文件时,get_or_set_password() 自动:
1. 设置默认密码 admin123
2. 写入 .env 文件
3. 控制台打印提示

解决新服务器无法登录的问题。
2026-07-16 19:06:37 +08:00

67 lines
1.8 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():
# 确保密码已设置(首次启动自动设置默认密码)
from auth import get_or_set_password
get_or_set_password()
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