diff --git a/packages/napcat-core/external/napcat.json b/packages/napcat-core/external/napcat.json index dcce2174..4583e217 100644 --- a/packages/napcat-core/external/napcat.json +++ b/packages/napcat-core/external/napcat.json @@ -1,9 +1,9 @@ { - "fileLog": false, - "consoleLog": true, - "fileLogLevel": "debug", - "consoleLogLevel": "info", - "packetBackend": "auto", - "packetServer": "", - "o3HookMode": 1 - } \ No newline at end of file + "fileLog": false, + "consoleLog": true, + "fileLogLevel": "debug", + "consoleLogLevel": "info", + "packetBackend": "auto", + "packetServer": "", + "o3HookMode": 0 +} \ No newline at end of file diff --git a/packages/napcat-core/packet/context/clientContext.ts b/packages/napcat-core/packet/context/clientContext.ts index 5163dd92..e62fca37 100644 --- a/packages/napcat-core/packet/context/clientContext.ts +++ b/packages/napcat-core/packet/context/clientContext.ts @@ -67,7 +67,7 @@ export class PacketClientContext { await this._client.init(pid, recv, send); } - async sendOidbPacket(pkt: OidbPacket, rsp?: T, timeout?: number): Promise { + async sendOidbPacket (pkt: OidbPacket, rsp?: T, timeout?: number): Promise { const raw = await this._client.sendOidbPacket(pkt, rsp, timeout); return raw.data as T extends true ? Buffer : void; } diff --git a/packages/napcat-core/packet/handler/napi2nativeLoader.ts b/packages/napcat-core/packet/handler/napi2nativeLoader.ts index 5ec1874d..77d33f3b 100644 --- a/packages/napcat-core/packet/handler/napi2nativeLoader.ts +++ b/packages/napcat-core/packet/handler/napi2nativeLoader.ts @@ -6,6 +6,8 @@ import { LogWrapper } from '../../helper/log'; export interface Napi2NativeExportType { initHook?: (send: string, recv: string) => boolean; + setVerbose?: (verbose: boolean) => void; // 默认关闭日志 + enableAllBypasses?: () => void; } export class Napi2NativeLoader { diff --git a/packages/napcat-framework/napcat.ts b/packages/napcat-framework/napcat.ts index e8c85172..d9a32b3f 100644 --- a/packages/napcat-framework/napcat.ts +++ b/packages/napcat-framework/napcat.ts @@ -42,6 +42,11 @@ export async function NCoreInitFramework ( const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion()); const nativePacketHandler = new NativePacketHandler({ logger }); // 初始化 NativePacketHandler 用于后续使用 const napi2nativeLoader = new Napi2NativeLoader({ logger }); // 初始化 Napi2NativeLoader 用于后续使用 + //console.log('[NapCat] [Napi2NativeLoader]', napi2nativeLoader.nativeExports.enableAllBypasses?.()); + const bypassEnabled = napi2nativeLoader.nativeExports.enableAllBypasses?.(); + if (bypassEnabled) { + logger.log('[NapCat] Napi2NativeLoader: 已启用Bypass'); + } // nativePacketHandler.onAll((packet) => { // console.log('[Packet]', packet.uin, packet.cmd, packet.hex_data); // }); diff --git a/packages/napcat-native/napi2native/napi2native.win32.x64.node b/packages/napcat-native/napi2native/napi2native.win32.x64.node index 47aa330c..d73a94e6 100644 Binary files a/packages/napcat-native/napi2native/napi2native.win32.x64.node and b/packages/napcat-native/napi2native/napi2native.win32.x64.node differ diff --git a/packages/napcat-shell/base.ts b/packages/napcat-shell/base.ts index f84979b3..fed53500 100644 --- a/packages/napcat-shell/base.ts +++ b/packages/napcat-shell/base.ts @@ -388,21 +388,25 @@ export async function NCoreInitShell () { handleUncaughtExceptions(logger); await applyPendingUpdates(pathWrapper, logger); + // 提前初始化 Native 模块(在登录前加载) + const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); + const nativePacketHandler = new NativePacketHandler({ logger }); + const napi2nativeLoader = new Napi2NativeLoader({ logger }); + await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion()); + // 初始化 FFmpeg 服务 await FFmpegService.init(pathWrapper.binaryPath, logger); if (!(process.env['NAPCAT_DISABLE_PIPE'] === '1' || process.env['NAPCAT_WORKER_PROCESS'] === '1')) { await connectToNamedPipe(logger).catch(e => logger.logError('命名管道连接失败', e)); } - const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion()); - const nativePacketHandler = new NativePacketHandler({ logger }); // 初始化 NativePacketHandler 用于后续使用 - const napi2nativeLoader = new Napi2NativeLoader({ logger }); // 初始化 Napi2NativeLoader 用于后续使用 - // nativePacketHandler.onAll((packet) => { - // console.log('[Packet]', packet.uin, packet.cmd, packet.hex_data); - // }); - await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion()); + // wrapper.node 加载后立刻启用 Bypass + const bypassEnabled = napi2nativeLoader.nativeExports.enableAllBypasses?.(); + if (bypassEnabled) { + logger.log('[NapCat] Napi2NativeLoader: 已启用Bypass'); + } const o3Service = wrapper.NodeIO3MiscService.get(); o3Service.addO3MiscListener(new NodeIO3MiscListener());