mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-03-01 00:00:26 +00:00
Introduce granular "bypass" configuration to control Napi2Native bypass features and expose it in the WebUI. Key changes: - Add bypass defaults to packages/napcat-core/external/napcat.json and BypassOptionsSchema in napcat-core helper config. - Extend Napi2NativeLoader types: enableAllBypasses now accepts BypassOptions. - Framework & Shell: load napcat.json (via json5), pass parsed bypass options to native loader, and log the applied config. Add json5 dependency. - Shell: implement loadBypassConfig with a crash-recovery override (NAPCAT_BYPASS_DISABLE_LEVEL) and add master<->worker IPC (login-success) plus progressive bypass-disable strategy to mitigate repeated crashes before login. - WebUI backend: add GET/Set endpoints for NapCat config (NapCatConfigRouter) with validation and JSON5-aware defaults. - WebUI frontend: add BypassConfig page, types, and controller methods to get/set bypass config. - Update package.json to include json5 and update pnpm lockfile; native binaries (.node / ffmpeg.dll) also updated. This enables operators to tune bypass behavior per-installation and to have an in-UI control for toggling anti-detection features; it also adds progressive fallback behavior to help recover from crashes caused by bypasses.
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { ConfigBase } from '@/napcat-core/helper/config-base';
|
|
import { NapCatCore } from '@/napcat-core/index';
|
|
import { Type, Static } from '@sinclair/typebox';
|
|
import { AnySchema } from 'ajv';
|
|
|
|
export const BypassOptionsSchema = Type.Object({
|
|
hook: Type.Boolean({ default: true }),
|
|
module: Type.Boolean({ default: true }),
|
|
window: Type.Boolean({ default: true }),
|
|
js: Type.Boolean({ default: true }),
|
|
container: Type.Boolean({ default: true }),
|
|
maps: Type.Boolean({ default: true }),
|
|
});
|
|
|
|
export const NapcatConfigSchema = Type.Object({
|
|
fileLog: Type.Boolean({ default: false }),
|
|
consoleLog: Type.Boolean({ default: true }),
|
|
fileLogLevel: Type.String({ default: 'debug' }),
|
|
consoleLogLevel: Type.String({ default: 'info' }),
|
|
packetBackend: Type.String({ default: 'auto' }),
|
|
packetServer: Type.String({ default: '' }),
|
|
o3HookMode: Type.Number({ default: 0 }),
|
|
bypass: Type.Optional(BypassOptionsSchema),
|
|
});
|
|
|
|
export type NapcatConfig = Static<typeof NapcatConfigSchema>;
|
|
|
|
export class NapCatConfigLoader extends ConfigBase<NapcatConfig> {
|
|
constructor (core: NapCatCore, configPath: string, schema: AnySchema) {
|
|
super('napcat', core, configPath, schema);
|
|
}
|
|
}
|