58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
var mysql = require('../index.js');
|
|
var flags = require('../lib/constants/client.js');
|
|
var auth = require('../lib/auth_41.js');
|
|
|
|
function authenticate(params, cb) {
|
|
console.log(params);
|
|
var doubleSha = auth.doubleSha1('pass123');
|
|
var isValid = auth.verifyToken(params.authPluginData1, params.authPluginData2, params.authToken, doubleSha);
|
|
if (isValid)
|
|
cb(null);
|
|
else
|
|
// for list of codes lib/constants/errors.js
|
|
cb(null, { message: 'wrong password dude', code: 1045});
|
|
}
|
|
|
|
var server = mysql.createServer();
|
|
server.listen(3333);
|
|
server.on('connection', function(conn) {
|
|
|
|
// we can deny connection here:
|
|
// conn.writeError({ message: 'secret', code: 123 });
|
|
// conn.close();
|
|
conn.serverHandshake({
|
|
protocolVersion: 10,
|
|
serverVersion: '5.6.10', //'node.js rocks',
|
|
connectionId: 1234,
|
|
statusFlags: 2,
|
|
characterSet: 8,
|
|
capabilityFlags: 0xffffff,
|
|
authCallback: authenticate
|
|
});
|
|
|
|
conn.on('field_list', function(table, fields) {
|
|
console.log('FIELD LIST:', table, fields);
|
|
conn.writeEof();
|
|
});
|
|
|
|
conn.on('query', function(query) {
|
|
conn.writeColumns([{
|
|
catalog: 'def',
|
|
schema: 'test',
|
|
table: 'test_table',
|
|
orgTable: 'test_table',
|
|
name: 'beta',
|
|
orgName: 'beta',
|
|
characterSet: 33,
|
|
columnLength: 384,
|
|
columnType: 253,
|
|
flags: 0,
|
|
decimals: 0
|
|
}]);
|
|
conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']);
|
|
conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']);
|
|
conn.writeEof();
|
|
conn.close();
|
|
});
|
|
});
|