mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add allowUpdate feature to externalModules.palette
This commit is contained in:
@@ -40,15 +40,42 @@ let installDenyList = [];
|
||||
let installAllAllowed = true;
|
||||
let installVersionRestricted = false;
|
||||
|
||||
let updateAllowed = true;
|
||||
let updateAllowList = ['*'];
|
||||
let updateDenyList = [];
|
||||
let updateAllAllowed = true;
|
||||
|
||||
function init(_settings) {
|
||||
settings = _settings;
|
||||
// TODO: This is duplicated in localfilesystem.js
|
||||
// Should it *all* be managed by util?
|
||||
|
||||
installAllowList = ['*'];
|
||||
installDenyList = [];
|
||||
installAllAllowed = true;
|
||||
installVersionRestricted = false;
|
||||
|
||||
updateAllowed = true;
|
||||
updateAllowList = ['*'];
|
||||
updateDenyList = [];
|
||||
updateAllAllowed = true;
|
||||
|
||||
if (settings.externalModules && settings.externalModules.palette) {
|
||||
|
||||
if (settings.externalModules.palette.allowList || settings.externalModules.palette.denyList) {
|
||||
installAllowList = settings.externalModules.palette.allowList;
|
||||
installDenyList = settings.externalModules.palette.denyList;
|
||||
}
|
||||
|
||||
if (settings.externalModules.palette.hasOwnProperty('allowUpdate')) {
|
||||
updateAllowed = !!settings.externalModules.palette.allowUpdate;
|
||||
}
|
||||
if (settings.externalModules.palette.allowUpdateList || settings.externalModules.palette.denyUpdateList) {
|
||||
updateAllowList = settings.externalModules.palette.allowUpdateList;
|
||||
updateDenyList = settings.externalModules.palette.denyUpdateList;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
installAllowList = registryUtil.parseModuleList(installAllowList);
|
||||
installDenyList = registryUtil.parseModuleList(installDenyList);
|
||||
@@ -64,6 +91,10 @@ function init(_settings) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
updateAllowList = registryUtil.parseModuleList(updateAllowList);
|
||||
updateDenyList = registryUtil.parseModuleList(updateDenyList);
|
||||
updateAllAllowed = updateAllowed ? updateDenyList.length === 0 : false;
|
||||
}
|
||||
|
||||
var activePromise = Promise.resolve();
|
||||
@@ -161,6 +192,15 @@ async function installModule(module,version,url) {
|
||||
isUpgrade = false;
|
||||
}
|
||||
|
||||
if (isUpgrade && !updateAllAllowed) {
|
||||
// Check this module is allowed to be upgraded...
|
||||
if (!updateAllowed || !registryUtil.checkModuleAllowed(module,null,updateAllowList,updateDenyList)) {
|
||||
const e = new Error("Update not allowed");
|
||||
e.code = "update_not_allowed";
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isUpgrade) {
|
||||
log.info(log._("server.install.installing",{name: module,version: version||"latest"}));
|
||||
} else {
|
||||
@@ -238,6 +278,7 @@ async function installModule(module,version,url) {
|
||||
e = new Error("Module not found");
|
||||
e.code = 404;
|
||||
} else {
|
||||
console.log(err);
|
||||
log.warn(log._("server.install.install-failed-long",{name:module}));
|
||||
log.warn("------------------------------------------");
|
||||
log.warn(output);
|
||||
|
Reference in New Issue
Block a user