node_vwf.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // Copyright (c) 2018 Nikolai Suslov
  2. // Krestianstvo.org MIT license (https://github.com/NikolaySuslov/lcs-reflector/blob/master/LICENSE.md)
  3. // VWF Apache License (https://github.com/NikolaySuslov/lcs-reflector/blob/master/VWF_LICENSE.md)
  4. var http = require('http'),
  5. https = require('https'),
  6. argv = require('optimist').argv,
  7. sio = require('socket.io'),
  8. config = require('./server/readConfig')
  9. // Basic logging function.
  10. global.log = function () {
  11. var args = Array.prototype.slice.call(arguments);
  12. var level = args.splice(args.length - 1)[0];
  13. if (!isNaN(parseInt(level))) {
  14. level = parseInt(level);
  15. } else {
  16. args.push(level)
  17. level = 1;
  18. };
  19. if (level <= global.logLevel) {
  20. console.log.apply(this, args);
  21. }
  22. };
  23. function consoleNotice(string) {
  24. var brown = '\u001b[33m';
  25. var reset = '\u001b[0m';
  26. global.log(brown + string + reset);
  27. }
  28. function consoleError(string) {
  29. var red = '\u001b[31m';
  30. var reset = '\u001b[0m';
  31. global.log(red + string + reset);
  32. }
  33. //Start the VWF server
  34. function startVWF(reflector) {
  35. config.readConfigFile();
  36. global.logLevel = ((argv.l || argv.log) ? (argv.l || argv.log) : 1);
  37. global.instances = {};
  38. function serve(request, response) {
  39. response.writeHead(200, {
  40. "Content-Type": "application/json"
  41. });
  42. var inst = Object.keys(global.instances);
  43. var jsonobject = {
  44. "reflector": "v0.0.2"
  45. //"instances": inst
  46. }
  47. response.write(JSON.stringify(jsonobject), "utf8");
  48. response.end();
  49. //console.log("Serve here")
  50. }
  51. function OnRequest(request, response) {
  52. try {
  53. serve(request, response);
  54. // vwf.Serve( request, response );
  55. } catch (e) {
  56. response.writeHead(500, {
  57. "Content-Type": "text/plain"
  58. });
  59. response.write(e.toString(), "utf8");
  60. response.end();
  61. }
  62. } // close onRequest
  63. consoleNotice('LogLevel = ' + global.logLevel);
  64. //create the server
  65. var conf = config.parseConfigOptions();
  66. var srv = conf.ssl ? https.createServer(conf.sslOptions, OnRequest).listen(conf.port) : http.createServer(OnRequest).listen(conf.port);
  67. consoleNotice('Serving on port ' + conf.port);
  68. var socketManager = sio.listen(srv,
  69. {
  70. log: false
  71. //pingTimeout: 3600
  72. });
  73. socketManager.set('transports', ['websocket']);
  74. socketManager.sockets.on('connection', reflector.OnConnection);
  75. }
  76. exports.startVWF = startVWF;