diff --git a/backend/lib/certbot.js b/backend/lib/certbot.js index eb1966dc..0f491883 100644 --- a/backend/lib/certbot.js +++ b/backend/lib/certbot.js @@ -11,7 +11,7 @@ const certbot = { /** * @param {array} pluginKeys */ - installPlugins: async function (pluginKeys) { + installPlugins: async (pluginKeys) => { let hasErrors = false; return new Promise((resolve, reject) => { @@ -21,7 +21,7 @@ const certbot = { } batchflow(pluginKeys).sequential() - .each((i, pluginKey, next) => { + .each((_i, pluginKey, next) => { certbot.installPlugin(pluginKey) .then(() => { next(); @@ -51,7 +51,7 @@ const certbot = { * @param {string} pluginKey * @returns {Object} */ - installPlugin: async function (pluginKey) { + installPlugin: async (pluginKey) => { if (typeof dnsPlugins[pluginKey] === 'undefined') { // throw Error(`Certbot plugin ${pluginKey} not found`); throw new error.ItemNotFoundError(pluginKey); @@ -63,8 +63,14 @@ const certbot = { plugin.version = plugin.version.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT); plugin.dependencies = plugin.dependencies.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT); - const cmd = '. /opt/certbot/bin/activate && pip install --no-cache-dir ' + plugin.dependencies + ' ' + plugin.package_name + plugin.version + ' ' + ' && deactivate'; - return utils.exec(cmd) + const opts = {}; + if (typeof plugin.env === 'object') { + // include process.env in opts + opts.env = Object.assign({}, process.env, plugin.env); + } + + const cmd = `. /opt/certbot/bin/activate && pip install --no-cache-dir ${plugin.dependencies} ${plugin.package_name}${plugin.version} && deactivate`; + return utils.exec(cmd, opts) .then((result) => { logger.complete(`Installed ${pluginKey}`); return result; diff --git a/global/certbot-dns-plugins.json b/global/certbot-dns-plugins.json index 9f878809..87e1de60 100644 --- a/global/certbot-dns-plugins.json +++ b/global/certbot-dns-plugins.json @@ -477,7 +477,10 @@ "version": "~=0.2.1", "dependencies": "PyYAML==5.3.1", "credentials": "dns_powerdns_api_url = https://api.mypowerdns.example.org\ndns_powerdns_api_key = AbCbASsd!@34", - "full_plugin_name": "dns-powerdns" + "full_plugin_name": "dns-powerdns", + "env": { + "SETUPTOOLS_USE_DISTUTILS": "stdlib" + } }, "regru": { "name": "reg.ru",