mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
fix
This commit is contained in:
parent
1cdb93baa2
commit
d79e91fc1e
@ -35,6 +35,7 @@ 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) {
|
||||
@ -375,14 +376,9 @@ 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();
|
||||
|
@ -46,8 +46,19 @@ 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';
|
||||
@ -74,8 +85,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));
|
||||
|
@ -10,6 +10,7 @@ interface ServerRkeyData {
|
||||
export class RkeyManager {
|
||||
serverUrl: string[] = [];
|
||||
logger: LogWrapper;
|
||||
rkeyGetCb: any;
|
||||
private rkeyData: ServerRkeyData = {
|
||||
group_rkey: '',
|
||||
private_rkey: '',
|
||||
@ -38,9 +39,23 @@ 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<any> {
|
||||
//刷新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<ServerRkeyData>(url, 'GET');
|
||||
|
Loading…
x
Reference in New Issue
Block a user