123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- var Sequence = require('./Sequence');
- var Util = require('util');
- var Packets = require('../packets');
- var Auth = require('../Auth');
- module.exports = Handshake;
- Util.inherits(Handshake, Sequence);
- function Handshake(config, callback) {
- Sequence.call(this, callback);
- this._config = config;
- this._handshakeInitializationPacket = null;
- }
- Handshake.prototype.determinePacket = function(firstByte) {
- if (firstByte === 0xff) {
- return Packets.ErrorPacket;
- }
- if (!this._handshakeInitializationPacket) {
- return Packets.HandshakeInitializationPacket;
- }
- if (firstByte === 0xfe) {
- return Packets.UseOldPasswordPacket;
- }
- };
- Handshake.prototype['HandshakeInitializationPacket'] = function(packet) {
- this._handshakeInitializationPacket = packet;
- this.emit('packet', new Packets.ClientAuthenticationPacket({
- clientFlags : this._config.clientFlags,
- maxPacketSize : this._config.maxPacketSize,
- charsetNumber : this._config.charsetNumber,
- user : this._config.user,
- scrambleBuff : Auth.token(this._config.password, packet.scrambleBuff()),
- database : this._config.database,
- }));
- };
- Handshake.prototype['UseOldPasswordPacket'] = function(packet) {
- if (!this._config.insecureAuth) {
- var err = new Error(
- 'MySQL server is requesting the old and insecure pre-4.1 auth mechanism.' +
- 'Upgrade the user password or use the {insecureAuth: true} option.'
- );
- err.code = 'HANDSHAKE_INSECURE_AUTH';
- err.fatal = true;
- this.end(err);
- return;
- }
- this.emit('packet', new Packets.OldPasswordPacket({
- scrambleBuff : Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._config.password),
- }));
- };
- Handshake.prototype['ErrorPacket'] = function(packet) {
- var err = this._packetToError(packet, true);
- err.fatal = true;
- this.end(err);
- };
|