node-query/node_modules/mysql2/lib/packets/change_user.js

51 lines
1.6 KiB
JavaScript

var CommandCode = require('../constants/commands.js');
var Packet = require('../packets/packet.js');
var auth41 = require('../auth_41.js');
function ChangeUser(opts)
{
this.user = opts.user || '';
this.database = opts.database || '';
this.password = opts.password || '';
this.passwordSha1 = opts.passwordSha1;
this.authPluginData1 = opts.authPluginData1;
this.authPluginData2 = opts.authPluginData2;
var authToken;
if (this.passwordSha1) {
authToken = auth41.calculateTokenFromPasswordSha(this.passwordSha1, this.authPluginData1, this.authPluginData2);
} else {
authToken = auth41.calculateToken(this.password, this.authPluginData1, this.authPluginData2);
}
this.authToken = authToken;
this.charsetNumber = opts.charsetNumber;
}
// TODO
//ChangeUser.fromPacket = function(packet)
//};
ChangeUser.prototype.toPacket = function()
{
if (typeof this.user != 'string')
throw new Error('"user" connection config prperty must be a string');
if (typeof this.database != 'string')
throw new Error('"database" connection config prperty must be a string');
var length = 4 + 1 + (1 + this.authToken.length) + (2 + this.user.length + this.database.length) + 2;
var buffer = new Buffer(length);
var packet = new Packet(0, buffer, 0, length);
packet.offset = 4;
packet.writeInt8(CommandCode.CHANGE_USER);
packet.writeNullTerminatedString(this.user);
packet.writeInt8(this.authToken.length);
packet.writeBuffer(this.authToken);
packet.writeNullTerminatedString(this.database);
packet.writeInt16(this.charsetNumber);
return packet;
};
module.exports = ChangeUser;