A Twitch.tv viewer reward and games system.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
module.exports = HandshakeInitializationPacket; function HandshakeInitializationPacket(options) { options = options || {};
this.protocolVersion = options.protocolVersion; this.serverVersion = options.serverVersion; this.threadId = options.threadId; this.scrambleBuff1 = options.scrambleBuff1; this.filler1 = options.filler1; this.serverCapabilities1 = options.serverCapabilities1; this.serverLanguage = options.serverLanguage; this.serverStatus = options.serverStatus; this.serverCapabilities2 = options.serverCapabilities2; this.scrambleLength = options.scrambleLength; this.filler2 = options.filler2; this.scrambleBuff2 = options.scrambleBuff2; this.filler3 = options.filler3; this.pluginData = options.pluginData; }
HandshakeInitializationPacket.prototype.parse = function(parser) { this.protocolVersion = parser.parseUnsignedNumber(1); this.serverVersion = parser.parseNullTerminatedString(); this.threadId = parser.parseUnsignedNumber(4); this.scrambleBuff1 = parser.parseBuffer(8); this.filler1 = parser.parseFiller(1); this.serverCapabilities1 = parser.parseUnsignedNumber(2); this.serverLanguage = parser.parseUnsignedNumber(1); this.serverStatus = parser.parseUnsignedNumber(2); this.serverCapabilities2 = parser.parseUnsignedNumber(2); this.scrambleLength = parser.parseUnsignedNumber(1); this.filler2 = parser.parseFiller(10);
// scrambleBuff2 should be 0x00 terminated, but sphinx does not do this
// so we assume scrambleBuff2 to be 12 byte and treat the next byte as a
// filler byte.
this.scrambleBuff2 = parser.parseBuffer(12); this.filler3 = parser.parseFiller(1);
if (parser.reachedPacketEnd()) { return; }
// According to the docs this should be 0x00 terminated, but MariaDB does
// not do this, so we assume this string to be packet terminated.
this.pluginData = parser.parsePacketTerminatedString();
// However, if there is a trailing '\0', strip it
var lastChar = this.pluginData.length - 1; if (this.pluginData[lastChar] === '\0') { this.pluginData = this.pluginData.substr(0, lastChar); } };
HandshakeInitializationPacket.prototype.write = function(writer) { writer.writeUnsignedNumber(1, this.protocolVersion); writer.writeNullTerminatedString(this.serverVersion); writer.writeUnsignedNumber(4, this.threadId); writer.writeBuffer(this.scrambleBuff1); writer.writeFiller(1); writer.writeUnsignedNumber(2, this.serverCapabilities1); writer.writeUnsignedNumber(1, this.serverLanguage); writer.writeUnsignedNumber(2, this.serverStatus); writer.writeUnsignedNumber(2, this.serverCapabilities2); writer.writeUnsignedNumber(1, this.scrambleLength); writer.writeFiller(10); writer.writeNullTerminatedBuffer(this.scrambleBuff2);
if (this.pluginData !== undefined) { writer.writeNullTerminatedString(this.pluginData); } };
HandshakeInitializationPacket.prototype.scrambleBuff = function() { var buffer = new Buffer(this.scrambleBuff1.length + this.scrambleBuff2.length);
this.scrambleBuff1.copy(buffer); this.scrambleBuff2.copy(buffer, this.scrambleBuff1.length);
return buffer; };
|