Guest User

Untitled

a guest
Feb 14th, 2018
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. //+-----------------------------------------+
  2. //| TCP Server |
  3. //| Description: MySQL connector. |
  4. //| Speaks JSON over TCP |
  5. //+-----------------------------------------+
  6. //| Author: /usr/share |
  7. //+-----------------------------------------+
  8. //| Dependencies: Node.js, MySQL, |
  9. //| MySQL for Node.js |
  10. //+-----------------------------------------+
  11.  
  12. /********************************************
  13. * Standard functions *
  14. ********************************************/
  15.  
  16. /*
  17. * Deletes trailing spaces
  18. */
  19. function trim(str) {
  20. return str.replace(/^s*/, "").replace(/s*$/, "");
  21. }
  22.  
  23. /*
  24. * Writes the log with the operations executed in order
  25. */
  26. function writeLog(str) {
  27. var fs = require('fs');
  28. var log = fs.createWriteStream('log.txt', {'flags': 'a'});
  29. log.write(str);
  30. }
  31.  
  32. /*
  33. * Executes DML instructions on the MySQL DB
  34. * op parameters:
  35. * [0] Select
  36. * [1] Insert
  37. * [2] Update
  38. * [3] Delete
  39. */
  40. function queryDB(request, socket) {
  41. var Client = require('mysql').Client;
  42. var client = new Client();
  43. client.user = 'root';
  44. client.password = '';
  45. client.host='127.0.0.1';
  46. client.port='3306';
  47. client.database='usrshare';
  48.  
  49. var op = request['op'];
  50. var query;
  51.  
  52. // Parse a query from its corresponding op
  53. if(op == 0) {
  54. query = 'SELECT * FROM DATA';
  55. } else if(op == 1) {
  56. query = "INSERT INTO `usrshare`.`data` (`str`) VALUES ('" + request['data'] + "');";
  57. } else if(op == 2) {
  58. query = "DELETE FROM `usrshare`.`data` WHERE `id` = " + request['id'];
  59. } else if(op == 3) {
  60. query = "UPDATE `usrshare`.`data` SET `str` = '" + request['data'] + "' where `id` = " + request['id'];
  61. }else {
  62. console.log("This shouldn't be happening");
  63. return null;
  64. }
  65.  
  66. // Query the current database
  67. client.query(
  68. query,
  69. function selectData(err, results, fields) {
  70. if (err) {
  71. console.log("Error: " + err.message + "n");
  72. socket.write("Error: " + err.message + "n");
  73. writeLog("Error: " + err.message + "n");
  74. return null;
  75. }
  76. client.end();
  77.  
  78. if(op == 0) {
  79. socket.write(JSON.stringify(results) + "n");
  80. writeLog("op:" + op + "n");
  81. } else if(op == 1) {
  82. socket.write("Row insertedn");
  83. writeLog("op:" + op + " data: " + request['data'] + "n");
  84. } else if(op == 2) {
  85. socket.write("Row deletedn");
  86. writeLog("op:" + op + " id: " + request['id'] + "n");
  87. } else if(op == 3) {
  88. writeLog("op:" + op + " id: " + request['id'] + " data: " + request['data'] + "n");
  89. socket.write("Row updatedn");
  90. }
  91.  
  92. return results;
  93. });
  94. }
  95.  
  96. //-------------------------------------------
  97. //-------------------------------------------
  98.  
  99. /********************************************
  100. * Entry point *
  101. ********************************************/
  102. if(process.argv.length != 3) {
  103. console.log('Error, use: ' + process.argv[0] + ' ' + process.argv[1] + ' <port>');
  104. process.exit(1);
  105. }
  106.  
  107. var port = process.argv[2];
  108. var net = require('net');
  109.  
  110. // Actual server
  111. var server = net.createServer(function (socket) {
  112. socket.setEncoding('utf8');
  113. socket.on('data', function(data) {
  114. request = JSON.parse(data);
  115. queryDB(request, socket);
  116. });
  117. });
  118.  
  119. // Listening on localhost
  120. server.listen(port, '127.0.0.1');
  121. console.log('Listening on port ' + port);
Add Comment
Please, Sign In to add comment