bugfix:修复sqlite部分场景下锁竞争问题;新增插件恶意触发配置文件 (#2144)

* bugfix:修复sqlite部分场景下锁竞争问题;新增插件恶意触发配置文件

* 文件没同步完
This commit is contained in:
Copaan
2026-06-24 09:11:03 +08:00
committed by GitHub
parent 73cbe2a609
commit f4d2342693
39 changed files with 1577 additions and 829 deletions
+18
View File
@@ -12,11 +12,15 @@ import ujson as json
from zhenxun.configs.config import Config
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.services.db_context import with_db_timeout
from zhenxun.services.message_load import is_db_unhealthy
from .base_model import SystemFolderSize, SystemStatus, User
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
DB_BUSY_MESSAGE = "数据库繁忙,请稍后再试"
WEBUI_DB_TIMEOUT = 3.0
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/login")
@@ -28,6 +32,20 @@ if token_file.exists():
token_data = json.load(open(token_file, encoding="utf8"))
async def webui_db_call(coro, operation: str):
if is_db_unhealthy():
close = getattr(coro, "close", None)
if callable(close):
close()
raise TimeoutError(DB_BUSY_MESSAGE)
return await with_db_timeout(
coro,
timeout=WEBUI_DB_TIMEOUT,
operation=operation,
source="web_ui",
)
def validate_path(path_str: str | None) -> tuple[Path | None, str | None]:
"""验证路径是否安全