change PlayerGetTokenScRsp cmdid

This commit is contained in:
memetrollsXD 2022-07-29 00:07:44 +02:00
parent 8f45d17319
commit babc829c44
No known key found for this signature in database
GPG Key ID: 105C2F3417AC32CD
5 changed files with 13 additions and 9 deletions

View File

@ -1,6 +1,6 @@
{ {
"101": "DebugNotify", "101": "DebugNotify",
"5": "PlayerGetTokenCsReq", "5": "PlayerGetTokenCsReq",
"49": "PlayerGetTokenScRsp", "48": "PlayerGetTokenScRsp",
"22": "PlayerKeepAliveNotify" "22": "PlayerKeepAliveNotify"
} }

View File

@ -19,13 +19,13 @@ export default class Packet {
public readonly data: Buffer; public readonly data: Buffer;
public body: {} = {}; public body: {} = {};
public constructor(public readonly rawData: Buffer, public readonly protoName = "") { public constructor(public readonly rawData: Buffer, public readonly protoName: string = "") {
// Remove the header and metadata // Remove the header and metadata
const metadataLength = rawData.readUInt16BE(6); const metadataLength = rawData.readUInt16BE(6);
this.data = rawData.subarray(12 + metadataLength, 12 + metadataLength + rawData.readUInt32BE(8)); this.data = rawData.subarray(12 + metadataLength, 12 + metadataLength + rawData.readUInt32BE(8));
this.cmdid = this.rawData.readUInt16BE(4); this.cmdid = this.rawData.readUInt16BE(4);
this.protoName = packetIds[this.cmdid.toString()]; this.protoName = this.protoName || packetIds[this.cmdid.toString()];
if (this.protoName) { if (this.protoName) {
try { try {
const root = protobuf.loadSync(resolve(__dirname, `../../data/proto/${this.protoName}.proto`)); const root = protobuf.loadSync(resolve(__dirname, `../../data/proto/${this.protoName}.proto`));
@ -49,7 +49,7 @@ export default class Packet {
return str.startsWith("01234567") && str.endsWith("89abcdef"); return str.startsWith("01234567") && str.endsWith("89abcdef");
} }
public static encode(name: string, body: {}): Packet | null { public static encode(name: string, body: {}, customCmdId?: number): Packet | null {
try { try {
const cmdid = switchedPacketIds[name]; const cmdid = switchedPacketIds[name];
const root = protobuf.loadSync(resolve(__dirname, `../../data/proto/${name}.proto`)); const root = protobuf.loadSync(resolve(__dirname, `../../data/proto/${name}.proto`));
@ -58,13 +58,13 @@ export default class Packet {
const data = Buffer.from(Message.encode(body).finish()); const data = Buffer.from(Message.encode(body).finish());
const packet = Buffer.allocUnsafe(16 + data.length); const packet = Buffer.allocUnsafe(16 + data.length);
packet.writeUInt32BE(0x1234567); packet.writeUInt32BE(0x1234567);
packet.writeUint16BE(cmdid, 4); packet.writeUint16BE(customCmdId || cmdid, 4);
packet.writeUint16BE(0, 6); packet.writeUint16BE(0, 6);
packet.writeUint32BE(data.length, 8); packet.writeUint32BE(data.length, 8);
data.copy(packet, 12); data.copy(packet, 12);
packet.writeUint32BE(0x89abcdef, 12 + data.length); packet.writeUint32BE(0x89abcdef, 12 + data.length);
return new Packet(packet); return new Packet(packet, name);
} catch (e) { } catch (e) {
c.error(e as Error); c.error(e as Error);
return null; return null;

View File

@ -33,10 +33,10 @@ export default class SRServer {
private async onMessage(data: Buffer, rinfo: RemoteInfo) { private async onMessage(data: Buffer, rinfo: RemoteInfo) {
const client = `${rinfo.address}:${rinfo.port}`; const client = `${rinfo.address}:${rinfo.port}`;
c.debug(data.toString("hex"));
if (data.byteLength == 20) { if (data.byteLength == 20) {
// Hamdshanke // Hamdshanke
const handshake = new Handshake(data); const handshake = new Handshake(data);
c.debug(data.toString("hex"));
switch (handshake.handshakeType) { switch (handshake.handshakeType) {
case HandshakeType.CONNECT: case HandshakeType.CONNECT:

View File

@ -78,4 +78,8 @@ export default class Session {
this.c.debug(`send ${packet.rawData.toString('hex')}`); this.c.debug(`send ${packet.rawData.toString('hex')}`);
this.kcpobj.send(packet.rawData); this.kcpobj.send(packet.rawData);
} }
public sendRaw(data: Buffer) {
this.kcpobj.send(data);
}
} }

View File

@ -24,7 +24,7 @@ export default async function handle(session: Session, packet: Packet) {
return; return;
} }
session.send('PlayerGetTokenScRsp', { session.send("PlayerGetTokenScRsp", {
uid: account.uid, uid: account.uid,
token: body.accountToken, token: body.accountToken,
secretKey: BigInt(0).toString(), secretKey: BigInt(0).toString(),