From cd076c59599262fe1010f807409e651dd0f8ff98 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: Tue, 20 Aug 2024 20:22:44 +0800 Subject: [PATCH] fix --- src/onebot/action/index.ts | 2 ++ src/onebot/action/system/GetCSRF.ts | 12 ++++++++++++ src/onebot/action/types.ts | 3 ++- src/onebot/network/active-websocket.ts | 2 ++ src/onebot/network/passive-websocket.ts | 7 ++++++- 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/onebot/action/system/GetCSRF.ts diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index a486c044..ebc7457d 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -79,6 +79,7 @@ import { NapCatOneBot11Adapter } from '@/onebot'; import GetGuildProfile from './guild/GetGuildProfile'; import SetModelShow from './go-cqhttp/SetModelShow'; import { SetInputStatus } from './extends/SetInputStatus'; +import { GetCSRF } from './system/GetCSRF'; export type ActionMap = Map>; @@ -167,6 +168,7 @@ export function createActionMap(onebotContext: NapCatOneBot11Adapter, coreContex new GetGuildProfile(onebotContext, coreContext), new SetModelShow(onebotContext, coreContext), new SetInputStatus(onebotContext, coreContext), + new GetCSRF(onebotContext, coreContext), ]; const actionMap = new Map(); for (const action of actionHandlers) { diff --git a/src/onebot/action/system/GetCSRF.ts b/src/onebot/action/system/GetCSRF.ts new file mode 100644 index 00000000..8d0c1dba --- /dev/null +++ b/src/onebot/action/system/GetCSRF.ts @@ -0,0 +1,12 @@ +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; + +export class GetCSRF extends BaseAction { + actionName = ActionName.GetCSRF; + + async _handle(payload: any) { + return { + token: "", + }; + } +} diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index 2bfbcd28..095a0d63 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -107,5 +107,6 @@ export enum ActionName { FetchEmojiLike = 'fetch_emoji_like', GetGuildProfile = "get_guild_service_profile", SetModelShow = "_set_model_show", - SetInputStatus = "set_input_status" + SetInputStatus = "set_input_status", + GetCSRF = "get_csrf_token" } diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index cfed08e7..15b16970 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -71,6 +71,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { this.connection = new WebSocket(this.url, { maxPayload: 1024 * 1024 * 1024, + handshakeTimeout: 2000, + perMessageDeflate: false, headers: { 'X-Self-ID': this.coreContext.selfInfo.uin, 'Authorization': `Bearer ${this.token}`, diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 0ded05a9..d1d0307b 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -36,7 +36,11 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.logger = coreContext.context.logger; this.heartbeatInterval = heartbeatInterval; - this.wsServer = new WebSocketServer({ port: port, host: ip, maxPayload: 1024 * 1024 * 1024, }); + this.wsServer = new WebSocketServer({ + port: port, + host: ip, + maxPayload: 1024 * 1024 * 1024, + }); const core = coreContext; this.wsServer.on('connection', async (wsClient, wsReq) => { if (!this.isOpen) { @@ -151,6 +155,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { //this.logger.logDebug('收到正向Websocket消息', receiveData); } catch (e) { this.checkStateAndReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo), wsClient); + return; } receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 const retdata = await this.actions.get(receiveData.action)?.websocketHandle(receiveData.params, echo || '');