readConfig.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright (c) 2018 Nikolai Suslov
  2. // Krestianstvo.org MIT license (https://github.com/NikolaySuslov/lcs-reflector/blob/master/LICENSE.md)
  3. var fs = require('fs'),
  4. argv = require('optimist').argv,
  5. logger = require('./logger')
  6. function parseConfigOptions() {
  7. let conf = {
  8. sslOptions: {}
  9. }
  10. var ssl = (argv.s || argv.ssl);
  11. var pass = ((argv.w) ? (argv.w) : undefined);
  12. var sslOptions = {
  13. key: ((argv.k || argv.key) ? fs.readFileSync(argv.k || argv.key) : undefined),
  14. cert: ((argv.c || argv.cert) ? fs.readFileSync(argv.c || argv.cert) : undefined),
  15. ca: ((argv.t || argv.ca) ? fs.readFileSync(argv.t || argv.ca) : undefined),
  16. passphrase: JSON.stringify(pass)
  17. };
  18. conf.sslOptions = sslOptions;
  19. var port = ((argv.p || argv.port) ? (argv.p || argv.port) : undefined);
  20. if (!ssl) {
  21. if (global.configuration.ssl === undefined)
  22. ssl = false;
  23. if (global.configuration.ssl) {
  24. ssl = true;
  25. if (global.configuration.sslKey !== "")
  26. conf.sslOptions.key = fs.readFileSync(global.configuration.sslKey)
  27. if (global.configuration.sslCert !== "")
  28. conf.sslOptions.cert = fs.readFileSync(global.configuration.sslCert)
  29. if (global.configuration.sslCA !== "")
  30. conf.sslOptions.ca = fs.readFileSync(global.configuration.sslCA)
  31. if (global.configuration.certPwd !== "")
  32. conf.sslOptions.passphrase = JSON.stringify(global.configuration.certPwd)
  33. }
  34. }
  35. if (!port) {
  36. if (global.configuration.port === undefined)
  37. global.configuration.port = 3001 //by default
  38. if (global.configuration.port)
  39. port = global.configuration.port
  40. }
  41. conf.ssl = ssl;
  42. conf.port = port
  43. return conf
  44. }
  45. function readConfigFile() {
  46. var configSettings;
  47. var p = process.argv.indexOf('-config');
  48. //This is a bit ugly, but it does beat putting a ton of if/else statements everywhere
  49. var config = p >= 0 ? (process.argv[p + 1]) : './config.json';
  50. logger.warn('loading config from ' + config);
  51. //start the DAL, load configuration file
  52. try {
  53. configSettings = JSON.parse(fs.readFileSync(config).toString());
  54. logger.info('Configuration read.');
  55. } catch (e) {
  56. configSettings = {};
  57. logger.error(e.message);
  58. logger.error('Could not read config file. Loading defaults.');
  59. }
  60. //save configuration into global scope so other modules can use.
  61. global.configuration = configSettings;
  62. }
  63. exports.parseConfigOptions = parseConfigOptions;
  64. exports.readConfigFile = readConfigFile;