diff --git a/app/api/endpoints/site.py b/app/api/endpoints/site.py index 3c3bf1b7..8837a827 100644 --- a/app/api/endpoints/site.py +++ b/app/api/endpoints/site.py @@ -8,6 +8,7 @@ from app import schemas from app.chain.site import SiteChain from app.chain.torrents import TorrentsChain from app.core.event import EventManager +from app.core.plugin import PluginManager from app.core.security import verify_token from app.db import get_db from app.db.models import User @@ -351,6 +352,8 @@ def auth_site( return schemas.Response(success=False, message="请输入认证站点和认证参数") status, msg = SitesHelper().check_user(auth_info.site, auth_info.params) SystemConfigOper().set(SystemConfigKey.UserSiteAuthParams, auth_info.dict()) + PluginManager().init_config() + Scheduler().init_plugin_jobs() return schemas.Response(success=status, message=msg) diff --git a/app/scheduler.py b/app/scheduler.py index cb6acdde..73e11c95 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -82,10 +82,6 @@ class Scheduler(metaclass=Singleton): else: status, msg = SitesHelper().check_user() if status: - # 仅重试时,才需要初始化插件服务 - if self._auth_count > 0: - PluginManager().init_config() - self.init_plugin_jobs() self._auth_count = 0 logger.info(f"{msg} 用户认证成功") SchedulerChain().post_message( @@ -96,6 +92,9 @@ class Scheduler(metaclass=Singleton): link=settings.MP_DOMAIN('#/site') ) ) + PluginManager().init_config() + self.init_plugin_jobs() + else: self._auth_count += 1 logger.error(f"用户认证失败:{msg},共失败 {self._auth_count} 次") @@ -175,9 +174,6 @@ class Scheduler(metaclass=Singleton): # 停止定时服务 self.stop() - # 用户认证立即执行一次 - user_auth() - # 调试模式不启动定时服务 if settings.DEV: return diff --git a/app/startup/modules_initializer.py b/app/startup/modules_initializer.py index 624423b4..30c62c50 100644 --- a/app/startup/modules_initializer.py +++ b/app/startup/modules_initializer.py @@ -23,7 +23,9 @@ from app.helper.message import MessageHelper from app.scheduler import Scheduler from app.monitor import Monitor from app.schemas import Notification, NotificationType +from app.schemas.types import SystemConfigKey from app.db import close_database +from app.db.systemconfig_oper import SystemConfigOper from app.chain.command import CommandChain @@ -72,6 +74,19 @@ def clear_temp(): SystemUtils.clear(settings.CACHE_PATH / "images", days=7) +def user_auth(): + """ + 用户认证检查 + """ + if SitesHelper().auth_level >= 2: + return + auth_conf = SystemConfigOper().get(SystemConfigKey.UserSiteAuthParams) + if auth_conf: + SitesHelper().check_user(**auth_conf) + else: + SitesHelper().check_user() + + def check_auth(): """ 检查认证状态 @@ -128,6 +143,8 @@ def start_modules(_: FastAPI): SitesHelper() # 资源包检测 ResourceHelper() + # 用户认证 + user_auth() # 加载模块 ModuleManager() # 启动事件消费