From 9edccab487350557792948e355240d079d005737 Mon Sep 17 00:00:00 2001 From: zefie Date: Fri, 7 Oct 2022 21:28:44 -0400 Subject: [PATCH] add wtv-admin:/reloadconfig --- .../ServiceVault/wtv-admin/admin.js | 2 +- .../ServiceVault/wtv-admin/reloadconfig.js | 56 +++++++++++++++++++ zefie_wtvp_minisrv/WTVShared.js | 8 +-- zefie_wtvp_minisrv/app.js | 2 +- 4 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js index a9a9ac56..599547c2 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js @@ -63,7 +63,7 @@ if (auth === true) { Polyzoot a User - +Reload Config diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js new file mode 100644 index 00000000..27bfdc72 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js @@ -0,0 +1,56 @@ +var minisrv_service_file = true; + +var WTVAdmin = require("./WTVAdmin.js"); +var wtva = new WTVAdmin(minisrv_config, ssid_sessions[socket.ssid], service_name); +var auth = wtva.isAuthorized(); +if (auth === true) { + var password = null; + if (request_headers.Authorization) { + var authheader = request_headers.Authorization.split(' '); + if (authheader[0] == "Basic") { + password = Buffer.from(authheader[1], 'base64').toString(); + if (password) password = password.split(':')[1]; + } + } + if (wtva.checkPassword(password)) { + reloadConfig(); + headers = `200 OK +Content-Type: text/html +wtv-expire-all: wtv-admin:/reloadconfig +wtv-noback-all: wtv-admin:/reloadconfig`; + data = ` + + +${minisrv_config.config.service_name} Admin Tricks + + + + +
+
+

${minisrv_config.config.service_name} Admin Tricks

+
+ + + +
+

Reload Config

+The config.json and user_config.json files has been reloaded.
+If you added a new service, it will not bind without a restart. +
+

+Go Back +

+ + +`; + } else { + var errpage = wtvshared.doErrorPage(401, "Please enter the administration password, you can leave the username blank."); + headers = errpage[0]; + data = errpage[1]; + } +} else { + var errpage = wtvshared.doErrorPage(403, auth); + headers = errpage[0]; + data = errpage[1]; +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/WTVShared.js index b87c2818..cb7e11df 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/WTVShared.js @@ -164,8 +164,8 @@ class WTVShared { } - readMiniSrvConfig(user_config = true, notices = true) { - if (notices) console.log(" *** Reading global configuration..."); + readMiniSrvConfig(user_config = true, notices = true, reload_notice = false) { + if (notices || reload_notice) console.log(" *** Reading global configuration..."); try { var minisrv_config = JSON.parse(this.fs.readFileSync(__dirname + this.path.sep + "config.json")); } catch (e) { @@ -189,7 +189,7 @@ class WTVShared { if (user_config) { try { - if (notices) console.log(" *** Reading user configuration..."); + if (notices || reload_notice) console.log(" *** Reading user configuration..."); var minisrv_user_config = this.getUserConfig() try { minisrv_config = integrateConfig(minisrv_config, minisrv_user_config) @@ -244,7 +244,7 @@ class WTVShared { } } - if (notices) console.log(" *** Configuration successfully read."); + if (notices || reload_notice) console.log(" *** Configuration successfully read."); this.minisrv_config = minisrv_config; return this.minisrv_config; } diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 31c1def2..253cec76 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1732,7 +1732,7 @@ function getGitRevision() { var minisrv_config = null; function reloadConfig() { - minisrv_config = wtvshared.readMiniSrvConfig(true, false); // snatches minisrv_config + minisrv_config = wtvshared.readMiniSrvConfig(true, false, true); // snatches minisrv_config return minisrv_config; }