const { checkLogin } = require("../util-server"); const { PluginsManager } = require("../plugins-manager"); const { log } = require("../../src/util.js"); /** * Handlers for plugins * @param {Socket} socket Socket.io instance * @param {UptimeKumaServer} server */ module.exports.pluginsHandler = (socket, server) => { const pluginManager = server.getPluginManager(); // Get Plugin List socket.on("getPluginList", async (callback) => { try { checkLogin(socket); log.debug("plugin", "PluginManager.disable: " + PluginsManager.disable); if (PluginsManager.disable) { throw new Error("Plugin Disabled: In order to enable plugin feature, you need to use the default data directory: ./data/"); } let pluginList = await pluginManager.fetchPluginList(); callback({ ok: true, pluginList, }); } catch (error) { log.warn("plugin", "Error: " + error.message); callback({ ok: false, msg: error.message, }); } }); socket.on("installPlugin", async (repoURL, name, callback) => { try { checkLogin(socket); pluginManager.downloadPlugin(repoURL, name); await pluginManager.loadPlugin(name); callback({ ok: true, }); } catch (error) { callback({ ok: false, msg: error.message, }); } }); socket.on("uninstallPlugin", async (name, callback) => { try { checkLogin(socket); await pluginManager.removePlugin(name); callback({ ok: true, }); } catch (error) { callback({ ok: false, msg: error.message, }); } }); };