1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Add node whitelist function (#1184)

This commit is contained in:
kazuhitoyokoi 2017-03-08 10:00:00 +00:00 committed by Nick O'Leary
parent 27b7fb54e8
commit 7a10636128
2 changed files with 25 additions and 2 deletions

View File

@ -32,6 +32,19 @@ function init(runtime) {
i18n = runtime.i18n; i18n = runtime.i18n;
} }
function isIncluded(name) {
if (settings.nodesIncludes) {
for (var i=0;i<settings.nodesIncludes.length;i++) {
if (settings.nodesIncludes[i] == name) {
return true;
}
}
} else {
return true;
}
return false;
}
function isExcluded(name) { function isExcluded(name) {
if (settings.nodesExcludes) { if (settings.nodesExcludes) {
for (var i=0;i<settings.nodesExcludes.length;i++) { for (var i=0;i<settings.nodesExcludes.length;i++) {
@ -43,7 +56,7 @@ function isExcluded(name) {
return false; return false;
} }
function getLocalFile(file) { function getLocalFile(file) {
if (isExcluded(path.basename(file))) { if (!isIncluded(path.basename(file)) || isExcluded(path.basename(file))) {
return null; return null;
} }
try { try {
@ -105,7 +118,7 @@ function scanDirForNodesModules(dir,moduleName) {
if (/^@/.test(fn)) { if (/^@/.test(fn)) {
results = results.concat(scanDirForNodesModules(path.join(dir,fn),moduleName)); results = results.concat(scanDirForNodesModules(path.join(dir,fn),moduleName));
} else { } else {
if (!isExcluded(fn) && (!moduleName || fn == moduleName)) { if (isIncluded(fn) && !isExcluded(fn) && (!moduleName || fn == moduleName)) {
var pkgfn = path.join(dir,fn,"package.json"); var pkgfn = path.join(dir,fn,"package.json");
try { try {
var pkg = require(pkgfn); var pkg = require(pkgfn);

View File

@ -55,6 +55,16 @@ describe("red/nodes/registry/localfilesystem",function() {
checkNodes(nm.nodes,['TestNode1','MultipleNodes1','NestedNode','TestNode2','TestNode3','TestNode4'],['TestNodeModule']); checkNodes(nm.nodes,['TestNode1','MultipleNodes1','NestedNode','TestNode2','TestNode3','TestNode4'],['TestNodeModule']);
done(); done();
}); });
it("Includes node files from settings",function(done) {
localfilesystem.init({i18n:{registerMessageCatalog:function(){}},events:{emit:function(){}},settings:{nodesIncludes:['TestNode1.js'],coreNodesDir:resourcesDir}});
var nodeList = localfilesystem.getNodeFiles(true);
nodeList.should.have.a.property("node-red");
var nm = nodeList['node-red'];
nm.should.have.a.property('name','node-red');
nm.should.have.a.property("nodes");
checkNodes(nm.nodes,['TestNode1'],['MultipleNodes1','NestedNode','TestNode2','TestNode3','TestNode4','TestNodeModule']);
done();
});
it("Excludes node files from settings",function(done) { it("Excludes node files from settings",function(done) {
localfilesystem.init({i18n:{registerMessageCatalog:function(){}},events:{emit:function(){}},settings:{nodesExcludes:['TestNode1.js'],coreNodesDir:resourcesDir}}); localfilesystem.init({i18n:{registerMessageCatalog:function(){}},events:{emit:function(){}},settings:{nodesExcludes:['TestNode1.js'],coreNodesDir:resourcesDir}});
var nodeList = localfilesystem.getNodeFiles(true); var nodeList = localfilesystem.getNodeFiles(true);