51 lines
1.6 KiB
JavaScript
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;
|