move classes and base config into includes directory

This commit is contained in:
zefie
2022-10-11 10:20:25 -04:00
parent eeac2621e3
commit 4589d7a4e8
40 changed files with 130 additions and 101 deletions

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {
@@ -20,7 +20,7 @@ if (auth === true) {
userAccount.switchUserID(user_info.user_id, false, false); userAccount.switchUserID(user_info.user_id, false, false);
if (request_headers.query.confirm) { if (request_headers.query.confirm) {
var polyzooot = 1407; var polyzooot = 1407;
var WTVBGMusic = require("./WTVBGMusic.js"); var WTVBGMusic = require(classPath + "/WTVBGMusic.js");
var wtvbgm = new WTVBGMusic(minisrv_config, userAccount); var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
var bgmcat = wtvbgm.getSongCategory(polyzooot); var bgmcat = wtvbgm.getSongCategory(polyzooot);
var music_obj = wtvbgm.getMusicObj(); var music_obj = wtvbgm.getMusicObj();
@@ -35,7 +35,7 @@ if (auth === true) {
userAccount.saveSessionData(); userAccount.saveSessionData();
} }
if (request_headers.query.reset) { if (request_headers.query.reset) {
var WTVBGMusic = require("./WTVBGMusic.js"); var WTVBGMusic = require(classPath + "/WTVBGMusic.js");
userAccount.deleteSessionData("wtv-bgmusic") userAccount.deleteSessionData("wtv-bgmusic")
var wtvbgm = new WTVBGMusic(minisrv_config, userAccount); var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
var music_obj = wtvbgm.getMusicObj(true); var music_obj = wtvbgm.getMusicObj(true);

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
if (auth === true) { if (auth === true) {

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; 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 wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized(); var auth = wtva.isAuthorized();
var ssids_removed = []; var ssids_removed = [];

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; var minisrv_service_file = true;
const WTVFlashrom = require("./WTVFlashrom.js"); const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true; request_is_async = true;
// this build can be local or on zefie's server // this build can be local or on zefie's server

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; var minisrv_service_file = true;
const WTVFlashrom = require("./WTVFlashrom.js"); const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true; request_is_async = true;
var bf0app_update = false; var bf0app_update = false;

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; var minisrv_service_file = true;
const WTVFlashrom = require("./WTVFlashrom.js"); const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
var wtvflashrom; var wtvflashrom;
request_is_async = true; request_is_async = true;

View File

@@ -1,6 +1,6 @@
var minisrv_service_file = true; var minisrv_service_file = true;
const WTVFlashrom = require("./WTVFlashrom.js"); const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true; request_is_async = true;
// this build can be local or on zefie's server // this build can be local or on zefie's server

View File

@@ -25,7 +25,7 @@ async function selectGroup(client, group) {
} }
return false; return false;
} catch (e) { } catch (e) {
console.log("WTVNews Error -", "Command: grop", e); console.log("WTVNews Error -", "Command: selectGroup", e);
} }
return false; return false;

View File

@@ -5,7 +5,7 @@ if (!request_headers.query.registering) {
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {
const WTVRegister = require("./WTVRegister.js") const WTVRegister = require(classPath + "/WTVRegister.js")
var wtvr = new WTVRegister(minisrv_config, SessionStore); var wtvr = new WTVRegister(minisrv_config, SessionStore);
var errpage = null; var errpage = null;
if (!request_headers.query.registering) errpage = wtvshared.doErrorPage(400); if (!request_headers.query.registering) errpage = wtvshared.doErrorPage(400);

View File

@@ -5,7 +5,7 @@ if (!request_headers.query.registering) {
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {
const WTVRegister = require("./WTVRegister.js") const WTVRegister = require(classPath + "/WTVRegister.js")
var wtvr = new WTVRegister(minisrv_config); var wtvr = new WTVRegister(minisrv_config);
headers = `200 OK headers = `200 OK
Content-Type: text/html`; Content-Type: text/html`;

View File

@@ -3,7 +3,7 @@ var minisrv_service_file = true;
headers = `200 OK headers = `200 OK
Content-Type: text/html`; Content-Type: text/html`;
var WTVRegister = require("./WTVRegister.js"); var WTVRegister = require(classPath + "/WTVRegister.js");
var wtvr = new WTVRegister(minisrv_config); var wtvr = new WTVRegister(minisrv_config);
var namerand = Math.floor(Math.random() * 100000); var namerand = Math.floor(Math.random() * 100000);
var nickname = (minisrv_config.config.service_name + '_' + namerand) var nickname = (minisrv_config.config.service_name + '_' + namerand)

View File

@@ -1,7 +1,7 @@
var minisrv_service_file = true; var minisrv_service_file = true;
var errpage = null; var errpage = null;
const WTVRegister = require("./WTVRegister.js") const WTVRegister = require(classPath + "/WTVRegister.js")
const wtvr = new WTVRegister(minisrv_config, SessionStore); 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."); if (session_data.user_id != 0) errpage = wtvshared.doErrorPage(400, "You are not authorized to add users to this account.");

View File

@@ -1,4 +1,8 @@
'use strict'; '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 fs = require('fs');
const tls = require('tls'); const tls = require('tls');
@@ -11,16 +15,14 @@ const crypto = require('crypto')
const CryptoJS = require('crypto-js'); const CryptoJS = require('crypto-js');
const { crc16 } = require('easy-crc'); const { crc16 } = require('easy-crc');
const process = require('process'); const process = require('process');
const WTVSec = require('./WTVSec.js'); const WTVSec = require(classPath + "/WTVSec.js");
const WTVLzpf = require('./WTVLzpf.js'); const WTVLzpf = require(classPath + "/WTVLzpf.js");
const WTVClientCapabilities = require('./WTVClientCapabilities.js'); const WTVClientCapabilities = require(classPath + "/WTVClientCapabilities.js");
const WTVClientSessionData = require('./WTVClientSessionData.js'); const WTVClientSessionData = require(classPath + "/WTVClientSessionData.js");
const WTVMime = require("./WTVMime.js"); const WTVMime = require(classPath + "/WTVMime.js");
const { WTVShared, clientShowAlert } = require("./WTVShared.js"); const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
const WTVFlashrom = require("./WTVFlashrom.js");
const vm = require('vm'); const vm = require('vm');
const express = require('express'); const express = require('express');
const { url } = require('inspector');
process process
.on('SIGTERM', shutdown('SIGTERM')) .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. // The ServiceVault scripts will only be allowed to access the following fcnutions/variables.
// Furthermore, only modifications to variables in `updateFromVM` will be saved. // Furthermore, only modifications to variables in `updateFromVM` will be saved.
// Example: an attempt to change "minisrv_config" from a ServiceVault script would be discarded // Example: an attempt to change "minisrv_config" from a ServiceVault script would be discarded
var WTVGuide = require("./WTVGuide.js"); var WTVGuide = require(classPath + "/WTVGuide.js");
var WTVBGMusic = require("./WTVBGMusic.js"); var WTVBGMusic = require(classPath + "/WTVBGMusic.js");
var WTVDownloadList = require("./WTVDownloadList.js"); var WTVDownloadList = require(classPath + "/WTVDownloadList.js");
var WTVNews = require(classPath + "/WTVNews.js");
// create global context object // create global context object
var contextObj = { var contextObj = {
@@ -128,6 +131,7 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa
"WTVClientCapabilities": WTVClientCapabilities, "WTVClientCapabilities": WTVClientCapabilities,
"WTVDownloadList": WTVDownloadList, "WTVDownloadList": WTVDownloadList,
"WTVFlashrom": WTVFlashrom, "WTVFlashrom": WTVFlashrom,
"WTVNews": WTVNews,
"strftime": require('strftime'), "strftime": require('strftime'),
"CryptoJS": CryptoJS, "CryptoJS": CryptoJS,
"crypto": crypto, "crypto": crypto,
@@ -173,16 +177,26 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa
"SessionStore": SessionStore, "SessionStore": SessionStore,
"ssid_sessions": ssid_sessions, "ssid_sessions": ssid_sessions,
"socket_sessions": socket_sessions, "socket_sessions": socket_sessions,
"reloadConfig": reloadConfig "reloadConfig": reloadConfig,
"classPath": classPath
} }
} }
var options = {}; var options = {};
if (filename) options = { "filename": filename }; if (filename) options = { "filename": filename };
var eval_ctx = new vm.Script(script_data, options) var eval_ctx = new vm.Script(script_data, options)
eval_ctx.runInNewContext(contextObj, { try {
"breakOnSigint": true 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 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 + ")"; if (git_commit) z_title += " (git " + git_commit + ")";
console.log("**** Welcome to " + z_title + " ****"); console.log("**** Welcome to " + z_title + " ****");
const wtvshared = new WTVShared(); // creates minisrv_config
minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config
const wtvmime = new WTVMime(minisrv_config); const wtvmime = new WTVMime(minisrv_config);

View File

@@ -1,7 +1,7 @@
const process = require('process'); const process = require('process');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
var { WTVShared, clientShowAlert } = require("./WTVShared.js"); var { WTVShared, clientShowAlert } = require(classPath + "/WTVShared.js");
const wtvshared = new WTVShared(); // creates minisrv_config const wtvshared = new WTVShared(); // creates minisrv_config
var minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config var minisrv_config = wtvshared.getMiniSrvConfig(); // snatches minisrv_config

View File

@@ -6,13 +6,13 @@ class WTVAdmin {
wtvr = null; wtvr = null;
wtvshared = null; wtvshared = null;
wtvclient = null; wtvclient = null;
WTVClientSessionData = require('./WTVClientSessionData.js'); WTVClientSessionData = require("./WTVClientSessionData.js");
service_name = "wtv-admin"; service_name = "wtv-admin";
constructor(minisrv_config, wtvclient, service_name) { constructor(minisrv_config, wtvclient, service_name) {
this.minisrv_config = minisrv_config; this.minisrv_config = minisrv_config;
var { WTVShared } = require('./WTVShared.js'); var { WTVShared } = require("./WTVShared.js");
var WTVRegister = require('./WTVRegister.js'); var WTVRegister = require("./WTVRegister.js");
this.wtvclient = wtvclient; this.wtvclient = wtvclient;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.wtvr = new WTVRegister(minisrv_config); this.wtvr = new WTVRegister(minisrv_config);

View File

@@ -1246,7 +1246,7 @@ class WTVBGMusic {
constructor(minisrv_config, session_data) { constructor(minisrv_config, session_data) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
if (!session_data) throw ("WTVClientSessionData 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.minisrv_config = minisrv_config;
this.session_data = session_data; this.session_data = session_data;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);

View File

@@ -1,8 +1,8 @@
const { lib } = require('crypto-js'); const { lib } = require('crypto-js');
const CryptoJS = require('crypto-js'); const CryptoJS = require('crypto-js');
const WTVMail = require('./WTVMail.js') const WTVMail = require("./WTVMail.js")
const WTVSec = require('./WTVSec.js'); const WTVSec = require("./WTVSec.js");
const WTVFavorites = require('./WTVFavorites.js'); const WTVFavorites = require("./WTVFavorites.js");
class WTVClientSessionData { class WTVClientSessionData {
@@ -31,8 +31,8 @@ class WTVClientSessionData {
constructor(minisrv_config, ssid) { constructor(minisrv_config, ssid) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
var WTVShared = require('./WTVShared.js')['WTVShared']; var WTVShared = require("./WTVShared.js")['WTVShared'];
var WTVMime = require('./WTVMime.js'); var WTVMime = require("./WTVMime.js");
this.minisrv_config = minisrv_config; this.minisrv_config = minisrv_config;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.wtvmime = new WTVMime(minisrv_config); this.wtvmime = new WTVMime(minisrv_config);

View File

@@ -16,7 +16,7 @@ class WTVDownloadList {
* @param {string} service_name Service name to use in wtv-urls * @param {string} service_name Service name to use in wtv-urls
*/ */
constructor(minisrv_config, service_name = "wtv-disk") { 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.minisrv_config = minisrv_config;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.clientShowAlert = clientShowAlert; this.clientShowAlert = clientShowAlert;

View File

@@ -18,9 +18,9 @@ class WTVFavorites {
constructor(minisrv_config, wtvclient) { constructor(minisrv_config, wtvclient) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
if (!wtvclient) throw ("WTVClientSessionData required"); if (!wtvclient) throw ("WTVClientSessionData required");
var WTVShared = require('./WTVShared.js')['WTVShared']; var WTVShared = require("./WTVShared.js")['WTVShared'];
var WTVMime = require('./WTVMime.js'); var WTVMime = require("./WTVMime.js");
this.WTVClientSessionData = require('./WTVClientSessionData.js'); this.WTVClientSessionData = require("./WTVClientSessionData.js");
this.minisrv_config = minisrv_config; this.minisrv_config = minisrv_config;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.wtvmime = new WTVMime(minisrv_config); this.wtvmime = new WTVMime(minisrv_config);

View File

@@ -12,7 +12,7 @@ class WTVFlashrom {
constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, no_debug = false) { 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_vaults = service_vaults;
this.service_name = service_name; this.service_name = service_name;
this.use_zefie_server = use_zefie_server; this.use_zefie_server = use_zefie_server;

View File

@@ -8,26 +8,13 @@ class WTVGuide {
constructor(minisrv_config, session_data, socket, runScriptInVM) { constructor(minisrv_config, session_data, socket, runScriptInVM) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
if (!session_data) throw ("WTVClientSessionData 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.minisrv_config = minisrv_config;
this.session_data = session_data; this.session_data = session_data;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.runScriptInVM = runScriptInVM; 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) { generatePage(topic, subtopic, page = null) {
// sanitize a bit // sanitize a bit
@@ -197,7 +184,7 @@ class WTVGuide {
console.log(" * wtv-template error:", e) console.log(" * wtv-template error:", e)
} }
// unload and clean up module // unload and clean up module
this.unloadModule(template); wtvshared.unloadModule(template);
} }
// return generated page // return generated page

View File

@@ -22,9 +22,9 @@ class WTVMail {
constructor(minisrv_config, wtvclient) { constructor(minisrv_config, wtvclient) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
var WTVShared = require('./WTVShared.js')['WTVShared']; var WTVShared = require("./WTVShared.js")['WTVShared'];
var WTVMime = require('./WTVMime.js'); var WTVMime = require("./WTVMime.js");
this.WTVClientSessionData = require('./WTVClientSessionData.js'); this.WTVClientSessionData = require("./WTVClientSessionData.js");
this.minisrv_config = minisrv_config; this.minisrv_config = minisrv_config;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
this.wtvmime = new WTVMime(minisrv_config); this.wtvmime = new WTVMime(minisrv_config);

View File

@@ -11,7 +11,7 @@ class WTVMime {
constructor(minisrv_config) { constructor(minisrv_config) {
var WTVShared = require('./WTVShared.js')['WTVShared']; var WTVShared = require("./WTVShared.js")['WTVShared'];
this.minisrv_config = minisrv_config; this.minisrv_config = minisrv_config;
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
if (!String.prototype.reverse) { if (!String.prototype.reverse) {

View File

@@ -0,0 +1,5 @@
class WTVNews {
}
module.exports = WTVNews;

View File

@@ -13,6 +13,7 @@ class WTVShared {
html_entities = require('html-entities'); // used externally by service scripts html_entities = require('html-entities'); // used externally by service scripts
sanitizeHtml = require('sanitize-html'); sanitizeHtml = require('sanitize-html');
iconv = require('iconv-lite'); iconv = require('iconv-lite');
parentDirectory = process.cwd()
minisrv_config = []; minisrv_config = [];
@@ -38,6 +39,7 @@ class WTVShared {
} }
} }
} }
getServiceString(service, overrides = {}) { getServiceString(service, overrides = {}) {
// used externally by service scripts // used externally by service scripts
if (service === "all") { if (service === "all") {
@@ -159,7 +161,7 @@ class WTVShared {
returnAbsolutePath(check_path) { returnAbsolutePath(check_path) {
if (check_path.substring(0, 1) != this.path.sep && check_path.substring(1, 1) != ":") { if (check_path.substring(0, 1) != this.path.sep && check_path.substring(1, 1) != ":") {
// non-absolute path, so use current directory as base // 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 { } else {
// already absolute path // already absolute path
} }
@@ -176,9 +178,10 @@ class WTVShared {
getUserConfig() { getUserConfig() {
try { 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 { 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) { } catch (e) {
console.error("ERROR: Could not read user_config.json", e); console.error("ERROR: Could not read user_config.json", e);
var throw_me = true; var throw_me = true;
@@ -198,7 +201,7 @@ class WTVShared {
readMiniSrvConfig(user_config = true, notices = true, reload_notice = false) { readMiniSrvConfig(user_config = true, notices = true, reload_notice = false) {
if (notices || reload_notice) console.log(" *** Reading global configuration..."); if (notices || reload_notice) console.log(" *** Reading global configuration...");
try { 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) { } catch (e) {
throw ("ERROR: Could not read config.json", e); throw ("ERROR: Could not read config.json", e);
} }
@@ -222,6 +225,7 @@ class WTVShared {
try { try {
if (notices || reload_notice) console.log(" *** Reading user configuration..."); if (notices || reload_notice) console.log(" *** Reading user configuration...");
var minisrv_user_config = this.getUserConfig() var minisrv_user_config = this.getUserConfig()
if (!minisrv_user_config) throw "ERROR: Could not read user_config.json";
try { try {
minisrv_config = integrateConfig(minisrv_config, minisrv_user_config) minisrv_config = integrateConfig(minisrv_config, minisrv_user_config)
} catch (e) { } catch (e) {
@@ -290,7 +294,7 @@ class WTVShared {
var new_user_config = {}; var new_user_config = {};
Object.assign(new_user_config, minisrv_user_config, config); Object.assign(new_user_config, minisrv_user_config, config);
if (this.minisrv_config.config.debug_flags.debug) console.log(" * Writing new user configuration..."); 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) { catch (e) {
if (this.minisrv_config.config.debug_flags) { if (this.minisrv_config.config.debug_flags) {
@@ -460,19 +464,35 @@ class WTVShared {
return obj; 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 * Returns an absolute path
* @param {string} path * @param {string} path
* @param {string} directory Root directory * @param {string} directory Root directory
*/ */
getAbsolutePath(path, directory = __dirname) { getAbsolutePath(path, directory = null) {
if (path.substring(0, 1) != this.path.sep && path.substring(1, 1) != ":") { if (directory) {
// non-absolute path, so use current directory as base if (path.indexOf(directory) == -1) {
path = (directory + this.path.sep + path); directory = this.getAbsolutePath(directory);
} else { try {
// already absolute path 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));
} }
/** /**

View File

@@ -1,12 +1,12 @@
{ {
"name": "zefie_wtvp_minisrv", "name": "zefie_wtvp_minisrv",
"version": "0.9.31", "version": "0.9.32",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "zefie_wtvp_minisrv", "name": "zefie_wtvp_minisrv",
"version": "0.9.31", "version": "0.9.32",
"license": "GPL3", "license": "GPL3",
"dependencies": { "dependencies": {
"adm-zip": "^0.5.9", "adm-zip": "^0.5.9",

View File

@@ -1,4 +1,4 @@
const { WTVShared } = require("./WTVShared.js"); const { WTVShared } = require(classPath + "/WTVShared.js");
var wtvshared = new WTVShared(null, true); var wtvshared = new WTVShared(null, true);
const fs = require('fs'); const fs = require('fs');

View File

@@ -31,7 +31,10 @@
<ItemGroup> <ItemGroup>
<Content Include=".gitignore" /> <Content Include=".gitignore" />
<Content Include="app.js" /> <Content Include="app.js" />
<Content Include="config.json" /> <Content Include="includes\WTVNews.js">
<SubType>Code</SubType>
</Content>
<Content Include="includes\config.json" />
<Content Include="diskmap_gen.js"> <Content Include="diskmap_gen.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
@@ -1101,47 +1104,48 @@
<Content Include="SharedROMCache\UsingWebTVBanner.gif" /> <Content Include="SharedROMCache\UsingWebTVBanner.gif" />
<Content Include="SharedROMCache\WebTVLogoJewel.gif" /> <Content Include="SharedROMCache\WebTVLogoJewel.gif" />
<Content Include="test.js" /> <Content Include="test.js" />
<Content Include="WTVAdmin.js" /> <Content Include="includes\WTVAdmin.js" />
<Content Include="WTVBGMusic.js"> <Content Include="includes\WTVBGMusic.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVClientSessionData.js"> <Content Include="includes\WTVClientSessionData.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="user_config.example.json" /> <Content Include="user_config.example.json" />
<Content Include="user_config.json" /> <Content Include="user_config.json" />
<Content Include="WTVClientCapabilities.js"> <Content Include="includes\WTVClientCapabilities.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVDownloadList.js"> <Content Include="includes\WTVDownloadList.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVFavorites.js" /> <Content Include="includes\WTVFavorites.js" />
<Content Include="WTVFlashrom.js"> <Content Include="includes\WTVFlashrom.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVGuide.js" /> <Content Include="includes\WTVGuide.js" />
<Content Include="WTVLzpf.js"> <Content Include="includes\WTVLzpf.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVMail.js"> <Content Include="includes\WTVMail.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVMime.js"> <Content Include="includes\WTVMime.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVRegister.js"> <Content Include="includes\WTVRegister.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="WTVSec.js"> <Content Include="includes\WTVSec.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
<Content Include="package.json" /> <Content Include="package.json" />
<Content Include="WTVShared.js"> <Content Include="includes\WTVShared.js">
<SubType>Code</SubType> <SubType>Code</SubType>
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="includes\" />
<Folder Include="ServiceDeps\" /> <Folder Include="ServiceDeps\" />
<Folder Include="ServiceDeps\viewergen\" /> <Folder Include="ServiceDeps\viewergen\" />
<Folder Include="ServiceDeps\wtv-1800\" /> <Folder Include="ServiceDeps\wtv-1800\" />