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",
"5": "PlayerGetTokenCsReq",
"49": "PlayerGetTokenScRsp",
"48": "PlayerGetTokenScRsp",
"22": "PlayerKeepAliveNotify"
}

View File

@ -19,13 +19,13 @@ export default class Packet {
public readonly data: Buffer;
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
const metadataLength = rawData.readUInt16BE(6);
this.data = rawData.subarray(12 + metadataLength, 12 + metadataLength + rawData.readUInt32BE(8));
this.cmdid = this.rawData.readUInt16BE(4);
this.protoName = packetIds[this.cmdid.toString()];
this.protoName = this.protoName || packetIds[this.cmdid.toString()];
if (this.protoName) {
try {
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");
}
public static encode(name: string, body: {}): Packet | null {
public static encode(name: string, body: {}, customCmdId?: number): Packet | null {
try {
const cmdid = switchedPacketIds[name];
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 packet = Buffer.allocUnsafe(16 + data.length);
packet.writeUInt32BE(0x1234567);
packet.writeUint16BE(cmdid, 4);
packet.writeUint16BE(customCmdId || cmdid, 4);
packet.writeUint16BE(0, 6);
packet.writeUint32BE(data.length, 8);
data.copy(packet, 12);
packet.writeUint32BE(0x89abcdef, 12 + data.length);
return new Packet(packet);
return new Packet(packet, name);
} catch (e) {
c.error(e as Error);
return null;

View File

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

View File

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

View File

@ -17,14 +17,14 @@ export default async function handle(session: Session, packet: Packet) {
c.error(`Account not found: ${body.accountUid}`);
return;
}
const isTokenValid = account.token === body.accountToken;
if (!isTokenValid) {
c.error(`Token invalid (${session.ctx.address}:${session.ctx.port})`);
return;
}
session.send('PlayerGetTokenScRsp', {
session.send("PlayerGetTokenScRsp", {
uid: account.uid,
token: body.accountToken,
secretKey: BigInt(0).toString(),