From 6f5a6f353fdbd689c9dc4afd79d7825cd2521464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 8 May 2024 15:42:22 +0800 Subject: [PATCH] feat: get config --- src/index.ts | 3 ++- src/webui/src/api/OB11Config.ts | 41 +++++++++++++++--------------- src/webui/src/helper/Data.ts | 8 +++--- src/webui/src/router/OB11Config.ts | 6 +++++ src/webui/src/router/QQLogin.ts | 1 - src/webui/src/router/index.ts | 4 ++- 6 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 src/webui/src/router/OB11Config.ts diff --git a/src/index.ts b/src/index.ts index c9a5b544..e678353e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -42,9 +42,10 @@ checkVersion().then((remoteVersion: string) => { logError('[NapCat] 检测更新失败'); }); new NapCatOnebot11(); -napCatCore.onLoginSuccess(() => { +napCatCore.onLoginSuccess((uin, uid) => { console.log('登录成功!'); DataRuntime.setQQLoginStatus(true); + DataRuntime.setQQLoginUin(uin.toString()); postLoginStatus(); }); const showQRCode = async (qrCodeData: { url: string, base64: string, buffer: Buffer }) => { diff --git a/src/webui/src/api/OB11Config.ts b/src/webui/src/api/OB11Config.ts index 79d45124..85320a82 100644 --- a/src/webui/src/api/OB11Config.ts +++ b/src/webui/src/api/OB11Config.ts @@ -1,12 +1,12 @@ import { RequestHandler } from "express"; import { DataRuntime } from "../helper/Data"; -import { existsSync } from "node:fs"; +import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { resolve } from "node:path"; import { OB11Config } from "@/webui/ui/components/WebApi"; const isEmpty = (data: any) => data === undefined || data === null || data === ''; export const OB11GetConfigHandler: RequestHandler = async (req, res) => { let isLogin = await DataRuntime.getQQLoginStatus(); - if(!isLogin){ + if (!isLogin) { res.send({ code: -1, message: 'Not Login' @@ -15,15 +15,16 @@ export const OB11GetConfigHandler: RequestHandler = async (req, res) => { } const uin = await DataRuntime.getQQLoginUin(); let configFilePath = resolve(__dirname, `./config/onebot_${uin}.json`); + console.log(configFilePath); let data: OB11Config; try { - data = existsSync(configFilePath) ? require(configFilePath) : require(resolve(__dirname, `./config/onebot.json`)); + data = JSON.parse(existsSync(configFilePath) ? readFileSync(configFilePath).toString() : readFileSync(resolve(__dirname, `./config/onebot.json`)).toString()); } catch (e) { data = {} as OB11Config; res.send({ code: -1, - message: 'QRCode Get Error' + message: 'Config Get Error' }); return; } @@ -36,31 +37,31 @@ export const OB11GetConfigHandler: RequestHandler = async (req, res) => { } export const OB11SetConfigHandler: RequestHandler = async (req, res) => { let isLogin = await DataRuntime.getQQLoginStatus(); - if(!isLogin){ + if (!isLogin) { res.send({ code: -1, message: 'Not Login' }); return; } - if(isEmpty(req.body.config)){ + if (isEmpty(req.body.config)) { res.send({ code: -1, message: 'config is empty' }); return; - } - let configFilePath = resolve(__dirname, `./config/onebot_${await DataRuntime.getQQLoginUin()}.json`); - try { - require(configFilePath); - } - catch (e) { - configFilePath = resolve(__dirname, `./config/onebot.json`); - } - require('fs').writeFileSync(configFilePath, JSON.stringify(req.body.config, null, 4)); - res.send({ - code: 0, - message: 'success' - }); - return; + } + let configFilePath = resolve(__dirname, `./config/onebot_${await DataRuntime.getQQLoginUin()}.json`); + try { + require(configFilePath); + } + catch (e) { + configFilePath = resolve(__dirname, `./config/onebot.json`); + } + writeFileSync(configFilePath, JSON.stringify(req.body.config, null, 4)); + res.send({ + code: 0, + message: 'success' + }); + return; } \ No newline at end of file diff --git a/src/webui/src/helper/Data.ts b/src/webui/src/helper/Data.ts index 3d1ec634..e4d53b8b 100644 --- a/src/webui/src/helper/Data.ts +++ b/src/webui/src/helper/Data.ts @@ -3,7 +3,7 @@ interface LoginRuntimeType { LoginCurrentRate: number; QQLoginStatus: boolean; QQQRCodeURL: string; - QQLoginUin: number; + QQLoginUin: string; NapCatHelper: { CoreQuickLogin: (uin: string) => Promise<{ result: boolean, message: string }>; QQLoginList: string[] @@ -14,7 +14,7 @@ let LoginRuntime: LoginRuntimeType = { LoginCurrentRate: 0, QQLoginStatus: false, //已实现 但太傻了 得去那边注册个回调刷新 QQQRCodeURL: "", - QQLoginUin: 0, + QQLoginUin: "", NapCatHelper: { CoreQuickLogin: async (uin: string) => { return { result: false, message: '' }; }, QQLoginList: [] @@ -51,11 +51,11 @@ export const DataRuntime = { return LoginRuntime.QQQRCodeURL; } , - setQQLoginUin: async function (uin: number): Promise { + setQQLoginUin: async function (uin: string): Promise { LoginRuntime.QQLoginUin = uin; } , - getQQLoginUin: async function (): Promise { + getQQLoginUin: async function (): Promise { return LoginRuntime.QQLoginUin; }, getQQQuickLoginList: async function (): Promise { diff --git a/src/webui/src/router/OB11Config.ts b/src/webui/src/router/OB11Config.ts new file mode 100644 index 00000000..ef82681f --- /dev/null +++ b/src/webui/src/router/OB11Config.ts @@ -0,0 +1,6 @@ +import { Router } from 'express'; +import { OB11GetConfigHandler,OB11SetConfigHandler} from '../api/OB11Config'; +const router = Router(); +router.post('/GetConfig', OB11GetConfigHandler) +router.post('/SetConfig', OB11SetConfigHandler); +export { router as OB11ConfigRouter }; \ No newline at end of file diff --git a/src/webui/src/router/QQLogin.ts b/src/webui/src/router/QQLogin.ts index 82635b28..7762f68b 100644 --- a/src/webui/src/router/QQLogin.ts +++ b/src/webui/src/router/QQLogin.ts @@ -1,6 +1,5 @@ import { Router } from 'express'; import { QQCheckLoginStatusHandler, QQGetQRcodeHandler, QQGetQuickLoginListHandler } from '../api/QQLogin'; - const router = Router(); router.all('/GetQuickLoginList', QQGetQuickLoginListHandler) router.post('/CheckLoginStatus', QQCheckLoginStatusHandler); diff --git a/src/webui/src/router/index.ts b/src/webui/src/router/index.ts index c6b6a41f..3357ceac 100644 --- a/src/webui/src/router/index.ts +++ b/src/webui/src/router/index.ts @@ -3,6 +3,7 @@ import { AuthHelper } from '../../src/helper/SignToken'; import { NextFunction, Request, Response } from 'express'; import { QQLoginRouter } from "./QQLogin"; import { AuthRouter } from "./auth"; +import { OB11ConfigRouter } from "./OB11Config"; const router = Router(); export async function AuthApi(req: Request, res: Response, next: NextFunction) { //判断当前url是否为/api/login 如果是跳过鉴权 @@ -45,6 +46,7 @@ router.all("/test", (req, res) => { msg: 'ok', }); }); -router.use('/auth', AuthRouter);//挂载权限路由 +router.use('/auth', AuthRouter); router.use('/QQLogin',QQLoginRouter); +router.use('/OB11Config',OB11ConfigRouter); export { router as ALLRouter } \ No newline at end of file