| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | var Sequence = require('./Sequence');var Util     = require('util');var Packets  = require('../packets');var Auth     = require('../Auth');module.exports = ChangeUser;Util.inherits(ChangeUser, Sequence);function ChangeUser(options, callback) {  Sequence.call(this, options, callback);  this._user          = options.user;  this._password      = options.password;  this._database      = options.database;  this._charsetNumber = options.charsetNumber;  this._currentConfig = options.currentConfig;}ChangeUser.prototype.determinePacket = function determinePacket(firstByte) {  switch (firstByte) {    case 0xfe: return Packets.AuthSwitchRequestPacket;    case 0xff: return Packets.ErrorPacket;    default: return undefined;  }};ChangeUser.prototype.start = function(handshakeInitializationPacket) {  var scrambleBuff = handshakeInitializationPacket.scrambleBuff();  scrambleBuff     = Auth.token(this._password, scrambleBuff);  var packet = new Packets.ComChangeUserPacket({    user          : this._user,    scrambleBuff  : scrambleBuff,    database      : this._database,    charsetNumber : this._charsetNumber  });  this._currentConfig.user          = this._user;  this._currentConfig.password      = this._password;  this._currentConfig.database      = this._database;  this._currentConfig.charsetNumber = this._charsetNumber;  this.emit('packet', packet);};ChangeUser.prototype['AuthSwitchRequestPacket'] = function (packet) {  var name = packet.authMethodName;  var data = Auth.auth(name, packet.authMethodData, {    password: this._password  });  if (data !== undefined) {    this.emit('packet', new Packets.AuthSwitchResponsePacket({      data: data    }));  } else {    var err   = new Error('MySQL is requesting the ' + name + ' authentication method, which is not supported.');    err.code  = 'UNSUPPORTED_AUTH_METHOD';    err.fatal = true;    this.end(err);  }};ChangeUser.prototype['ErrorPacket'] = function(packet) {  var err = this._packetToError(packet);  err.fatal = true;  this.end(err);};
 |