nginx.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. const fs = require('fs');
  3. const ejs = require('ejs');
  4. const logger = require('../logger');
  5. const utils = require('../lib/utils');
  6. const error = require('../lib/error');
  7. const internalNginx = {
  8. /**
  9. * @returns {Promise}
  10. */
  11. test: () => {
  12. logger.info('Testing Nginx configuration');
  13. return utils.exec('/usr/sbin/nginx -t');
  14. },
  15. /**
  16. * @returns {Promise}
  17. */
  18. reload: () => {
  19. return internalNginx.test()
  20. .then(() => {
  21. logger.info('Reloading Nginx');
  22. return utils.exec('/usr/sbin/nginx -s reload');
  23. });
  24. },
  25. /**
  26. * @param {Object} host
  27. * @returns {String}
  28. */
  29. getConfigName: host => {
  30. return '/config/nginx/' + host.hostname + '.conf';
  31. },
  32. /**
  33. * @param {Object} host
  34. * @returns {Promise}
  35. */
  36. generateConfig: host => {
  37. return new Promise((resolve, reject) => {
  38. let template = null;
  39. let filename = internalNginx.getConfigName(host);
  40. try {
  41. if (typeof host.type === 'undefined' || !host.type) {
  42. host.type = 'proxy';
  43. }
  44. template = fs.readFileSync(__dirname + '/../templates/' + host.type + '.conf.ejs', {encoding: 'utf8'});
  45. let config_text = ejs.render(template, host);
  46. fs.writeFileSync(filename, config_text, {encoding: 'utf8'});
  47. resolve(true);
  48. } catch (err) {
  49. reject(new error.ConfigurationError(err.message));
  50. }
  51. });
  52. },
  53. /**
  54. * @param {Object} host
  55. * @param {Boolean} [throw_errors]
  56. * @returns {Promise}
  57. */
  58. deleteConfig: (host, throw_errors) => {
  59. return new Promise((resolve, reject) => {
  60. try {
  61. fs.unlinkSync(internalNginx.getConfigName(host));
  62. } catch (err) {
  63. if (throw_errors) {
  64. reject(err);
  65. }
  66. }
  67. resolve();
  68. });
  69. }
  70. };
  71. module.exports = internalNginx;