From fd735c1daf947b039121b7c4b0531e655a07ab30 Mon Sep 17 00:00:00 2001 From: zyc404 Date: Mon, 16 Oct 2023 14:40:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=85=E5=B7=B4=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/index.js | 18 ++---------- server/modules/guoba.js | 62 +++++++++++++++++++++++++++++++++++++++++ server/modules/user.js | 20 ------------- 3 files changed, 64 insertions(+), 36 deletions(-) create mode 100644 server/modules/guoba.js diff --git a/server/index.js b/server/index.js index 08d46d2..6fc232a 100644 --- a/server/index.js +++ b/server/index.js @@ -16,6 +16,7 @@ import { getPublicIP, getUserData, getMasterQQ, randomString, getUin } from '../ import webRoute from './modules/web_route.js' import webUser from './modules/user.js' import webPrompt from './modules/prompts.js' +import Guoba from './modules/guoba.js' import SettingView from './modules/setting_view.js' const __dirname = path.resolve() @@ -23,22 +24,6 @@ const server = fastify({ logger: Config.debug }) -async function getLoad() { - // 获取当前操作系统平台 - const platform = os.platform() - // 判断平台是Linux还是Windows - if (platform === 'linux') { - // 如果是Linux,使用os.loadavg()方法获取负载平均值 - const loadAvg = os.loadavg() - return loadAvg[0] * 100 - } else if (platform === 'win32') { - // 如果是Windows不获取性能 - return 0 - } else { - return 0 - } -} - async function setUserData(qq, data) { const dir = 'resources/ChatGPTCache/user' const filename = `${qq}.json` @@ -64,6 +49,7 @@ await server.register(webRoute) await server.register(webUser) await server.register(SettingView) await server.register(webPrompt) +await server.register(Guoba) // 无法访问端口的情况下创建与media的通讯 async function mediaLink() { diff --git a/server/modules/guoba.js b/server/modules/guoba.js new file mode 100644 index 0000000..91a499f --- /dev/null +++ b/server/modules/guoba.js @@ -0,0 +1,62 @@ +import { UserInfo } from './user_data.js' + +async function Guoba(fastify, options) { + // 获取锅巴登陆链接 + fastify.post('/guobaLogin', async (request, reply) => { + const token = request.cookies.token || request.body?.token || 'unknown' + let user = UserInfo(token) + if (user && user.autho == 'admin') { + try { + let { LoginService } = await import('../../../Guoba-Plugin/server/service/both/LoginService.js') + const guobaLoginService = new LoginService() + const guobaAPI = await guobaLoginService.setQuickLogin(user.user) + reply.send({ guoba: guobaAPI }) + } + catch (err) { + console.error(err) + reply.send({ state: false, error: err }) + } + } else { + reply.send({ state: false, error: '用户权限不足' }) + } + return reply + }) + // 代理锅巴接口 + fastify.post('/guobaApi', async (request, reply) => { + const body = request.body || {} + const token = request.cookies.token || request.body?.token || 'unknown' + let user = UserInfo(token) + if (user && user.autho == 'admin' && body.guobaToken) { + try { + let { LoginService } = await import('../../../Guoba-Plugin/server/service/both/LoginService.js') + const guobaLoginService = new LoginService() + const { custom, local, remote } = await guobaLoginService.setQuickLogin(user.user) + if (local.length > 0) { + const guobaOptions = { + method: 'GET', + headers: { + 'Guoba-Access-Token': body.guobaToken + }, + body: body.data + } + const response = await fetch(`${local[0]}/${body.path}`, guobaOptions) + if (response.ok) { + const json = await response.json() + reply.send(json) + } + } else { + reply.send({ state: false, error: '锅巴接口异常' }) + } + } + catch (err) { + console.error(err) + reply.send({ state: false, error: err }) + } + } else { + reply.send({ state: false, error: '用户权限不足' }) + } + return reply + }) +} + +export default Guoba \ No newline at end of file diff --git a/server/modules/user.js b/server/modules/user.js index 94ca1da..1677c22 100644 --- a/server/modules/user.js +++ b/server/modules/user.js @@ -88,26 +88,6 @@ async function User(fastify, options) { }) return reply }) - // 获取锅巴登陆链接 - fastify.post('/guobaLogin', async (request, reply) => { - const token = request.cookies.token || request.body?.token || 'unknown' - let user = UserInfo(token) - if (user && user.autho == 'admin') { - try { - let { LoginService } = await import('../../../Guoba-Plugin/server/service/both/LoginService.js') - const guobaLoginService = new LoginService() - const guobaAPI = await guobaLoginService.setQuickLogin(user.user) - reply.send({ guoba: guobaAPI }) - } - catch (err) { - console.error(err) - reply.send({ state: false, error: err }) - } - } else { - reply.send({ state: false, error: '用户权限不足' }) - } - return reply - }) // 获取用户数据 fastify.post('/userData', async (request, reply) => { const token = request.cookies.token || request.body?.token || 'unknown'