zhenxun_bot/zhenxun/builtin_plugins/web_ui/__init__.py

114 lines
3.3 KiB
Python
Raw Normal View History

import asyncio
2024-08-26 19:20:22 +08:00
import secrets
import nonebot
2024-08-27 09:24:32 +08:00
from fastapi import FastAPI, APIRouter
2024-08-15 00:14:09 +08:00
from nonebot.plugin import PluginMetadata
2024-08-27 09:24:32 +08:00
from nonebot.log import default_filter, default_format
2024-08-15 00:14:09 +08:00
from zhenxun.utils.enum import PluginType
2024-08-27 09:24:32 +08:00
from zhenxun.services.log import logger, logger_
from zhenxun.configs.config import Config as gConfig
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
2024-08-27 09:24:32 +08:00
from .public import init_public
from .auth import router as auth_router
from .api.logs import router as ws_log_routes
from .api.logs.log_manager import LOG_STORAGE
from .api.tabs.main import router as main_router
from .api.tabs.manage import router as manage_router
2024-08-27 09:24:32 +08:00
from .api.tabs.system import router as system_router
from .api.tabs.main import ws_router as status_routes
from .api.tabs.database import router as database_router
2024-08-13 22:37:44 +08:00
from .api.tabs.manage.chat import ws_router as chat_routes
from .api.tabs.plugin_manage import router as plugin_router
2024-08-15 00:14:09 +08:00
__plugin_meta__ = PluginMetadata(
name="WebUi",
description="WebUi API",
usage="""
""".strip(),
extra=PluginExtraData(
2024-08-26 19:20:22 +08:00
author="HibiKier",
version="0.1",
plugin_type=PluginType.HIDDEN,
2024-08-27 09:24:32 +08:00
configs=[
2024-08-26 19:20:22 +08:00
RegisterConfig(
module="web-ui",
key="username",
value="admin",
help="前端管理用户名",
type=str,
default_value="admin",
),
RegisterConfig(
module="web-ui",
key="password",
value=None,
help="前端管理密码",
type=str,
default_value=None,
),
RegisterConfig(
module="web-ui",
key="secret",
value=secrets.token_urlsafe(32),
help="JWT密钥",
type=str,
default_value=None,
),
2024-08-27 09:24:32 +08:00
],
2024-08-15 00:14:09 +08:00
).dict(),
)
driver = nonebot.get_driver()
gConfig.set_name("web-ui", "web-ui")
BaseApiRouter = APIRouter(prefix="/zhenxun/api")
BaseApiRouter.include_router(auth_router)
BaseApiRouter.include_router(main_router)
BaseApiRouter.include_router(manage_router)
BaseApiRouter.include_router(database_router)
BaseApiRouter.include_router(plugin_router)
BaseApiRouter.include_router(system_router)
WsApiRouter = APIRouter(prefix="/zhenxun/socket")
WsApiRouter.include_router(ws_log_routes)
WsApiRouter.include_router(status_routes)
WsApiRouter.include_router(chat_routes)
@driver.on_startup
2024-08-23 18:41:35 +08:00
async def _():
try:
async def log_sink(message: str):
loop = None
if not loop:
try:
loop = asyncio.get_running_loop()
except Exception as e:
logger.warning("Web Ui log_sink", e=e)
if not loop:
loop = asyncio.new_event_loop()
2024-08-27 09:24:32 +08:00
loop.create_task(LOG_STORAGE.add(message.rstrip("\n"))) # noqa: RUF006
logger_.add(
log_sink, colorize=True, filter=default_filter, format=default_format
)
app: FastAPI = nonebot.get_app()
app.include_router(BaseApiRouter)
app.include_router(WsApiRouter)
2024-08-23 18:41:35 +08:00
await init_public(app)
logger.info("<g>API启动成功</g>", "Web UI")
except Exception as e:
logger.error("<g>API启动失败</g>", "Web UI", e=e)