ICGLabelServer.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. var ws = require("nodejs-websocket");
  2. var querystring = require('querystring');
  3. var url= require("url");
  4. var exec = require('child_process').exec;
  5. var WSserver = ws.createServer(function (conn) {
  6. console.log("New connection");
  7. console.log(conn);
  8. conn.on("text", function (str) {
  9. console.log("Received "+str);
  10. conn.sendText(str.toUpperCase()+"!!!");
  11. broadcast(WSserver, str);
  12. })
  13. conn.on("close", function (code, reason) {
  14. console.log("Connection closed")
  15. })
  16. }).listen(8080);
  17. function broadcast(server, msg) {
  18. server.connections.forEach(function (conn) {
  19. conn.sendText(msg)
  20. })
  21. }
  22. var http = require('http');
  23. var HTMLserver = http.createServer(function(request, response) {
  24. console.log((new Date()) + ' Received request for ' + request.url);
  25. var myQuery= url.parse(request.url, true);
  26. console.log(myQuery);
  27. if(myQuery.query.command=="webReboot"){
  28. console.log("will try to reboot lighttpd");
  29. exec('systemctl stop lighttpd && systemctl start lighttpd', function(error, stdout, stderr) {
  30. if(error){
  31. console.error(`exec error: ${error}`);
  32. return;
  33. }
  34. });
  35. }
  36. if(request.method == 'POST') {
  37. processPost(request, response, function() {
  38. response.writeHead(200, "OK", {'Content-Type': 'text/plain'});
  39. response.end();
  40. broadcast(WSserver, JSON.stringify(request.post));
  41. })
  42. } else {
  43. response.writeHead(404);
  44. response.end();
  45. }
  46. });
  47. HTMLserver.listen(8081, function() {
  48. console.log((new Date()) + ' HTMLServer is listening on port 8081');
  49. });
  50. function processPost(request, response, callback) {
  51. var queryData = "";
  52. if(typeof callback !== 'function') return null;
  53. if(request.method == 'POST') {
  54. request.on('data', function(data) {
  55. queryData += data;
  56. if(queryData.length > 1e6) {
  57. queryData = "";
  58. response.writeHead(413, {'Content-Type': 'text/plain'}).end();
  59. request.connection.destroy();
  60. }
  61. });
  62. request.on('end', function() {
  63. request.post = querystring.parse(queryData);
  64. callback();
  65. });
  66. } else {
  67. response.writeHead(405, {'Content-Type': 'text/plain'});
  68. response.end();
  69. }
  70. }