mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
db23c9a52f
- Added a script to install every single plugin, used in development and debugging - Improved certbot plugin install commands - Adjusted some version for plugins to install properly - It's noted that some plugins require deps that do not match other plugins, however these use cases should be extremely rare
107 lines
2.3 KiB
JavaScript
107 lines
2.3 KiB
JavaScript
const _ = require('lodash');
|
|
const exec = require('child_process').exec;
|
|
const execFile = require('child_process').execFile;
|
|
const { Liquid } = require('liquidjs');
|
|
const logger = require('../logger').global;
|
|
const error = require('./error');
|
|
|
|
module.exports = {
|
|
|
|
exec: async function(cmd, options = {}) {
|
|
logger.debug('CMD:', cmd);
|
|
|
|
const { stdout, stderr } = await new Promise((resolve, reject) => {
|
|
const child = exec(cmd, options, (isError, stdout, stderr) => {
|
|
if (isError) {
|
|
reject(new error.CommandError(stderr, isError));
|
|
} else {
|
|
resolve({ stdout, stderr });
|
|
}
|
|
});
|
|
|
|
child.on('error', (e) => {
|
|
reject(new error.CommandError(stderr, 1, e));
|
|
});
|
|
});
|
|
return stdout;
|
|
},
|
|
|
|
/**
|
|
* @param {String} cmd
|
|
* @param {Array} args
|
|
* @returns {Promise}
|
|
*/
|
|
execFile: function (cmd, args) {
|
|
// logger.debug('CMD: ' + cmd + ' ' + (args ? args.join(' ') : ''));
|
|
|
|
return new Promise((resolve, reject) => {
|
|
execFile(cmd, args, function (err, stdout, /*stderr*/) {
|
|
if (err && typeof err === 'object') {
|
|
reject(err);
|
|
} else {
|
|
resolve(stdout.trim());
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Used in objection query builder
|
|
*
|
|
* @param {Array} omissions
|
|
* @returns {Function}
|
|
*/
|
|
omitRow: function (omissions) {
|
|
/**
|
|
* @param {Object} row
|
|
* @returns {Object}
|
|
*/
|
|
return (row) => {
|
|
return _.omit(row, omissions);
|
|
};
|
|
},
|
|
|
|
/**
|
|
* Used in objection query builder
|
|
*
|
|
* @param {Array} omissions
|
|
* @returns {Function}
|
|
*/
|
|
omitRows: function (omissions) {
|
|
/**
|
|
* @param {Array} rows
|
|
* @returns {Object}
|
|
*/
|
|
return (rows) => {
|
|
rows.forEach((row, idx) => {
|
|
rows[idx] = _.omit(row, omissions);
|
|
});
|
|
return rows;
|
|
};
|
|
},
|
|
|
|
/**
|
|
* @returns {Object} Liquid render engine
|
|
*/
|
|
getRenderEngine: function () {
|
|
const renderEngine = new Liquid({
|
|
root: __dirname + '/../templates/'
|
|
});
|
|
|
|
/**
|
|
* nginxAccessRule expects the object given to have 2 properties:
|
|
*
|
|
* directive string
|
|
* address string
|
|
*/
|
|
renderEngine.registerFilter('nginxAccessRule', (v) => {
|
|
if (typeof v.directive !== 'undefined' && typeof v.address !== 'undefined' && v.directive && v.address) {
|
|
return `${v.directive} ${v.address};`;
|
|
}
|
|
return '';
|
|
});
|
|
|
|
return renderEngine;
|
|
}
|
|
};
|