diff --git a/.gitignore b/.gitignore index e2f0383a2..6c94cbad2 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ out/ /src/bin/convertSettings.json /src/bin/etherpad-1.deb /src/bin/node.exe +plugin_packages \ No newline at end of file diff --git a/src/package.json b/src/package.json index 14d13aa8d..b64e2f231 100644 --- a/src/package.json +++ b/src/package.json @@ -56,6 +56,7 @@ "npm": "^6.14.18", "openapi-backend": "^5.10.5", "proxy-addr": "^2.0.7", + "live-plugin-manager": "^0.18.1", "rate-limiter-flexible": "^3.0.0", "rehype": "^13.0.1", "rehype-minify-whitespace": "^6.0.0", diff --git a/src/static/js/pluginfw/installer.js b/src/static/js/pluginfw/installer.js index 6c5784b00..c283faff8 100644 --- a/src/static/js/pluginfw/installer.js +++ b/src/static/js/pluginfw/installer.js @@ -6,9 +6,12 @@ const hooks = require('./hooks'); const runCmd = require('../../../node/utils/run_cmd'); const settings = require('../../../node/utils/Settings'); const axios = require('axios'); - +const {PluginManager} = require('live-plugin-manager'); const logger = log4js.getLogger('plugins'); +exports.manager = new PluginManager(); + + const onAllTasksFinished = async () => { settings.reloadSettings(); await hooks.aCallAll('loadSettings', {settings}); @@ -72,19 +75,19 @@ exports.getAvailablePlugins = (maxCacheAge) => { const nowTimestamp = Math.round(Date.now() / 1000); return new Promise(async (resolve, reject) => { - // check cache age before making any request - if (exports.availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) { - return resolve(exports.availablePlugins); - } + // check cache age before making any request + if (exports.availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) { + return resolve(exports.availablePlugins); + } - await axios.get('https://static.etherpad.org/plugins.json') - .then(pluginsLoaded => { - exports.availablePlugins = pluginsLoaded.data; - cacheTimestamp = nowTimestamp; - resolve(exports.availablePlugins); - }) - }) -} + await axios.get('https://static.etherpad.org/plugins.json') + .then((pluginsLoaded) => { + exports.availablePlugins = pluginsLoaded.data; + cacheTimestamp = nowTimestamp; + resolve(exports.availablePlugins); + }); + }); +}; exports.search = (searchTerm, maxCacheAge) => exports.getAvailablePlugins(maxCacheAge).then( diff --git a/src/static/js/pluginfw/plugins.js b/src/static/js/pluginfw/plugins.js index ec3cfaa92..e8b7cb326 100644 --- a/src/static/js/pluginfw/plugins.js +++ b/src/static/js/pluginfw/plugins.js @@ -8,6 +8,7 @@ const runCmd = require('../../../node/utils/run_cmd'); const tsort = require('./tsort'); const pluginUtils = require('./shared'); const defs = require('./plugin_defs'); +const {manager} = require('./installer'); const logger = log4js.getLogger('plugins'); @@ -124,6 +125,7 @@ exports.getPackages = async () => { }; const loadPlugin = async (packages, pluginName, plugins, parts) => { + console.log('Plugins', manager.list()); const pluginPath = path.resolve(packages[pluginName].path, 'ep.json'); try { const data = await fs.readFile(pluginPath);