diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 6b313f14..df5b79db 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -35,7 +35,6 @@ export class NTQQFileApi { this.context = context; this.core = core; this.rkeyManager = new RkeyManager(['https://llob.linyuchen.net/rkey', 'http://napcat-sign.wumiao.wang:2082/rkey'], this.context.logger); - } async copyFile(filePath: string, destPath: string) { @@ -376,9 +375,14 @@ export class NTQQFileApi { group_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qffcqm614gds', online_rkey: false }; - - - + if (this.core.apis.PacketApi.PacketClient?.isConnected) { + let rkeylist = await this.core.apis.PacketApi.sendRkeyPacket(); + if (rkeylist.length > 0) { + rkeyData.group_rkey = rkeylist[0].rkey; + rkeyData.private_rkey = rkeylist[1].rkey; + rkeyData.online_rkey = true; + } + } if (!rkeyData.online_rkey) { try { let tempRkeyData = await this.rkeyManager.getRkey(); diff --git a/src/core/apis/packet.ts b/src/core/apis/packet.ts index 3fb91d79..a0886a98 100644 --- a/src/core/apis/packet.ts +++ b/src/core/apis/packet.ts @@ -46,19 +46,8 @@ export class NTQQPacketApi { await this.PacketClient.connect(); await this.PacketClient.init(process.pid, table.recv, table.send); this.isInit = true; - this.InitOtherServer() return this.isInit; } - async InitOtherServer() { - this.core.apis.FileApi.rkeyManager.regOutputRkey( - async () => { - let rkeylist = await this.core.apis.PacketApi.sendRkeyPacket(); - if (rkeylist.length > 0) { - return rkeylist; - } - return undefined; - }); - } randText(len: number) { let text = ''; let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; @@ -85,8 +74,8 @@ export class NTQQPacketApi { async sendRkeyPacket() { let u8 = await this.core.apis.PacketApi.buildRkeyPacket() let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x9067_202', Buffer.from(u8).toString('hex'), true); - if (!ret?.hex_data) return [] - let body = new NapProtoMsg(OidbSvcTrpcTcpBaseRsp).decode(Buffer.from(ret.hex_data, 'hex')).body; + if(!ret?.hex_data) return [] + let body = new NapProtoMsg(OidbSvcTrpcTcpBaseRsp).decode(Buffer.from(ret.hex_data,'hex')).body; //console.log('ret: ', Buffer.from(body).toString('hex')); let retdata = new NapProtoMsg(OidbSvcTrpcTcp0X9067_202_Rsp_Body).decode(body) //console.log('ret: ', JSON.stringify(retdata.data.rkeyList)); diff --git a/src/core/helper/rkey.ts b/src/core/helper/rkey.ts index f7f257d9..852cafed 100644 --- a/src/core/helper/rkey.ts +++ b/src/core/helper/rkey.ts @@ -10,7 +10,6 @@ interface ServerRkeyData { export class RkeyManager { serverUrl: string[] = []; logger: LogWrapper; - rkeyGetCb: any; private rkeyData: ServerRkeyData = { group_rkey: '', private_rkey: '', @@ -39,23 +38,9 @@ export class RkeyManager { // console.log(`now: ${now}, expired_time: ${this.rkeyData.expired_time}`); return now > this.rkeyData.expired_time; } - regOutputRkey(cb: any) { - this.rkeyGetCb = cb; - } + async refreshRkey(): Promise { //刷新rkey - try { - if (this.rkeyGetCb) { - let data = await this.rkeyGetCb(); - this.rkeyData = { - group_rkey: data.group_rkey.slice(6), - private_rkey: data.private_rkey.slice(6), - expired_time: data.time - }; - } - } catch (error) { - this.logger.logError.bind(this.logger)('Packet Server 获取rkey失败', error); - } for (const url of this.serverUrl) { try { let temp = await RequestUtil.HttpGetJson(url, 'GET');