Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //+-----------------------------------------+
- //| TCP Server |
- //| Description: MySQL connector. |
- //| Speaks JSON over TCP |
- //+-----------------------------------------+
- //| Author: /usr/share |
- //+-----------------------------------------+
- //| Dependencies: Node.js, MySQL, |
- //| MySQL for Node.js |
- //+-----------------------------------------+
- /********************************************
- * Standard functions *
- ********************************************/
- /*
- * Deletes trailing spaces
- */
- function trim(str) {
- return str.replace(/^s*/, "").replace(/s*$/, "");
- }
- /*
- * Writes the log with the operations executed in order
- */
- function writeLog(str) {
- var fs = require('fs');
- var log = fs.createWriteStream('log.txt', {'flags': 'a'});
- log.write(str);
- }
- /*
- * Executes DML instructions on the MySQL DB
- * op parameters:
- * [0] Select
- * [1] Insert
- * [2] Update
- * [3] Delete
- */
- function queryDB(request, socket) {
- var Client = require('mysql').Client;
- var client = new Client();
- client.user = 'root';
- client.password = '';
- client.host='127.0.0.1';
- client.port='3306';
- client.database='usrshare';
- var op = request['op'];
- var query;
- // Parse a query from its corresponding op
- if(op == 0) {
- query = 'SELECT * FROM DATA';
- } else if(op == 1) {
- query = "INSERT INTO `usrshare`.`data` (`str`) VALUES ('" + request['data'] + "');";
- } else if(op == 2) {
- query = "DELETE FROM `usrshare`.`data` WHERE `id` = " + request['id'];
- } else if(op == 3) {
- query = "UPDATE `usrshare`.`data` SET `str` = '" + request['data'] + "' where `id` = " + request['id'];
- }else {
- console.log("This shouldn't be happening");
- return null;
- }
- // Query the current database
- client.query(
- query,
- function selectData(err, results, fields) {
- if (err) {
- console.log("Error: " + err.message + "n");
- socket.write("Error: " + err.message + "n");
- writeLog("Error: " + err.message + "n");
- return null;
- }
- client.end();
- if(op == 0) {
- socket.write(JSON.stringify(results) + "n");
- writeLog("op:" + op + "n");
- } else if(op == 1) {
- socket.write("Row insertedn");
- writeLog("op:" + op + " data: " + request['data'] + "n");
- } else if(op == 2) {
- socket.write("Row deletedn");
- writeLog("op:" + op + " id: " + request['id'] + "n");
- } else if(op == 3) {
- writeLog("op:" + op + " id: " + request['id'] + " data: " + request['data'] + "n");
- socket.write("Row updatedn");
- }
- return results;
- });
- }
- //-------------------------------------------
- //-------------------------------------------
- /********************************************
- * Entry point *
- ********************************************/
- if(process.argv.length != 3) {
- console.log('Error, use: ' + process.argv[0] + ' ' + process.argv[1] + ' <port>');
- process.exit(1);
- }
- var port = process.argv[2];
- var net = require('net');
- // Actual server
- var server = net.createServer(function (socket) {
- socket.setEncoding('utf8');
- socket.on('data', function(data) {
- request = JSON.parse(data);
- queryDB(request, socket);
- });
- });
- // Listening on localhost
- server.listen(port, '127.0.0.1');
- console.log('Listening on port ' + port);
Add Comment
Please, Sign In to add comment