change_user.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. var CommandCode = require('../constants/commands.js');
  2. var Packet = require('../packets/packet.js');
  3. var auth41 = require('../auth_41.js');
  4. function ChangeUser(opts)
  5. {
  6. this.user = opts.user || '';
  7. this.database = opts.database || '';
  8. this.password = opts.password || '';
  9. this.passwordSha1 = opts.passwordSha1;
  10. this.authPluginData1 = opts.authPluginData1;
  11. this.authPluginData2 = opts.authPluginData2;
  12. var authToken;
  13. if (this.passwordSha1) {
  14. authToken = auth41.calculateTokenFromPasswordSha(this.passwordSha1, this.authPluginData1, this.authPluginData2);
  15. } else {
  16. authToken = auth41.calculateToken(this.password, this.authPluginData1, this.authPluginData2);
  17. }
  18. this.authToken = authToken;
  19. this.charsetNumber = opts.charsetNumber;
  20. }
  21. // TODO
  22. //ChangeUser.fromPacket = function(packet)
  23. //};
  24. ChangeUser.prototype.toPacket = function()
  25. {
  26. if (typeof this.user != 'string')
  27. throw new Error('"user" connection config prperty must be a string');
  28. if (typeof this.database != 'string')
  29. throw new Error('"database" connection config prperty must be a string');
  30. var length = 4 + 1 + (1 + this.authToken.length) + (2 + this.user.length + this.database.length) + 2;
  31. var buffer = new Buffer(length);
  32. var packet = new Packet(0, buffer, 0, length);
  33. packet.offset = 4;
  34. packet.writeInt8(CommandCode.CHANGE_USER);
  35. packet.writeNullTerminatedString(this.user);
  36. packet.writeInt8(this.authToken.length);
  37. packet.writeBuffer(this.authToken);
  38. packet.writeNullTerminatedString(this.database);
  39. packet.writeInt16(this.charsetNumber);
  40. return packet;
  41. };
  42. module.exports = ChangeUser;