Initial commit
This commit is contained in:
20
node_modules/mysql/lib/protocol/packets/AuthSwitchRequestPacket.js
generated
vendored
Normal file
20
node_modules/mysql/lib/protocol/packets/AuthSwitchRequestPacket.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
module.exports = AuthSwitchRequestPacket;
|
||||
function AuthSwitchRequestPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.status = 0xfe;
|
||||
this.authMethodName = options.authMethodName;
|
||||
this.authMethodData = options.authMethodData;
|
||||
}
|
||||
|
||||
AuthSwitchRequestPacket.prototype.parse = function parse(parser) {
|
||||
this.status = parser.parseUnsignedNumber(1);
|
||||
this.authMethodName = parser.parseNullTerminatedString();
|
||||
this.authMethodData = parser.parsePacketTerminatedBuffer();
|
||||
};
|
||||
|
||||
AuthSwitchRequestPacket.prototype.write = function write(writer) {
|
||||
writer.writeUnsignedNumber(1, this.status);
|
||||
writer.writeNullTerminatedString(this.authMethodName);
|
||||
writer.writeBuffer(this.authMethodData);
|
||||
};
|
14
node_modules/mysql/lib/protocol/packets/AuthSwitchResponsePacket.js
generated
vendored
Normal file
14
node_modules/mysql/lib/protocol/packets/AuthSwitchResponsePacket.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = AuthSwitchResponsePacket;
|
||||
function AuthSwitchResponsePacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.data = options.data;
|
||||
}
|
||||
|
||||
AuthSwitchResponsePacket.prototype.parse = function parse(parser) {
|
||||
this.data = parser.parsePacketTerminatedBuffer();
|
||||
};
|
||||
|
||||
AuthSwitchResponsePacket.prototype.write = function write(writer) {
|
||||
writer.writeBuffer(this.data);
|
||||
};
|
54
node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js
generated
vendored
Normal file
54
node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
var Buffer = require('safe-buffer').Buffer;
|
||||
|
||||
module.exports = ClientAuthenticationPacket;
|
||||
function ClientAuthenticationPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.clientFlags = options.clientFlags;
|
||||
this.maxPacketSize = options.maxPacketSize;
|
||||
this.charsetNumber = options.charsetNumber;
|
||||
this.filler = undefined;
|
||||
this.user = options.user;
|
||||
this.scrambleBuff = options.scrambleBuff;
|
||||
this.database = options.database;
|
||||
this.protocol41 = options.protocol41;
|
||||
}
|
||||
|
||||
ClientAuthenticationPacket.prototype.parse = function(parser) {
|
||||
if (this.protocol41) {
|
||||
this.clientFlags = parser.parseUnsignedNumber(4);
|
||||
this.maxPacketSize = parser.parseUnsignedNumber(4);
|
||||
this.charsetNumber = parser.parseUnsignedNumber(1);
|
||||
this.filler = parser.parseFiller(23);
|
||||
this.user = parser.parseNullTerminatedString();
|
||||
this.scrambleBuff = parser.parseLengthCodedBuffer();
|
||||
this.database = parser.parseNullTerminatedString();
|
||||
} else {
|
||||
this.clientFlags = parser.parseUnsignedNumber(2);
|
||||
this.maxPacketSize = parser.parseUnsignedNumber(3);
|
||||
this.user = parser.parseNullTerminatedString();
|
||||
this.scrambleBuff = parser.parseBuffer(8);
|
||||
this.database = parser.parseLengthCodedBuffer();
|
||||
}
|
||||
};
|
||||
|
||||
ClientAuthenticationPacket.prototype.write = function(writer) {
|
||||
if (this.protocol41) {
|
||||
writer.writeUnsignedNumber(4, this.clientFlags);
|
||||
writer.writeUnsignedNumber(4, this.maxPacketSize);
|
||||
writer.writeUnsignedNumber(1, this.charsetNumber);
|
||||
writer.writeFiller(23);
|
||||
writer.writeNullTerminatedString(this.user);
|
||||
writer.writeLengthCodedBuffer(this.scrambleBuff);
|
||||
writer.writeNullTerminatedString(this.database);
|
||||
} else {
|
||||
writer.writeUnsignedNumber(2, this.clientFlags);
|
||||
writer.writeUnsignedNumber(3, this.maxPacketSize);
|
||||
writer.writeNullTerminatedString(this.user);
|
||||
writer.writeBuffer(this.scrambleBuff);
|
||||
if (this.database && this.database.length) {
|
||||
writer.writeFiller(1);
|
||||
writer.writeBuffer(Buffer.from(this.database));
|
||||
}
|
||||
}
|
||||
};
|
26
node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js
generated
vendored
Normal file
26
node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
module.exports = ComChangeUserPacket;
|
||||
function ComChangeUserPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.command = 0x11;
|
||||
this.user = options.user;
|
||||
this.scrambleBuff = options.scrambleBuff;
|
||||
this.database = options.database;
|
||||
this.charsetNumber = options.charsetNumber;
|
||||
}
|
||||
|
||||
ComChangeUserPacket.prototype.parse = function(parser) {
|
||||
this.command = parser.parseUnsignedNumber(1);
|
||||
this.user = parser.parseNullTerminatedString();
|
||||
this.scrambleBuff = parser.parseLengthCodedBuffer();
|
||||
this.database = parser.parseNullTerminatedString();
|
||||
this.charsetNumber = parser.parseUnsignedNumber(1);
|
||||
};
|
||||
|
||||
ComChangeUserPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, this.command);
|
||||
writer.writeNullTerminatedString(this.user);
|
||||
writer.writeLengthCodedBuffer(this.scrambleBuff);
|
||||
writer.writeNullTerminatedString(this.database);
|
||||
writer.writeUnsignedNumber(2, this.charsetNumber);
|
||||
};
|
12
node_modules/mysql/lib/protocol/packets/ComPingPacket.js
generated
vendored
Normal file
12
node_modules/mysql/lib/protocol/packets/ComPingPacket.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
module.exports = ComPingPacket;
|
||||
function ComPingPacket() {
|
||||
this.command = 0x0e;
|
||||
}
|
||||
|
||||
ComPingPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, this.command);
|
||||
};
|
||||
|
||||
ComPingPacket.prototype.parse = function(parser) {
|
||||
this.command = parser.parseUnsignedNumber(1);
|
||||
};
|
15
node_modules/mysql/lib/protocol/packets/ComQueryPacket.js
generated
vendored
Normal file
15
node_modules/mysql/lib/protocol/packets/ComQueryPacket.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
module.exports = ComQueryPacket;
|
||||
function ComQueryPacket(sql) {
|
||||
this.command = 0x03;
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
ComQueryPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, this.command);
|
||||
writer.writeString(this.sql);
|
||||
};
|
||||
|
||||
ComQueryPacket.prototype.parse = function(parser) {
|
||||
this.command = parser.parseUnsignedNumber(1);
|
||||
this.sql = parser.parsePacketTerminatedString();
|
||||
};
|
12
node_modules/mysql/lib/protocol/packets/ComQuitPacket.js
generated
vendored
Normal file
12
node_modules/mysql/lib/protocol/packets/ComQuitPacket.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
module.exports = ComQuitPacket;
|
||||
function ComQuitPacket() {
|
||||
this.command = 0x01;
|
||||
}
|
||||
|
||||
ComQuitPacket.prototype.parse = function parse(parser) {
|
||||
this.command = parser.parseUnsignedNumber(1);
|
||||
};
|
||||
|
||||
ComQuitPacket.prototype.write = function write(writer) {
|
||||
writer.writeUnsignedNumber(1, this.command);
|
||||
};
|
12
node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js
generated
vendored
Normal file
12
node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
module.exports = ComStatisticsPacket;
|
||||
function ComStatisticsPacket() {
|
||||
this.command = 0x09;
|
||||
}
|
||||
|
||||
ComStatisticsPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, this.command);
|
||||
};
|
||||
|
||||
ComStatisticsPacket.prototype.parse = function(parser) {
|
||||
this.command = parser.parseUnsignedNumber(1);
|
||||
};
|
9
node_modules/mysql/lib/protocol/packets/EmptyPacket.js
generated
vendored
Normal file
9
node_modules/mysql/lib/protocol/packets/EmptyPacket.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
module.exports = EmptyPacket;
|
||||
function EmptyPacket() {
|
||||
}
|
||||
|
||||
EmptyPacket.prototype.parse = function parse() {
|
||||
};
|
||||
|
||||
EmptyPacket.prototype.write = function write() {
|
||||
};
|
25
node_modules/mysql/lib/protocol/packets/EofPacket.js
generated
vendored
Normal file
25
node_modules/mysql/lib/protocol/packets/EofPacket.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
module.exports = EofPacket;
|
||||
function EofPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.fieldCount = undefined;
|
||||
this.warningCount = options.warningCount;
|
||||
this.serverStatus = options.serverStatus;
|
||||
this.protocol41 = options.protocol41;
|
||||
}
|
||||
|
||||
EofPacket.prototype.parse = function(parser) {
|
||||
this.fieldCount = parser.parseUnsignedNumber(1);
|
||||
if (this.protocol41) {
|
||||
this.warningCount = parser.parseUnsignedNumber(2);
|
||||
this.serverStatus = parser.parseUnsignedNumber(2);
|
||||
}
|
||||
};
|
||||
|
||||
EofPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, 0xfe);
|
||||
if (this.protocol41) {
|
||||
writer.writeUnsignedNumber(2, this.warningCount);
|
||||
writer.writeUnsignedNumber(2, this.serverStatus);
|
||||
}
|
||||
};
|
35
node_modules/mysql/lib/protocol/packets/ErrorPacket.js
generated
vendored
Normal file
35
node_modules/mysql/lib/protocol/packets/ErrorPacket.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
module.exports = ErrorPacket;
|
||||
function ErrorPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.fieldCount = options.fieldCount;
|
||||
this.errno = options.errno;
|
||||
this.sqlStateMarker = options.sqlStateMarker;
|
||||
this.sqlState = options.sqlState;
|
||||
this.message = options.message;
|
||||
}
|
||||
|
||||
ErrorPacket.prototype.parse = function(parser) {
|
||||
this.fieldCount = parser.parseUnsignedNumber(1);
|
||||
this.errno = parser.parseUnsignedNumber(2);
|
||||
|
||||
// sqlStateMarker ('#' = 0x23) indicates error packet format
|
||||
if (parser.peak() === 0x23) {
|
||||
this.sqlStateMarker = parser.parseString(1);
|
||||
this.sqlState = parser.parseString(5);
|
||||
}
|
||||
|
||||
this.message = parser.parsePacketTerminatedString();
|
||||
};
|
||||
|
||||
ErrorPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, 0xff);
|
||||
writer.writeUnsignedNumber(2, this.errno);
|
||||
|
||||
if (this.sqlStateMarker) {
|
||||
writer.writeString(this.sqlStateMarker);
|
||||
writer.writeString(this.sqlState);
|
||||
}
|
||||
|
||||
writer.writeString(this.message);
|
||||
};
|
26
node_modules/mysql/lib/protocol/packets/Field.js
generated
vendored
Normal file
26
node_modules/mysql/lib/protocol/packets/Field.js
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
var Types = require('../constants/types');
|
||||
|
||||
module.exports = Field;
|
||||
function Field(options) {
|
||||
options = options || {};
|
||||
|
||||
this.parser = options.parser;
|
||||
this.packet = options.packet;
|
||||
this.db = options.packet.db;
|
||||
this.table = options.packet.table;
|
||||
this.name = options.packet.name;
|
||||
this.type = Types[options.packet.type];
|
||||
this.length = options.packet.length;
|
||||
}
|
||||
|
||||
Field.prototype.string = function () {
|
||||
return this.parser.parseLengthCodedString();
|
||||
};
|
||||
|
||||
Field.prototype.buffer = function () {
|
||||
return this.parser.parseLengthCodedBuffer();
|
||||
};
|
||||
|
||||
Field.prototype.geometry = function () {
|
||||
return this.parser.parseGeometryValue();
|
||||
};
|
93
node_modules/mysql/lib/protocol/packets/FieldPacket.js
generated
vendored
Normal file
93
node_modules/mysql/lib/protocol/packets/FieldPacket.js
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
module.exports = FieldPacket;
|
||||
function FieldPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.catalog = options.catalog;
|
||||
this.db = options.db;
|
||||
this.table = options.table;
|
||||
this.orgTable = options.orgTable;
|
||||
this.name = options.name;
|
||||
this.orgName = options.orgName;
|
||||
this.charsetNr = options.charsetNr;
|
||||
this.length = options.length;
|
||||
this.type = options.type;
|
||||
this.flags = options.flags;
|
||||
this.decimals = options.decimals;
|
||||
this.default = options.default;
|
||||
this.zeroFill = options.zeroFill;
|
||||
this.protocol41 = options.protocol41;
|
||||
}
|
||||
|
||||
FieldPacket.prototype.parse = function(parser) {
|
||||
if (this.protocol41) {
|
||||
this.catalog = parser.parseLengthCodedString();
|
||||
this.db = parser.parseLengthCodedString();
|
||||
this.table = parser.parseLengthCodedString();
|
||||
this.orgTable = parser.parseLengthCodedString();
|
||||
this.name = parser.parseLengthCodedString();
|
||||
this.orgName = parser.parseLengthCodedString();
|
||||
|
||||
if (parser.parseLengthCodedNumber() !== 0x0c) {
|
||||
var err = new TypeError('Received invalid field length');
|
||||
err.code = 'PARSER_INVALID_FIELD_LENGTH';
|
||||
throw err;
|
||||
}
|
||||
|
||||
this.charsetNr = parser.parseUnsignedNumber(2);
|
||||
this.length = parser.parseUnsignedNumber(4);
|
||||
this.type = parser.parseUnsignedNumber(1);
|
||||
this.flags = parser.parseUnsignedNumber(2);
|
||||
this.decimals = parser.parseUnsignedNumber(1);
|
||||
|
||||
var filler = parser.parseBuffer(2);
|
||||
if (filler[0] !== 0x0 || filler[1] !== 0x0) {
|
||||
var err = new TypeError('Received invalid filler');
|
||||
err.code = 'PARSER_INVALID_FILLER';
|
||||
throw err;
|
||||
}
|
||||
|
||||
// parsed flags
|
||||
this.zeroFill = (this.flags & 0x0040 ? true : false);
|
||||
|
||||
if (parser.reachedPacketEnd()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.default = parser.parseLengthCodedString();
|
||||
} else {
|
||||
this.table = parser.parseLengthCodedString();
|
||||
this.name = parser.parseLengthCodedString();
|
||||
this.length = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));
|
||||
this.type = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));
|
||||
}
|
||||
};
|
||||
|
||||
FieldPacket.prototype.write = function(writer) {
|
||||
if (this.protocol41) {
|
||||
writer.writeLengthCodedString(this.catalog);
|
||||
writer.writeLengthCodedString(this.db);
|
||||
writer.writeLengthCodedString(this.table);
|
||||
writer.writeLengthCodedString(this.orgTable);
|
||||
writer.writeLengthCodedString(this.name);
|
||||
writer.writeLengthCodedString(this.orgName);
|
||||
|
||||
writer.writeLengthCodedNumber(0x0c);
|
||||
writer.writeUnsignedNumber(2, this.charsetNr || 0);
|
||||
writer.writeUnsignedNumber(4, this.length || 0);
|
||||
writer.writeUnsignedNumber(1, this.type || 0);
|
||||
writer.writeUnsignedNumber(2, this.flags || 0);
|
||||
writer.writeUnsignedNumber(1, this.decimals || 0);
|
||||
writer.writeFiller(2);
|
||||
|
||||
if (this.default !== undefined) {
|
||||
writer.writeLengthCodedString(this.default);
|
||||
}
|
||||
} else {
|
||||
writer.writeLengthCodedString(this.table);
|
||||
writer.writeLengthCodedString(this.name);
|
||||
writer.writeUnsignedNumber(1, 0x01);
|
||||
writer.writeUnsignedNumber(1, this.length);
|
||||
writer.writeUnsignedNumber(1, 0x01);
|
||||
writer.writeUnsignedNumber(1, this.type);
|
||||
}
|
||||
};
|
103
node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js
generated
vendored
Normal file
103
node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js
generated
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
var Buffer = require('safe-buffer').Buffer;
|
||||
var Client = require('../constants/client');
|
||||
|
||||
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;
|
||||
this.protocol41 = options.protocol41;
|
||||
|
||||
if (this.protocol41) {
|
||||
// force set the bit in serverCapabilities1
|
||||
this.serverCapabilities1 |= Client.CLIENT_PROTOCOL_41;
|
||||
}
|
||||
}
|
||||
|
||||
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.protocol41 = (this.serverCapabilities1 & (1 << 9)) > 0;
|
||||
|
||||
if (this.protocol41) {
|
||||
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);
|
||||
} else {
|
||||
this.filler2 = parser.parseFiller(13);
|
||||
}
|
||||
|
||||
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);
|
||||
if (this.protocol41) {
|
||||
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 = null;
|
||||
|
||||
if (typeof this.scrambleBuff2 === 'undefined') {
|
||||
buffer = Buffer.from(this.scrambleBuff1);
|
||||
} else {
|
||||
buffer = Buffer.allocUnsafe(this.scrambleBuff1.length + this.scrambleBuff2.length);
|
||||
this.scrambleBuff1.copy(buffer, 0);
|
||||
this.scrambleBuff2.copy(buffer, this.scrambleBuff1.length);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
};
|
15
node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js
generated
vendored
Normal file
15
node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
module.exports = LocalDataFilePacket;
|
||||
|
||||
/**
|
||||
* Create a new LocalDataFilePacket
|
||||
* @constructor
|
||||
* @param {Buffer} data The data contents of the packet
|
||||
* @public
|
||||
*/
|
||||
function LocalDataFilePacket(data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
LocalDataFilePacket.prototype.write = function(writer) {
|
||||
writer.writeBuffer(this.data);
|
||||
};
|
21
node_modules/mysql/lib/protocol/packets/LocalInfileRequestPacket.js
generated
vendored
Normal file
21
node_modules/mysql/lib/protocol/packets/LocalInfileRequestPacket.js
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
module.exports = LocalInfileRequestPacket;
|
||||
function LocalInfileRequestPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.filename = options.filename;
|
||||
}
|
||||
|
||||
LocalInfileRequestPacket.prototype.parse = function parse(parser) {
|
||||
if (parser.parseLengthCodedNumber() !== null) {
|
||||
var err = new TypeError('Received invalid field length');
|
||||
err.code = 'PARSER_INVALID_FIELD_LENGTH';
|
||||
throw err;
|
||||
}
|
||||
|
||||
this.filename = parser.parsePacketTerminatedString();
|
||||
};
|
||||
|
||||
LocalInfileRequestPacket.prototype.write = function write(writer) {
|
||||
writer.writeLengthCodedNumber(null);
|
||||
writer.writeString(this.filename);
|
||||
};
|
44
node_modules/mysql/lib/protocol/packets/OkPacket.js
generated
vendored
Normal file
44
node_modules/mysql/lib/protocol/packets/OkPacket.js
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
// Language-neutral expression to match ER_UPDATE_INFO
|
||||
var ER_UPDATE_INFO_REGEXP = /^[^:0-9]+: [0-9]+[^:0-9]+: ([0-9]+)[^:0-9]+: [0-9]+[^:0-9]*$/;
|
||||
|
||||
module.exports = OkPacket;
|
||||
function OkPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.fieldCount = undefined;
|
||||
this.affectedRows = undefined;
|
||||
this.insertId = undefined;
|
||||
this.serverStatus = undefined;
|
||||
this.warningCount = undefined;
|
||||
this.message = undefined;
|
||||
this.protocol41 = options.protocol41;
|
||||
}
|
||||
|
||||
OkPacket.prototype.parse = function(parser) {
|
||||
this.fieldCount = parser.parseUnsignedNumber(1);
|
||||
this.affectedRows = parser.parseLengthCodedNumber();
|
||||
this.insertId = parser.parseLengthCodedNumber();
|
||||
if (this.protocol41) {
|
||||
this.serverStatus = parser.parseUnsignedNumber(2);
|
||||
this.warningCount = parser.parseUnsignedNumber(2);
|
||||
}
|
||||
this.message = parser.parsePacketTerminatedString();
|
||||
this.changedRows = 0;
|
||||
|
||||
var m = ER_UPDATE_INFO_REGEXP.exec(this.message);
|
||||
if (m !== null) {
|
||||
this.changedRows = parseInt(m[1], 10);
|
||||
}
|
||||
};
|
||||
|
||||
OkPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, 0x00);
|
||||
writer.writeLengthCodedNumber(this.affectedRows || 0);
|
||||
writer.writeLengthCodedNumber(this.insertId || 0);
|
||||
if (this.protocol41) {
|
||||
writer.writeUnsignedNumber(2, this.serverStatus || 0);
|
||||
writer.writeUnsignedNumber(2, this.warningCount || 0);
|
||||
}
|
||||
writer.writeString(this.message);
|
||||
};
|
14
node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js
generated
vendored
Normal file
14
node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = OldPasswordPacket;
|
||||
function OldPasswordPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.scrambleBuff = options.scrambleBuff;
|
||||
}
|
||||
|
||||
OldPasswordPacket.prototype.parse = function(parser) {
|
||||
this.scrambleBuff = parser.parsePacketTerminatedBuffer();
|
||||
};
|
||||
|
||||
OldPasswordPacket.prototype.write = function(writer) {
|
||||
writer.writeBuffer(this.scrambleBuff);
|
||||
};
|
14
node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js
generated
vendored
Normal file
14
node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = ResultSetHeaderPacket;
|
||||
function ResultSetHeaderPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.fieldCount = options.fieldCount;
|
||||
}
|
||||
|
||||
ResultSetHeaderPacket.prototype.parse = function(parser) {
|
||||
this.fieldCount = parser.parseLengthCodedNumber();
|
||||
};
|
||||
|
||||
ResultSetHeaderPacket.prototype.write = function(writer) {
|
||||
writer.writeLengthCodedNumber(this.fieldCount);
|
||||
};
|
130
node_modules/mysql/lib/protocol/packets/RowDataPacket.js
generated
vendored
Normal file
130
node_modules/mysql/lib/protocol/packets/RowDataPacket.js
generated
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
var Types = require('../constants/types');
|
||||
var Charsets = require('../constants/charsets');
|
||||
var Field = require('./Field');
|
||||
var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53);
|
||||
|
||||
module.exports = RowDataPacket;
|
||||
function RowDataPacket() {
|
||||
}
|
||||
|
||||
Object.defineProperty(RowDataPacket.prototype, 'parse', {
|
||||
configurable : true,
|
||||
enumerable : false,
|
||||
value : parse
|
||||
});
|
||||
|
||||
Object.defineProperty(RowDataPacket.prototype, '_typeCast', {
|
||||
configurable : true,
|
||||
enumerable : false,
|
||||
value : typeCast
|
||||
});
|
||||
|
||||
function parse(parser, fieldPackets, typeCast, nestTables, connection) {
|
||||
var self = this;
|
||||
var next = function () {
|
||||
return self._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings);
|
||||
};
|
||||
|
||||
for (var i = 0; i < fieldPackets.length; i++) {
|
||||
var fieldPacket = fieldPackets[i];
|
||||
var value;
|
||||
|
||||
if (typeof typeCast === 'function') {
|
||||
value = typeCast.apply(connection, [ new Field({ packet: fieldPacket, parser: parser }), next ]);
|
||||
} else {
|
||||
value = (typeCast)
|
||||
? this._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings)
|
||||
: ( (fieldPacket.charsetNr === Charsets.BINARY)
|
||||
? parser.parseLengthCodedBuffer()
|
||||
: parser.parseLengthCodedString() );
|
||||
}
|
||||
|
||||
if (typeof nestTables === 'string' && nestTables.length) {
|
||||
this[fieldPacket.table + nestTables + fieldPacket.name] = value;
|
||||
} else if (nestTables) {
|
||||
this[fieldPacket.table] = this[fieldPacket.table] || {};
|
||||
this[fieldPacket.table][fieldPacket.name] = value;
|
||||
} else {
|
||||
this[fieldPacket.name] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function typeCast(field, parser, timeZone, supportBigNumbers, bigNumberStrings, dateStrings) {
|
||||
var numberString;
|
||||
|
||||
switch (field.type) {
|
||||
case Types.TIMESTAMP:
|
||||
case Types.TIMESTAMP2:
|
||||
case Types.DATE:
|
||||
case Types.DATETIME:
|
||||
case Types.DATETIME2:
|
||||
case Types.NEWDATE:
|
||||
var dateString = parser.parseLengthCodedString();
|
||||
|
||||
if (typeMatch(field.type, dateStrings)) {
|
||||
return dateString;
|
||||
}
|
||||
|
||||
if (dateString === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var originalString = dateString;
|
||||
if (field.type === Types.DATE) {
|
||||
dateString += ' 00:00:00';
|
||||
}
|
||||
|
||||
if (timeZone !== 'local') {
|
||||
dateString += ' ' + timeZone;
|
||||
}
|
||||
|
||||
var dt = new Date(dateString);
|
||||
if (isNaN(dt.getTime())) {
|
||||
return originalString;
|
||||
}
|
||||
|
||||
return dt;
|
||||
case Types.TINY:
|
||||
case Types.SHORT:
|
||||
case Types.LONG:
|
||||
case Types.INT24:
|
||||
case Types.YEAR:
|
||||
case Types.FLOAT:
|
||||
case Types.DOUBLE:
|
||||
numberString = parser.parseLengthCodedString();
|
||||
return (numberString === null || (field.zeroFill && numberString[0] === '0'))
|
||||
? numberString : Number(numberString);
|
||||
case Types.NEWDECIMAL:
|
||||
case Types.LONGLONG:
|
||||
numberString = parser.parseLengthCodedString();
|
||||
return (numberString === null || (field.zeroFill && numberString[0] === '0'))
|
||||
? numberString
|
||||
: ((supportBigNumbers && (bigNumberStrings || (Number(numberString) >= IEEE_754_BINARY_64_PRECISION) || Number(numberString) <= -IEEE_754_BINARY_64_PRECISION))
|
||||
? numberString
|
||||
: Number(numberString));
|
||||
case Types.BIT:
|
||||
return parser.parseLengthCodedBuffer();
|
||||
case Types.STRING:
|
||||
case Types.VAR_STRING:
|
||||
case Types.TINY_BLOB:
|
||||
case Types.MEDIUM_BLOB:
|
||||
case Types.LONG_BLOB:
|
||||
case Types.BLOB:
|
||||
return (field.charsetNr === Charsets.BINARY)
|
||||
? parser.parseLengthCodedBuffer()
|
||||
: parser.parseLengthCodedString();
|
||||
case Types.GEOMETRY:
|
||||
return parser.parseGeometryValue();
|
||||
default:
|
||||
return parser.parseLengthCodedString();
|
||||
}
|
||||
}
|
||||
|
||||
function typeMatch(type, list) {
|
||||
if (Array.isArray(list)) {
|
||||
return list.indexOf(Types[type]) !== -1;
|
||||
} else {
|
||||
return Boolean(list);
|
||||
}
|
||||
}
|
27
node_modules/mysql/lib/protocol/packets/SSLRequestPacket.js
generated
vendored
Normal file
27
node_modules/mysql/lib/protocol/packets/SSLRequestPacket.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
// http://dev.mysql.com/doc/internals/en/ssl.html
|
||||
// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest
|
||||
|
||||
var ClientConstants = require('../constants/client');
|
||||
|
||||
module.exports = SSLRequestPacket;
|
||||
|
||||
function SSLRequestPacket(options) {
|
||||
options = options || {};
|
||||
this.clientFlags = options.clientFlags | ClientConstants.CLIENT_SSL;
|
||||
this.maxPacketSize = options.maxPacketSize;
|
||||
this.charsetNumber = options.charsetNumber;
|
||||
}
|
||||
|
||||
SSLRequestPacket.prototype.parse = function(parser) {
|
||||
// TODO: check SSLRequest packet v41 vs pre v41
|
||||
this.clientFlags = parser.parseUnsignedNumber(4);
|
||||
this.maxPacketSize = parser.parseUnsignedNumber(4);
|
||||
this.charsetNumber = parser.parseUnsignedNumber(1);
|
||||
};
|
||||
|
||||
SSLRequestPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(4, this.clientFlags);
|
||||
writer.writeUnsignedNumber(4, this.maxPacketSize);
|
||||
writer.writeUnsignedNumber(1, this.charsetNumber);
|
||||
writer.writeFiller(23);
|
||||
};
|
20
node_modules/mysql/lib/protocol/packets/StatisticsPacket.js
generated
vendored
Normal file
20
node_modules/mysql/lib/protocol/packets/StatisticsPacket.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
module.exports = StatisticsPacket;
|
||||
function StatisticsPacket() {
|
||||
this.message = undefined;
|
||||
}
|
||||
|
||||
StatisticsPacket.prototype.parse = function(parser) {
|
||||
this.message = parser.parsePacketTerminatedString();
|
||||
|
||||
var items = this.message.split(/\s\s/);
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var m = items[i].match(/^(.+)\:\s+(.+)$/);
|
||||
if (m !== null) {
|
||||
this[m[1].toLowerCase().replace(/\s/g, '_')] = Number(m[2]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
StatisticsPacket.prototype.write = function(writer) {
|
||||
writer.writeString(this.message);
|
||||
};
|
14
node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js
generated
vendored
Normal file
14
node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = UseOldPasswordPacket;
|
||||
function UseOldPasswordPacket(options) {
|
||||
options = options || {};
|
||||
|
||||
this.firstByte = options.firstByte || 0xfe;
|
||||
}
|
||||
|
||||
UseOldPasswordPacket.prototype.parse = function(parser) {
|
||||
this.firstByte = parser.parseUnsignedNumber(1);
|
||||
};
|
||||
|
||||
UseOldPasswordPacket.prototype.write = function(writer) {
|
||||
writer.writeUnsignedNumber(1, this.firstByte);
|
||||
};
|
23
node_modules/mysql/lib/protocol/packets/index.js
generated
vendored
Normal file
23
node_modules/mysql/lib/protocol/packets/index.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
exports.AuthSwitchRequestPacket = require('./AuthSwitchRequestPacket');
|
||||
exports.AuthSwitchResponsePacket = require('./AuthSwitchResponsePacket');
|
||||
exports.ClientAuthenticationPacket = require('./ClientAuthenticationPacket');
|
||||
exports.ComChangeUserPacket = require('./ComChangeUserPacket');
|
||||
exports.ComPingPacket = require('./ComPingPacket');
|
||||
exports.ComQueryPacket = require('./ComQueryPacket');
|
||||
exports.ComQuitPacket = require('./ComQuitPacket');
|
||||
exports.ComStatisticsPacket = require('./ComStatisticsPacket');
|
||||
exports.EmptyPacket = require('./EmptyPacket');
|
||||
exports.EofPacket = require('./EofPacket');
|
||||
exports.ErrorPacket = require('./ErrorPacket');
|
||||
exports.Field = require('./Field');
|
||||
exports.FieldPacket = require('./FieldPacket');
|
||||
exports.HandshakeInitializationPacket = require('./HandshakeInitializationPacket');
|
||||
exports.LocalDataFilePacket = require('./LocalDataFilePacket');
|
||||
exports.LocalInfileRequestPacket = require('./LocalInfileRequestPacket');
|
||||
exports.OkPacket = require('./OkPacket');
|
||||
exports.OldPasswordPacket = require('./OldPasswordPacket');
|
||||
exports.ResultSetHeaderPacket = require('./ResultSetHeaderPacket');
|
||||
exports.RowDataPacket = require('./RowDataPacket');
|
||||
exports.SSLRequestPacket = require('./SSLRequestPacket');
|
||||
exports.StatisticsPacket = require('./StatisticsPacket');
|
||||
exports.UseOldPasswordPacket = require('./UseOldPasswordPacket');
|
Reference in New Issue
Block a user