Add envVarExcludes setting to block named env vars

This commit is contained in:
Nick O'Leary
2019-03-07 22:54:20 +00:00
parent 3213c03754
commit 28e08ebaf5
4 changed files with 41 additions and 12 deletions

View File

@@ -70,6 +70,7 @@ function init(runtime) {
typeEventRegistered = true;
}
Flow.init(runtime);
flowUtil.init(runtime);
}
function loadFlows() {
@@ -676,7 +677,7 @@ const flowAPI = {
getNode: getNode,
handleError: () => false,
handleStatus: () => false,
getSetting: k => process.env[k]
getSetting: k => flowUtil.getEnvVar(k)
}

View File

@@ -19,6 +19,8 @@ var Log = require("@node-red/util").log;
var subflowInstanceRE = /^subflow:(.+)$/;
var typeRegistry = require("@node-red/registry");
var envVarExcludes = {};
function diffNodes(oldNode,newNode) {
if (oldNode == null) {
return true;
@@ -52,12 +54,8 @@ function mapEnvVarProperties(obj,prop,flow) {
} else if (typeof obj[prop] === 'string') {
if (obj[prop][0] === "$" && (EnvVarPropertyRE_old.test(v) || EnvVarPropertyRE.test(v)) ) {
var envVar = v.substring(2,v.length-1);
if (!flow) {
obj[prop] = process.env.hasOwnProperty(envVar)?process.env[envVar]:v;
} else {
var r = flow.getSetting(envVar);
obj[prop] = r!==undefined?r:obj[prop];
}
var r = flow.getSetting(envVar);
obj[prop] = r!==undefined?r:obj[prop];
}
} else {
for (var p in v) {
@@ -69,7 +67,15 @@ function mapEnvVarProperties(obj,prop,flow) {
}
module.exports = {
init: function(runtime) {
envVarExcludes = {};
if (runtime.settings.hasOwnProperty('envVarExcludes') && Array.isArray(runtime.settings.envVarExcludes)) {
runtime.settings.envVarExcludes.forEach(v => envVarExcludes[v] = true);
}
},
getEnvVar: function(k) {
return !envVarExcludes[k]?process.env[k]:undefined
},
diffNodes: diffNodes,
mapEnvVarProperties: mapEnvVarProperties,