添加配置后重启接口

This commit is contained in:
HibiKier 2025-03-11 20:40:07 +08:00
parent 2830497dd3
commit c7a33c738e

View File

@ -1,7 +1,9 @@
from pathlib import Path from pathlib import Path
import re import re
import subprocess
import sys
from fastapi import APIRouter, HTTPException from fastapi import APIRouter
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
import nonebot import nonebot
@ -15,6 +17,11 @@ router = APIRouter(prefix="/configure")
driver = nonebot.get_driver() driver = nonebot.get_driver()
port = driver.config.port
flag_file = Path() / ".configure_restart"
@router.post( @router.post(
"/set_configure", "/set_configure",
@ -23,6 +30,7 @@ driver = nonebot.get_driver()
description="设置基础配置", description="设置基础配置",
) )
async def _(setting: Setting) -> Result: async def _(setting: Setting) -> Result:
global port
password = Config.get_config("web-ui", "password") password = Config.get_config("web-ui", "password")
if password or BotConfig.db_url: if password or BotConfig.db_url:
return Result.fail("配置已存在请先删除DB_URL内容和前端密码再进行设置。") return Result.fail("配置已存在请先删除DB_URL内容和前端密码再进行设置。")
@ -37,6 +45,7 @@ async def _(setting: Setting) -> Result:
env_text = env_text.replace("HOST = 127.0.0.1", f"HOST = {setting.host}") env_text = env_text.replace("HOST = 127.0.0.1", f"HOST = {setting.host}")
if setting.port: if setting.port:
env_text = env_text.replace("PORT = 8080", f"PORT = {setting.port}") env_text = env_text.replace("PORT = 8080", f"PORT = {setting.port}")
port = setting.port
if setting.db_url: if setting.db_url:
if setting.db_url.startswith("sqlite"): if setting.db_url.startswith("sqlite"):
db_path = Path(setting.db_url.split(":")[-1]) db_path = Path(setting.db_url.split(":")[-1])
@ -46,6 +55,7 @@ async def _(setting: Setting) -> Result:
Config.set_config("web-ui", "username", setting.username) Config.set_config("web-ui", "username", setting.username)
Config.set_config("web-ui", "password", setting.password, True) Config.set_config("web-ui", "password", setting.password, True)
env_file.write_text(env_text, encoding="utf-8") env_file.write_text(env_text, encoding="utf-8")
flag_file.touch()
return Result.ok(info="设置成功,请重启真寻以完成配置!") return Result.ok(info="设置成功,请重启真寻以完成配置!")
@ -60,3 +70,20 @@ async def _(db_url: str) -> Result:
if isinstance(result, str): if isinstance(result, str):
return Result.fail(result) return Result.fail(result)
return Result.ok(info="数据库连接成功!") return Result.ok(info="数据库连接成功!")
@router.post(
"/restart",
response_model=Result,
response_class=JSONResponse,
description="重启",
)
async def _() -> Result:
if not flag_file.exists():
return Result.fail("重启标志文件不存在...")
flag_file.unlink()
bat_path = Path() / "win启动.bat"
subprocess.Popen([bat_path, str(port)], shell=True) # noqa: ASYNC220
# 退出当前进程
sys.exit(0)