diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js index 526d7fd4..19dfde37 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/admin.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/ban.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/ban.js index 97b15351..00cf5837 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/ban.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/ban.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteaccount.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteaccount.js index 71a7d395..2a8b5682 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteaccount.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteaccount.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteuser.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteuser.js index 008a191c..5d96215f 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteuser.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/deleteuser.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/findaccount.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/findaccount.js index 738474fb..96d63cac 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/findaccount.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/findaccount.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/polyzoot.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/polyzoot.js index e8d5b612..5ce97658 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/polyzoot.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/polyzoot.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { @@ -20,7 +20,7 @@ if (auth === true) { userAccount.switchUserID(user_info.user_id, false, false); if (request_headers.query.confirm) { var polyzooot = 1407; - var WTVBGMusic = require("./WTVBGMusic.js"); + var WTVBGMusic = require(classPath + "/WTVBGMusic.js"); var wtvbgm = new WTVBGMusic(minisrv_config, userAccount); var bgmcat = wtvbgm.getSongCategory(polyzooot); var music_obj = wtvbgm.getMusicObj(); @@ -35,7 +35,7 @@ if (auth === true) { userAccount.saveSessionData(); } if (request_headers.query.reset) { - var WTVBGMusic = require("./WTVBGMusic.js"); + var WTVBGMusic = require(classPath + "/WTVBGMusic.js"); userAccount.deleteSessionData("wtv-bgmusic") var wtvbgm = new WTVBGMusic(minisrv_config, userAccount); var music_obj = wtvbgm.getMusicObj(true); diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/regenfavs.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/regenfavs.js index 1593eb43..50446a1b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/regenfavs.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/regenfavs.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js index 016026b8..f9b02c6f 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/reloadconfig.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/removeuserpasswd.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/removeuserpasswd.js index 5197ec52..81db23e9 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/removeuserpasswd.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/removeuserpasswd.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); if (auth === true) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/unban.js b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/unban.js index 42097654..e9e7442b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-admin/unban.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-admin/unban.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -var WTVAdmin = require("./WTVAdmin.js"); +var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); var ssids_removed = []; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js index b86c2575..af6f82d8 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -const WTVFlashrom = require("./WTVFlashrom.js"); +const WTVFlashrom = require(classPath + "/WTVFlashrom.js"); request_is_async = true; // this build can be local or on zefie's server diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js index 9f88d21a..4f480948 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -const WTVFlashrom = require("./WTVFlashrom.js"); +const WTVFlashrom = require(classPath + "/WTVFlashrom.js"); request_is_async = true; var bf0app_update = false; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js index 48a50cef..f4ab9230 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -const WTVFlashrom = require("./WTVFlashrom.js"); +const WTVFlashrom = require(classPath + "/WTVFlashrom.js"); var wtvflashrom; request_is_async = true; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js index 00a43579..d3ba940f 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js @@ -1,6 +1,6 @@ var minisrv_service_file = true; -const WTVFlashrom = require("./WTVFlashrom.js"); +const WTVFlashrom = require(classPath + "/WTVFlashrom.js"); request_is_async = true; // this build can be local or on zefie's server diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js index 402760ee..5db5634b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js @@ -25,7 +25,7 @@ async function selectGroup(client, group) { } return false; } catch (e) { - console.log("WTVNews Error -", "Command: grop", e); + console.log("WTVNews Error -", "Command: selectGroup", e); } return false; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js index 99aeba9c..ce5ce4b6 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js @@ -5,7 +5,7 @@ if (!request_headers.query.registering) { headers = errpage[0]; data = errpage[1]; } else { - const WTVRegister = require("./WTVRegister.js") + const WTVRegister = require(classPath + "/WTVRegister.js") var wtvr = new WTVRegister(minisrv_config, SessionStore); var errpage = null; if (!request_headers.query.registering) errpage = wtvshared.doErrorPage(400); diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js index 7cc354e9..23f5934b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js @@ -5,7 +5,7 @@ if (!request_headers.query.registering) { headers = errpage[0]; data = errpage[1]; } else { - const WTVRegister = require("./WTVRegister.js") + const WTVRegister = require(classPath + "/WTVRegister.js") var wtvr = new WTVRegister(minisrv_config); headers = `200 OK Content-Type: text/html`; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/register.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/register.js index ac21d4c5..619a52ce 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/register.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/register.js @@ -3,7 +3,7 @@ var minisrv_service_file = true; headers = `200 OK Content-Type: text/html`; -var WTVRegister = require("./WTVRegister.js"); +var WTVRegister = require(classPath + "/WTVRegister.js"); var wtvr = new WTVRegister(minisrv_config); var namerand = Math.floor(Math.random() * 100000); var nickname = (minisrv_config.config.service_name + '_' + namerand) diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/add-user-password.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/add-user-password.js index 11b19e52..c61e257c 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/add-user-password.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/add-user-password.js @@ -1,7 +1,7 @@ var minisrv_service_file = true; var errpage = null; -const WTVRegister = require("./WTVRegister.js") +const WTVRegister = require(classPath + "/WTVRegister.js") const wtvr = new WTVRegister(minisrv_config, SessionStore); if (session_data.user_id != 0) errpage = wtvshared.doErrorPage(400, "You are not authorized to add users to this account."); diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 26c13a19..5a894196 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1,4 +1,8 @@ 'use strict'; +var classPath = __dirname + "/includes/"; +const { WTVShared, clientShowAlert } = require(classPath + "WTVShared.js"); +const wtvshared = new WTVShared(); // creates minisrv_config +classPath = wtvshared.getAbsolutePath(classPath, __dirname); const fs = require('fs'); const tls = require('tls'); @@ -11,16 +15,14 @@ const crypto = require('crypto') const CryptoJS = require('crypto-js'); const { crc16 } = require('easy-crc'); const process = require('process'); -const WTVSec = require('./WTVSec.js'); -const WTVLzpf = require('./WTVLzpf.js'); -const WTVClientCapabilities = require('./WTVClientCapabilities.js'); -const WTVClientSessionData = require('./WTVClientSessionData.js'); -const WTVMime = require("./WTVMime.js"); -const { WTVShared, clientShowAlert } = require("./WTVShared.js"); -const WTVFlashrom = require("./WTVFlashrom.js"); +const WTVSec = require(classPath + "/WTVSec.js"); +const WTVLzpf = require(classPath + "/WTVLzpf.js"); +const WTVClientCapabilities = require(classPath + "/WTVClientCapabilities.js"); +const WTVClientSessionData = require(classPath + "/WTVClientSessionData.js"); +const WTVMime = require(classPath + "/WTVMime.js"); +const WTVFlashrom = require(classPath + "/WTVFlashrom.js"); const vm = require('vm'); const express = require('express'); -const { url } = require('inspector'); process .on('SIGTERM', shutdown('SIGTERM')) @@ -107,9 +109,10 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa // The ServiceVault scripts will only be allowed to access the following fcnutions/variables. // Furthermore, only modifications to variables in `updateFromVM` will be saved. // Example: an attempt to change "minisrv_config" from a ServiceVault script would be discarded - var WTVGuide = require("./WTVGuide.js"); - var WTVBGMusic = require("./WTVBGMusic.js"); - var WTVDownloadList = require("./WTVDownloadList.js"); + var WTVGuide = require(classPath + "/WTVGuide.js"); + var WTVBGMusic = require(classPath + "/WTVBGMusic.js"); + var WTVDownloadList = require(classPath + "/WTVDownloadList.js"); + var WTVNews = require(classPath + "/WTVNews.js"); // create global context object var contextObj = { @@ -128,6 +131,7 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa "WTVClientCapabilities": WTVClientCapabilities, "WTVDownloadList": WTVDownloadList, "WTVFlashrom": WTVFlashrom, + "WTVNews": WTVNews, "strftime": require('strftime'), "CryptoJS": CryptoJS, "crypto": crypto, @@ -173,16 +177,26 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa "SessionStore": SessionStore, "ssid_sessions": ssid_sessions, "socket_sessions": socket_sessions, - "reloadConfig": reloadConfig + "reloadConfig": reloadConfig, + "classPath": classPath } } var options = {}; if (filename) options = { "filename": filename }; var eval_ctx = new vm.Script(script_data, options) - eval_ctx.runInNewContext(contextObj, { - "breakOnSigint": true - }); + try { + eval_ctx.runInNewContext(contextObj, { + "breakOnSigint": true + }); + } catch (e) { + console.error(e); + } + + // unload modules + wtvshared.unloadModule(classPath + "/WTVGuide.js"); + wtvshared.unloadModule(classPath + "/WTVBGMusic.js"); + wtvshared.unloadModule(classPath + "/WTVDownloadList.js"); return contextObj; // updated context object with whatever global varibles the script set } @@ -1764,7 +1778,6 @@ var z_title = "zefie's wtv minisrv v" + require('./package.json').version; if (git_commit) z_title += " (git " + git_commit + ")"; console.log("**** Welcome to " + z_title + " ****"); -const wtvshared = new WTVShared(); // creates minisrv_config minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config const wtvmime = new WTVMime(minisrv_config); diff --git a/zefie_wtvp_minisrv/diskmap_gen.js b/zefie_wtvp_minisrv/diskmap_gen.js index 6ededbdd..72abf657 100644 --- a/zefie_wtvp_minisrv/diskmap_gen.js +++ b/zefie_wtvp_minisrv/diskmap_gen.js @@ -1,7 +1,7 @@ const process = require('process'); const fs = require('fs'); const path = require('path'); -var { WTVShared, clientShowAlert } = require("./WTVShared.js"); +var { WTVShared, clientShowAlert } = require(classPath + "/WTVShared.js"); const wtvshared = new WTVShared(); // creates minisrv_config var minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config diff --git a/zefie_wtvp_minisrv/WTVAdmin.js b/zefie_wtvp_minisrv/includes/WTVAdmin.js similarity index 97% rename from zefie_wtvp_minisrv/WTVAdmin.js rename to zefie_wtvp_minisrv/includes/WTVAdmin.js index 30a3303c..a358467b 100644 --- a/zefie_wtvp_minisrv/WTVAdmin.js +++ b/zefie_wtvp_minisrv/includes/WTVAdmin.js @@ -6,13 +6,13 @@ class WTVAdmin { wtvr = null; wtvshared = null; wtvclient = null; - WTVClientSessionData = require('./WTVClientSessionData.js'); + WTVClientSessionData = require("./WTVClientSessionData.js"); service_name = "wtv-admin"; constructor(minisrv_config, wtvclient, service_name) { this.minisrv_config = minisrv_config; - var { WTVShared } = require('./WTVShared.js'); - var WTVRegister = require('./WTVRegister.js'); + var { WTVShared } = require("./WTVShared.js"); + var WTVRegister = require("./WTVRegister.js"); this.wtvclient = wtvclient; this.wtvshared = new WTVShared(minisrv_config); this.wtvr = new WTVRegister(minisrv_config); diff --git a/zefie_wtvp_minisrv/WTVBGMusic.js b/zefie_wtvp_minisrv/includes/WTVBGMusic.js similarity index 99% rename from zefie_wtvp_minisrv/WTVBGMusic.js rename to zefie_wtvp_minisrv/includes/WTVBGMusic.js index 0fe4c2a6..298457f9 100644 --- a/zefie_wtvp_minisrv/WTVBGMusic.js +++ b/zefie_wtvp_minisrv/includes/WTVBGMusic.js @@ -1246,7 +1246,7 @@ class WTVBGMusic { constructor(minisrv_config, session_data) { if (!minisrv_config) throw ("minisrv_config required"); if (!session_data) throw ("WTVClientSessionData required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; + var WTVShared = require("./WTVShared.js")['WTVShared']; this.minisrv_config = minisrv_config; this.session_data = session_data; this.wtvshared = new WTVShared(minisrv_config); diff --git a/zefie_wtvp_minisrv/WTVClientCapabilities.js b/zefie_wtvp_minisrv/includes/WTVClientCapabilities.js similarity index 100% rename from zefie_wtvp_minisrv/WTVClientCapabilities.js rename to zefie_wtvp_minisrv/includes/WTVClientCapabilities.js diff --git a/zefie_wtvp_minisrv/WTVClientSessionData.js b/zefie_wtvp_minisrv/includes/WTVClientSessionData.js similarity index 99% rename from zefie_wtvp_minisrv/WTVClientSessionData.js rename to zefie_wtvp_minisrv/includes/WTVClientSessionData.js index 239cae5f..4187369c 100644 --- a/zefie_wtvp_minisrv/WTVClientSessionData.js +++ b/zefie_wtvp_minisrv/includes/WTVClientSessionData.js @@ -1,8 +1,8 @@ const { lib } = require('crypto-js'); const CryptoJS = require('crypto-js'); -const WTVMail = require('./WTVMail.js') -const WTVSec = require('./WTVSec.js'); -const WTVFavorites = require('./WTVFavorites.js'); +const WTVMail = require("./WTVMail.js") +const WTVSec = require("./WTVSec.js"); +const WTVFavorites = require("./WTVFavorites.js"); class WTVClientSessionData { @@ -31,8 +31,8 @@ class WTVClientSessionData { constructor(minisrv_config, ssid) { if (!minisrv_config) throw ("minisrv_config required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; - var WTVMime = require('./WTVMime.js'); + var WTVShared = require("./WTVShared.js")['WTVShared']; + var WTVMime = require("./WTVMime.js"); this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); this.wtvmime = new WTVMime(minisrv_config); diff --git a/zefie_wtvp_minisrv/WTVDownloadList.js b/zefie_wtvp_minisrv/includes/WTVDownloadList.js similarity index 99% rename from zefie_wtvp_minisrv/WTVDownloadList.js rename to zefie_wtvp_minisrv/includes/WTVDownloadList.js index 5de526f0..c76e5bec 100644 --- a/zefie_wtvp_minisrv/WTVDownloadList.js +++ b/zefie_wtvp_minisrv/includes/WTVDownloadList.js @@ -16,7 +16,7 @@ class WTVDownloadList { * @param {string} service_name Service name to use in wtv-urls */ constructor(minisrv_config, service_name = "wtv-disk") { - var { WTVShared, clientShowAlert } = require('./WTVShared.js'); + var { WTVShared, clientShowAlert } = require("./WTVShared.js"); this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); this.clientShowAlert = clientShowAlert; diff --git a/zefie_wtvp_minisrv/WTVFavorites.js b/zefie_wtvp_minisrv/includes/WTVFavorites.js similarity index 98% rename from zefie_wtvp_minisrv/WTVFavorites.js rename to zefie_wtvp_minisrv/includes/WTVFavorites.js index e8ebe808..74e72f03 100644 --- a/zefie_wtvp_minisrv/WTVFavorites.js +++ b/zefie_wtvp_minisrv/includes/WTVFavorites.js @@ -18,9 +18,9 @@ class WTVFavorites { constructor(minisrv_config, wtvclient) { if (!minisrv_config) throw ("minisrv_config required"); if (!wtvclient) throw ("WTVClientSessionData required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; - var WTVMime = require('./WTVMime.js'); - this.WTVClientSessionData = require('./WTVClientSessionData.js'); + var WTVShared = require("./WTVShared.js")['WTVShared']; + var WTVMime = require("./WTVMime.js"); + this.WTVClientSessionData = require("./WTVClientSessionData.js"); this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); this.wtvmime = new WTVMime(minisrv_config); diff --git a/zefie_wtvp_minisrv/WTVFlashrom.js b/zefie_wtvp_minisrv/includes/WTVFlashrom.js similarity index 99% rename from zefie_wtvp_minisrv/WTVFlashrom.js rename to zefie_wtvp_minisrv/includes/WTVFlashrom.js index 03c44d67..9fd1a10f 100644 --- a/zefie_wtvp_minisrv/WTVFlashrom.js +++ b/zefie_wtvp_minisrv/includes/WTVFlashrom.js @@ -12,7 +12,7 @@ class WTVFlashrom { constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, no_debug = false) { - var { WTVShared } = require('./WTVShared.js'); + var { WTVShared } = require("./WTVShared.js"); this.service_vaults = service_vaults; this.service_name = service_name; this.use_zefie_server = use_zefie_server; diff --git a/zefie_wtvp_minisrv/WTVGuide.js b/zefie_wtvp_minisrv/includes/WTVGuide.js similarity index 94% rename from zefie_wtvp_minisrv/WTVGuide.js rename to zefie_wtvp_minisrv/includes/WTVGuide.js index dcb797ab..47e93726 100644 --- a/zefie_wtvp_minisrv/WTVGuide.js +++ b/zefie_wtvp_minisrv/includes/WTVGuide.js @@ -8,26 +8,13 @@ class WTVGuide { constructor(minisrv_config, session_data, socket, runScriptInVM) { if (!minisrv_config) throw ("minisrv_config required"); if (!session_data) throw ("WTVClientSessionData required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; + var WTVShared = require("./WTVShared.js")['WTVShared']; this.minisrv_config = minisrv_config; this.session_data = session_data; this.wtvshared = new WTVShared(minisrv_config); this.runScriptInVM = runScriptInVM; } - unloadModule(moduleName) { - // for handling template classes - var solvedName = require.resolve(moduleName), - nodeModule = require.cache[solvedName]; - if (nodeModule) { - for (var i = 0; i < nodeModule.children.length; i++) { - var child = nodeModule.children[i]; - deleteModule(child.filename); - } - delete require.cache[solvedName]; - } - } - generatePage(topic, subtopic, page = null) { // sanitize a bit @@ -197,7 +184,7 @@ class WTVGuide { console.log(" * wtv-template error:", e) } // unload and clean up module - this.unloadModule(template); + wtvshared.unloadModule(template); } // return generated page diff --git a/zefie_wtvp_minisrv/WTVLzpf.js b/zefie_wtvp_minisrv/includes/WTVLzpf.js similarity index 100% rename from zefie_wtvp_minisrv/WTVLzpf.js rename to zefie_wtvp_minisrv/includes/WTVLzpf.js diff --git a/zefie_wtvp_minisrv/WTVMail.js b/zefie_wtvp_minisrv/includes/WTVMail.js similarity index 99% rename from zefie_wtvp_minisrv/WTVMail.js rename to zefie_wtvp_minisrv/includes/WTVMail.js index d4bd1a70..426f862c 100644 --- a/zefie_wtvp_minisrv/WTVMail.js +++ b/zefie_wtvp_minisrv/includes/WTVMail.js @@ -22,9 +22,9 @@ class WTVMail { constructor(minisrv_config, wtvclient) { if (!minisrv_config) throw ("minisrv_config required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; - var WTVMime = require('./WTVMime.js'); - this.WTVClientSessionData = require('./WTVClientSessionData.js'); + var WTVShared = require("./WTVShared.js")['WTVShared']; + var WTVMime = require("./WTVMime.js"); + this.WTVClientSessionData = require("./WTVClientSessionData.js"); this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); this.wtvmime = new WTVMime(minisrv_config); diff --git a/zefie_wtvp_minisrv/WTVMime.js b/zefie_wtvp_minisrv/includes/WTVMime.js similarity index 99% rename from zefie_wtvp_minisrv/WTVMime.js rename to zefie_wtvp_minisrv/includes/WTVMime.js index b5d5b16f..f9b90090 100644 --- a/zefie_wtvp_minisrv/WTVMime.js +++ b/zefie_wtvp_minisrv/includes/WTVMime.js @@ -11,7 +11,7 @@ class WTVMime { constructor(minisrv_config) { - var WTVShared = require('./WTVShared.js')['WTVShared']; + var WTVShared = require("./WTVShared.js")['WTVShared']; this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); if (!String.prototype.reverse) { diff --git a/zefie_wtvp_minisrv/includes/WTVNews.js b/zefie_wtvp_minisrv/includes/WTVNews.js new file mode 100644 index 00000000..2eefbe2b --- /dev/null +++ b/zefie_wtvp_minisrv/includes/WTVNews.js @@ -0,0 +1,5 @@ +class WTVNews { + +} + +module.exports = WTVNews; \ No newline at end of file diff --git a/zefie_wtvp_minisrv/WTVRegister.js b/zefie_wtvp_minisrv/includes/WTVRegister.js similarity index 100% rename from zefie_wtvp_minisrv/WTVRegister.js rename to zefie_wtvp_minisrv/includes/WTVRegister.js diff --git a/zefie_wtvp_minisrv/WTVSec.js b/zefie_wtvp_minisrv/includes/WTVSec.js similarity index 100% rename from zefie_wtvp_minisrv/WTVSec.js rename to zefie_wtvp_minisrv/includes/WTVSec.js diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/includes/WTVShared.js similarity index 94% rename from zefie_wtvp_minisrv/WTVShared.js rename to zefie_wtvp_minisrv/includes/WTVShared.js index 50d814cd..a4c796fd 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/includes/WTVShared.js @@ -13,6 +13,7 @@ class WTVShared { html_entities = require('html-entities'); // used externally by service scripts sanitizeHtml = require('sanitize-html'); iconv = require('iconv-lite'); + parentDirectory = process.cwd() minisrv_config = []; @@ -38,6 +39,7 @@ class WTVShared { } } } + getServiceString(service, overrides = {}) { // used externally by service scripts if (service === "all") { @@ -159,7 +161,7 @@ class WTVShared { returnAbsolutePath(check_path) { if (check_path.substring(0, 1) != this.path.sep && check_path.substring(1, 1) != ":") { // non-absolute path, so use current directory as base - check_path = (__dirname + this.path.sep + check_path); + check_path = this.parentDirectory + this.path.sep + check_path; } else { // already absolute path } @@ -176,9 +178,10 @@ class WTVShared { getUserConfig() { try { - if (this.fs.lstatSync(__dirname + "/user_config.json")) { + var user_config_filename = this.getAbsolutePath("user_config.json", this.parentDirectory); + if (this.fs.lstatSync(user_config_filename)) { try { - var minisrv_user_config = JSON.parse(this.fs.readFileSync(__dirname + this.path.sep + "user_config.json")); + var minisrv_user_config = JSON.parse(this.fs.readFileSync(user_config_filename)); } catch (e) { console.error("ERROR: Could not read user_config.json", e); var throw_me = true; @@ -198,7 +201,7 @@ class WTVShared { 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")); + var minisrv_config = JSON.parse(this.fs.readFileSync(this.getAbsolutePath("config.json", __dirname))); } catch (e) { throw ("ERROR: Could not read config.json", e); } @@ -222,6 +225,7 @@ class WTVShared { try { if (notices || reload_notice) console.log(" *** Reading user configuration..."); var minisrv_user_config = this.getUserConfig() + if (!minisrv_user_config) throw "ERROR: Could not read user_config.json"; try { minisrv_config = integrateConfig(minisrv_config, minisrv_user_config) } catch (e) { @@ -290,7 +294,7 @@ class WTVShared { var new_user_config = {}; Object.assign(new_user_config, minisrv_user_config, config); if (this.minisrv_config.config.debug_flags.debug) console.log(" * Writing new user configuration..."); - this.fs.writeFileSync(__dirname + this.path.sep + "user_config.json", JSON.stringify(new_user_config, null, "\t")); + this.fs.writeFileSync(this.getAbsolutePath("user_config.json", parentDirectory), JSON.stringify(new_user_config, null, "\t")); } catch (e) { if (this.minisrv_config.config.debug_flags) { @@ -460,19 +464,35 @@ class WTVShared { return obj; } + unloadModule(moduleName) { + // for handling template classes + var solvedName = require.resolve(moduleName), + nodeModule = require.cache[solvedName]; + if (nodeModule) { + for (var i = 0; i < nodeModule.children.length; i++) { + var child = nodeModule.children[i]; + this.unloadModule(child.filename); + } + delete require.cache[solvedName]; + } + } + /** * Returns an absolute path * @param {string} path * @param {string} directory Root directory */ - getAbsolutePath(path, directory = __dirname) { - if (path.substring(0, 1) != this.path.sep && path.substring(1, 1) != ":") { - // non-absolute path, so use current directory as base - path = (directory + this.path.sep + path); - } else { - // already absolute path + getAbsolutePath(path, directory = null) { + if (directory) { + if (path.indexOf(directory) == -1) { + directory = this.getAbsolutePath(directory); + try { + if (this.fs.lstatSync(directory).isDirectory()) directory = directory + this.path.sep; + } catch (e) { } + path = directory + path; + } } - return this.fixPathSlashes(path); + return this.fixPathSlashes(this.path.resolve(path)); } /** diff --git a/zefie_wtvp_minisrv/config.json b/zefie_wtvp_minisrv/includes/config.json similarity index 100% rename from zefie_wtvp_minisrv/config.json rename to zefie_wtvp_minisrv/includes/config.json diff --git a/zefie_wtvp_minisrv/package-lock.json b/zefie_wtvp_minisrv/package-lock.json index 52173263..5fd8a344 100644 --- a/zefie_wtvp_minisrv/package-lock.json +++ b/zefie_wtvp_minisrv/package-lock.json @@ -1,12 +1,12 @@ { "name": "zefie_wtvp_minisrv", - "version": "0.9.31", + "version": "0.9.32", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "zefie_wtvp_minisrv", - "version": "0.9.31", + "version": "0.9.32", "license": "GPL3", "dependencies": { "adm-zip": "^0.5.9", diff --git a/zefie_wtvp_minisrv/packer.js b/zefie_wtvp_minisrv/packer.js index 979dc1a6..8b99a2ee 100644 --- a/zefie_wtvp_minisrv/packer.js +++ b/zefie_wtvp_minisrv/packer.js @@ -1,4 +1,4 @@ -const { WTVShared } = require("./WTVShared.js"); +const { WTVShared } = require(classPath + "/WTVShared.js"); var wtvshared = new WTVShared(null, true); const fs = require('fs'); diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj index e1d9d7ba..280df011 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj @@ -31,7 +31,10 @@ - + + Code + + Code @@ -1101,47 +1104,48 @@ - - + + Code - + Code - + Code - + Code - - + + Code - - + + Code - + Code - + Code - + Code - + Code - + Code +