From dd530d6957442c06418d9071c626441ec390012f Mon Sep 17 00:00:00 2001 From: Ryan Blenis Date: Tue, 3 Dec 2019 20:50:09 -0500 Subject: [PATCH 1/2] Fix plugin admin links not working, protect against potential apostrophes in plugin name --- views/default.handlebars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/default.handlebars b/views/default.handlebars index 66af23fd..5055cbe4 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -9539,7 +9539,7 @@ installedPluginList.forEach(function(p){ var cant_action = []; if (p.hasAdminPanel == true && p.status) { - p.nameHtml = '' + p.name + ''; + p.nameHtml = '' + p.name + ''; } else { p.nameHtml = p.name; } From 59af9e7096b14ab309a5e1f1159877be74110368 Mon Sep 17 00:00:00 2001 From: Ryan Blenis Date: Tue, 3 Dec 2019 21:49:06 -0500 Subject: [PATCH 2/2] Update plugin install to try/catch initial instantiation errors --- pluginHandler.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pluginHandler.js b/pluginHandler.js index e324cb21..89193ffd 100644 --- a/pluginHandler.js +++ b/pluginHandler.js @@ -412,12 +412,16 @@ module.exports.pluginHandler = function (parent) { } else { parent.db.updatePlugin(id, { status: 1, version: version_only.name }, func); } - obj.plugins[plugin.shortName] = require(obj.pluginPath + '/' + plugin.shortName + '/' + plugin.shortName + '.js')[plugin.shortName](obj); - obj.exports[plugin.shortName] = obj.plugins[plugin.shortName].exports; - if (typeof obj.plugins[plugin.shortName].server_startup == 'function') obj.plugins[plugin.shortName].server_startup(); - var plugin_config = obj.fs.readFileSync(obj.pluginPath + '/' + plugin.shortName + '/config.json'); - plugin_config = JSON.parse(plugin_config); - parent.db.updatePlugin(plugin._id, plugin_config); + try { + obj.plugins[plugin.shortName] = require(obj.pluginPath + '/' + plugin.shortName + '/' + plugin.shortName + '.js')[plugin.shortName](obj); + obj.exports[plugin.shortName] = obj.plugins[plugin.shortName].exports; + if (typeof obj.plugins[plugin.shortName].server_startup == 'function') obj.plugins[plugin.shortName].server_startup(); + } catch (e) { console.log('Error instantiating new plugin: ', e); } + try { + var plugin_config = obj.fs.readFileSync(obj.pluginPath + '/' + plugin.shortName + '/config.json'); + plugin_config = JSON.parse(plugin_config); + parent.db.updatePlugin(plugin._id, plugin_config); + } catch (e) { console.log('Error reading plugin config upon install'); } parent.updateMeshCore(); }); });