server.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var mysql = require('../index.js');
  2. var flags = require('../lib/constants/client.js');
  3. var auth = require('../lib/auth_41.js');
  4. function authenticate(params, cb) {
  5. console.log(params);
  6. var doubleSha = auth.doubleSha1('pass123');
  7. var isValid = auth.verifyToken(params.authPluginData1, params.authPluginData2, params.authToken, doubleSha);
  8. if (isValid)
  9. cb(null);
  10. else
  11. // for list of codes lib/constants/errors.js
  12. cb(null, { message: 'wrong password dude', code: 1045});
  13. }
  14. var server = mysql.createServer();
  15. server.listen(3333);
  16. server.on('connection', function(conn) {
  17. // we can deny connection here:
  18. // conn.writeError({ message: 'secret', code: 123 });
  19. // conn.close();
  20. conn.serverHandshake({
  21. protocolVersion: 10,
  22. serverVersion: '5.6.10', //'node.js rocks',
  23. connectionId: 1234,
  24. statusFlags: 2,
  25. characterSet: 8,
  26. capabilityFlags: 0xffffff,
  27. authCallback: authenticate
  28. });
  29. conn.on('field_list', function(table, fields) {
  30. console.log('FIELD LIST:', table, fields);
  31. conn.writeEof();
  32. });
  33. conn.on('query', function(query) {
  34. conn.writeColumns([{
  35. catalog: 'def',
  36. schema: 'test',
  37. table: 'test_table',
  38. orgTable: 'test_table',
  39. name: 'beta',
  40. orgName: 'beta',
  41. characterSet: 33,
  42. columnLength: 384,
  43. columnType: 253,
  44. flags: 0,
  45. decimals: 0
  46. }]);
  47. conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']);
  48. conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']);
  49. conn.writeEof();
  50. conn.close();
  51. });
  52. });