From 53c06c2b0690d8f5f24ea037a0bb18e0f9a07231 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 16 Sep 2022 17:45:46 +0800 Subject: [PATCH] WIP: Plugin List --- server/server.js | 2 + server/socket-handlers/plugins-handler.js | 25 ++++++++++ src/components/PluginItem.vue | 39 ++++++++++++++++ src/components/settings/Plugins.vue | 56 +++++++++++++++++++++++ src/languages/en.js | 1 + src/pages/Settings.vue | 3 ++ src/router.js | 5 ++ 7 files changed, 131 insertions(+) create mode 100644 server/socket-handlers/plugins-handler.js create mode 100644 src/components/PluginItem.vue create mode 100644 src/components/settings/Plugins.vue diff --git a/server/server.js b/server/server.js index e0c12744..4f20f11c 100644 --- a/server/server.js +++ b/server/server.js @@ -127,6 +127,7 @@ const StatusPage = require("./model/status_page"); const { cloudflaredSocketHandler, autoStart: cloudflaredAutoStart, stop: cloudflaredStop } = require("./socket-handlers/cloudflared-socket-handler"); const { proxySocketHandler } = require("./socket-handlers/proxy-socket-handler"); const { dockerSocketHandler } = require("./socket-handlers/docker-socket-handler"); +const { pluginsHandler } = require("./socket-handlers/plugins-handler"); app.use(express.json()); @@ -1452,6 +1453,7 @@ let needSetup = false; databaseSocketHandler(socket); proxySocketHandler(socket); dockerSocketHandler(socket); + pluginsHandler(socket); log.debug("server", "added all socket handlers"); diff --git a/server/socket-handlers/plugins-handler.js b/server/socket-handlers/plugins-handler.js new file mode 100644 index 00000000..52a5e4d0 --- /dev/null +++ b/server/socket-handlers/plugins-handler.js @@ -0,0 +1,25 @@ +const { checkLogin } = require("../util-server"); +const axios = require("axios"); + +/** + * Handlers for plugins + * @param {Socket} socket Socket.io instance + */ +module.exports.pluginsHandler = (socket) => { + + // Get Plugin List + socket.on("getPluginList", async (callback) => { + try { + checkLogin(socket); + const res = await axios.get("https://uptime.kuma.pet/c/plugins.json"); + callback(res.data); + } catch (error) { + console.log(error); + callback({ + ok: false, + msg: error.message, + }); + } + }); + +}; diff --git a/src/components/PluginItem.vue b/src/components/PluginItem.vue new file mode 100644 index 00000000..bfd5bd2d --- /dev/null +++ b/src/components/PluginItem.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/settings/Plugins.vue b/src/components/settings/Plugins.vue new file mode 100644 index 00000000..7446dd13 --- /dev/null +++ b/src/components/settings/Plugins.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/languages/en.js b/src/languages/en.js index 7d980f63..4880e9e0 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -582,4 +582,5 @@ export default { goAlert: "GoAlert", backupOutdatedWarning: "Deprecated: Since a lot of features added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.", backupRecommend: "Please backup the volume or the data folder (./data/) directly instead.", + loadingError: "Cannot fetch the data, please try again later.", }; diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index efd26ce3..a329aa82 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -101,6 +101,9 @@ export default { backup: { title: this.$t("Backup"), }, + plugins: { + title: this.$t("Plugins"), + }, about: { title: this.$t("About"), }, diff --git a/src/router.js b/src/router.js index 7d29a188..88f4d4a1 100644 --- a/src/router.js +++ b/src/router.js @@ -26,6 +26,7 @@ import Proxies from "./components/settings/Proxies.vue"; import Backup from "./components/settings/Backup.vue"; import About from "./components/settings/About.vue"; import DockerHosts from "./components/settings/Docker.vue"; +import Plugins from "./components/settings/Plugins.vue"; const routes = [ { @@ -112,6 +113,10 @@ const routes = [ path: "backup", component: Backup, }, + { + path: "plugins", + component: Plugins, + }, { path: "about", component: About,