mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
feat: add new NapCat config key: packetBackend
- Acceptable values: `native`, `frida`, `auto`, `disable` - Default value is set to `auto`
This commit is contained in:
parent
ad6f21980c
commit
e46d274a75
@ -61,7 +61,11 @@ export class NTQQPacketApi {
|
|||||||
this.qqVersion = qqversion;
|
this.qqVersion = qqversion;
|
||||||
const table = typedOffset[qqversion + '-' + os.arch()];
|
const table = typedOffset[qqversion + '-' + os.arch()];
|
||||||
if (!table) {
|
if (!table) {
|
||||||
this.logger.logError('PacketServer Offset table not found for QQVersion: ', qqversion + '-' + os.arch());
|
this.logger.logError('[Core] [Packet] PacketServer Offset table not found for QQVersion: ', qqversion + '-' + os.arch());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.core.configLoader.configData.packetBackend === 'disable') {
|
||||||
|
this.logger.logWarn('[Core] [Packet] 已禁用Packet后端,NapCat.Packet将不会加载!');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.packetSession = new PacketSession(this.core);
|
this.packetSession = new PacketSession(this.core);
|
||||||
|
3
src/core/external/napcat.json
vendored
3
src/core/external/napcat.json
vendored
@ -3,5 +3,6 @@
|
|||||||
"consoleLog": true,
|
"consoleLog": true,
|
||||||
"fileLogLevel": "debug",
|
"fileLogLevel": "debug",
|
||||||
"consoleLogLevel": "info",
|
"consoleLogLevel": "info",
|
||||||
|
"packetBackend": "auto",
|
||||||
"packetServer": ""
|
"packetServer": ""
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ export class PacketHighwaySession {
|
|||||||
|
|
||||||
private async checkAvailable() {
|
private async checkAvailable() {
|
||||||
if (!this.packetClient.available) {
|
if (!this.packetClient.available) {
|
||||||
throw new Error('packetServer不可用,请参照文档 https://napneko.github.io/config/advanced 检查packetServer状态或进行配置');
|
throw new Error('packetBackend不可用,请参照文档 https://napneko.github.io/config/advanced 和启动日志检查packetBackend状态或进行配置!');
|
||||||
}
|
}
|
||||||
if (this.sig.sigSession === null || this.sig.sessionKey === null) {
|
if (this.sig.sigSession === null || this.sig.sessionKey === null) {
|
||||||
this.logger.logWarn('[Highway] sigSession or sessionKey not available!');
|
this.logger.logWarn('[Highway] sigSession or sessionKey not available!');
|
||||||
|
@ -23,11 +23,26 @@ export class PacketSession {
|
|||||||
|
|
||||||
constructor(core: NapCatCore) {
|
constructor(core: NapCatCore) {
|
||||||
this.logger = core.context.logger;
|
this.logger = core.context.logger;
|
||||||
this.client = this.judgeClient(core);
|
this.client = this.newClient(core);
|
||||||
this.packer = new PacketPacker(this.logger, this.client);
|
this.packer = new PacketPacker(this.logger, this.client);
|
||||||
this.highwaySession = new PacketHighwaySession(this.logger, this.client, this.packer);
|
this.highwaySession = new PacketHighwaySession(this.logger, this.client, this.packer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private newClient(core: NapCatCore): PacketClient {
|
||||||
|
const prefer = core.configLoader.configData.packetBackend;
|
||||||
|
switch (prefer) {
|
||||||
|
case "native":
|
||||||
|
return new NativePacketClient(core);
|
||||||
|
case "frida":
|
||||||
|
return new wsPacketClient(core);
|
||||||
|
case "auto":
|
||||||
|
case undefined:
|
||||||
|
return this.judgeClient(core);
|
||||||
|
default:
|
||||||
|
throw new Error(`[Core] [Packet] 未知的Packet后端类型 ${prefer},请检查配置文件!`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private judgeClient(core: NapCatCore): PacketClient {
|
private judgeClient(core: NapCatCore): PacketClient {
|
||||||
const sortedClients = Object.entries(clientPriority)
|
const sortedClients = Object.entries(clientPriority)
|
||||||
.map(([priority, clientFactory]) => {
|
.map(([priority, clientFactory]) => {
|
||||||
|
@ -9,7 +9,7 @@ export abstract class GetPacketStatusDepends<PT, RT> extends BaseAction<PT, RT>
|
|||||||
if (!this.core.apis.PacketApi.available) {
|
if (!this.core.apis.PacketApi.available) {
|
||||||
return {
|
return {
|
||||||
valid: false,
|
valid: false,
|
||||||
message: "packetServer不可用,请参照文档 https://napneko.github.io/config/advanced 检查packetServer状态或进行配置!",
|
message: "packetBackend不可用,请参照文档 https://napneko.github.io/config/advanced 和启动日志检查packetBackend状态或进行配置!",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return await super.check(payload);
|
return await super.check(payload);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user