diff --git a/src/core/external/napcat.json b/src/core/external/napcat.json index 44952ac2..dcce2174 100644 --- a/src/core/external/napcat.json +++ b/src/core/external/napcat.json @@ -4,5 +4,6 @@ "fileLogLevel": "debug", "consoleLogLevel": "info", "packetBackend": "auto", - "packetServer": "" -} + "packetServer": "", + "o3HookMode": 1 + } \ No newline at end of file diff --git a/src/core/helper/config.ts b/src/core/helper/config.ts index bc6781da..0c2540c1 100644 --- a/src/core/helper/config.ts +++ b/src/core/helper/config.ts @@ -10,6 +10,7 @@ export const NapcatConfigSchema = Type.Object({ consoleLogLevel: Type.String({ default: 'info' }), packetBackend: Type.String({ default: 'auto' }), packetServer: Type.String({ default: '' }), + o3HookMode: Type.Number({ default: 0 }), }); export type NapcatConfig = Static; diff --git a/src/core/packet/client/nativeClient.ts b/src/core/packet/client/nativeClient.ts index ad3ae995..356734b5 100644 --- a/src/core/packet/client/nativeClient.ts +++ b/src/core/packet/client/nativeClient.ts @@ -11,7 +11,7 @@ import { PacketLogger } from '@/core/packet/context/loggerContext'; // 0 send 1 recv export interface NativePacketExportType { - InitHook?: (send: string, recv: string, callback: (type: number, uin: string, cmd: string, seq: number, hex_data: string) => void) => boolean; + InitHook?: (send: string, recv: string, callback: (type: number, uin: string, cmd: string, seq: number, hex_data: string) => void, o3_hook: boolean) => boolean; SendPacket?: (cmd: string, data: string, trace_id: string) => void; } @@ -42,6 +42,7 @@ export class NativePacketClient extends IPacketClient { const platform = process.platform + '.' + process.arch; const moehoo_path = path.join(dirname(fileURLToPath(import.meta.url)), './moehoo/MoeHoo.' + platform + '.node'); process.dlopen(this.MoeHooExport, moehoo_path, constants.dlopen.RTLD_LAZY); + this.MoeHooExport.exports.InitHook?.(send, recv, (type: number, uin: string, cmd: string, seq: number, hex_data: string) => { const trace_id = createHash('md5').update(Buffer.from(hex_data, 'hex')).digest('hex'); if (type === 0 && this.cb.get(trace_id + 'recv')) { @@ -55,7 +56,7 @@ export class NativePacketClient extends IPacketClient { // console.log('callback:', callback, trace_id); callback?.({ seq, cmd, hex_data }); } - }); + }, this.napcore.config.o3HookMode == 1); this.available = true; } diff --git a/src/native/packet/MoeHoo.linux.arm64.node b/src/native/packet/MoeHoo.linux.arm64.node index 99c45b31..bd2c2eee 100644 Binary files a/src/native/packet/MoeHoo.linux.arm64.node and b/src/native/packet/MoeHoo.linux.arm64.node differ diff --git a/src/native/packet/MoeHoo.linux.x64.node b/src/native/packet/MoeHoo.linux.x64.node index ac4c5b9d..851dd577 100644 Binary files a/src/native/packet/MoeHoo.linux.x64.node and b/src/native/packet/MoeHoo.linux.x64.node differ diff --git a/src/native/packet/MoeHoo.win32.x64.node b/src/native/packet/MoeHoo.win32.x64.node index ab1701c0..82bf80c2 100644 Binary files a/src/native/packet/MoeHoo.win32.x64.node and b/src/native/packet/MoeHoo.win32.x64.node differ