From 65521fcad6503ccc0c375784f1284722ae786fb7 Mon Sep 17 00:00:00 2001 From: zefie Date: Fri, 3 Jan 2025 12:50:29 -0500 Subject: [PATCH] v0.9.56 - Small update for CGI Security - Various AI suggested fixes - Fix to logging verbosity - Fixes for Last-Modified headers - Removed 2 unused node module deps - Added pc-only user_config.json example - Initial work updating catchall system to support CGI - Reverted registration and home theme system due to problems --- .gitignore | 4 + zefie_wtvp_minisrv/app.js | 130 ++++++--- .../Themes/Borders/ButtonBorder10.bif | 5 - .../Themes/Borders/ButtonBorder11.bif | 5 - .../Themes/Borders/ButtonBorder2.bif | 5 - .../Themes/Borders/ButtonBorder4.bif | 5 - .../Themes/Borders/ButtonBorder5.bif | 5 - .../Themes/Borders/ButtonBorder6.bif | 5 - .../Themes/Borders/ButtonBorder7.bif | 5 - .../Themes/Borders/ButtonBorder8.bif | 5 - .../Themes/Borders/ButtonBorder9.bif | 5 - .../SharedROMCache/Themes/Images/9xbg.gif | Bin 1976 -> 0 bytes .../SharedROMCache/Themes/Images/BannerSM.jpg | Bin 668 -> 0 bytes .../Themes/Images/ButtonBorder10.gif | Bin 1738 -> 0 bytes .../Themes/Images/ButtonBorder2.gif | Bin 1656 -> 0 bytes .../Themes/Images/ButtonBorder4.gif | Bin 987 -> 0 bytes .../Themes/Images/ButtonBorder5.gif | Bin 1592 -> 0 bytes .../Themes/Images/ButtonBorder6.gif | Bin 1535 -> 0 bytes .../Themes/Images/ButtonBorder7.gif | Bin 175 -> 0 bytes .../Themes/Images/ButtonBorder8.gif | Bin 1535 -> 0 bytes .../Themes/Images/ButtonBorder9.gif | Bin 1604 -> 0 bytes .../SharedROMCache/Themes/Images/Paper.jpg | Bin 1662 -> 0 bytes .../SharedROMCache/Themes/Images/Pattern.gif | Bin 346 -> 0 bytes .../SharedROMCache/Themes/Images/Shadow.gif | Bin 84 -> 0 bytes .../Themes/Images/ShadowLogo.gif | Bin 297 -> 0 bytes .../Themes/Images/ShadowLogo4.gif | Bin 278 -> 0 bytes .../Themes/Images/ShadowLogo8.gif | Bin 69 -> 0 bytes .../Themes/Images/ShadowLogoMB.gif | Bin 261 -> 0 bytes .../SharedROMCache/Themes/Images/xpbg.gif | Bin 6608 -> 0 bytes .../includes/ServiceVault/SharedROMCache/h.js | 246 ------------------ .../includes/ServiceVault/SharedROMCache/n.js | 55 ---- .../includes/ServiceVault/wtv-home/home.js | 176 +------------ .../includes/ServiceVault/wtv-home/splash.js | 2 +- .../wtv-register/ValidateAccountInfo.js | 38 +-- .../wtv-register/ValidateAgreement.js | 62 ++--- .../wtv-register/ValidateReviewAccountInfo.js | 91 +++++-- .../ServiceVault/wtv-register/register.js | 22 +- .../wtv-setup/phone-BYOISP-Done.js | 7 - .../ServiceVault/wtv-tricks/themes.html | 20 -- .../includes/classes/WTVRegister.js | 113 ++++++-- .../includes/classes/WTVShared.js | 4 +- zefie_wtvp_minisrv/package-lock.json | 18 +- zefie_wtvp_minisrv/package.json | 4 +- .../user_config.pconly_example.json | 99 +++++++ .../zefie_wtvp_minisrv.code-workspace | 1 + 45 files changed, 421 insertions(+), 716 deletions(-) delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder10.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder11.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder2.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder4.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder5.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder6.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder7.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder8.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Borders/ButtonBorder9.bif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/9xbg.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/BannerSM.jpg delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder10.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder2.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder4.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder5.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder6.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder7.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder8.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder9.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Paper.jpg delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Pattern.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Shadow.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo4.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo8.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogoMB.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/xpbg.gif delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/h.js delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/n.js delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/wtv-setup/phone-BYOISP-Done.js delete mode 100644 zefie_wtvp_minisrv/includes/ServiceVault/wtv-tricks/themes.html create mode 100644 zefie_wtvp_minisrv/user_config.pconly_example.json diff --git a/.gitignore b/.gitignore index 2dbbc7f2..bdf0618c 100644 --- a/.gitignore +++ b/.gitignore @@ -372,3 +372,7 @@ FodyWeavers.xsd !/zefie_wtvp_minisrv/PageBuilderVault/http_pb/clipart !*.gitkeep /user_config.json + +# CodeQL +codeql-custom-queries-javascript/ +codeql/ diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 88b16b42..137a810d 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -321,6 +321,14 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa async function handleCGI(executable, cgi_file, socket, request_headers, vault, service_name, session_data = null, extra_path = "") { + const SAFE_ROOT = path.resolve(__dirname); + vault = path.resolve(vault); + if (!vault.startsWith(SAFE_ROOT)) { + console.error("Invalid vault path:", vault); + var errpage = wtvshared.doErrorPage(403); + sendToClient(socket, errpage[0], errpage[1]); + return; + } var env = wtvshared.cloneObj(process.env); env.QUERY_STRING = ""; var request_data = new Array(); @@ -591,7 +599,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne }) if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.debug(" * Script requested Asynchronous mode"); - } else if (fs.existsSync(service_vault_file_path + ".php") || (service_vault_file_path.indexOf(".php") == service_vault_file_path.length - 4 && fs.existsSync(service_vault_file_path)) || fs.existsSync(service_vault_file_path + ".php")) { + } else if (fs.existsSync(service_vault_file_path + ".php") || (service_vault_file_path.endsWith(".php") && fs.existsSync(service_vault_file_path)) || service_vault_file_path.indexOf(".php") > 0) { request_is_async = true; if (minisrv_config.config.php_enabled && minisrv_config.config.php_binpath) { if (fs.existsSync(service_vault_file_path + ".php") || fs.existsSync(service_vault_file_path)) { @@ -618,7 +626,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne sendToClient(socket, errpage[0], errpage[1]); return; } - } else if (fs.existsSync(service_vault_file_path + ".cgi") || (service_vault_file_path.indexOf(".cgi") == service_vault_file_path.length - 4 && fs.existsSync(service_vault_file_path)) || fs.existsSync(service_vault_file_path + ".cgi")) { + } else if (fs.existsSync(service_vault_file_path + ".cgi") || (service_vault_file_path.endsWith(".cgi") && fs.existsSync(service_vault_file_path)) || service_vault_file_path.indexOf(".cgi") > 0) { request_is_async = true; if (minisrv_config.config.php_enabled && minisrv_config.config.php_binpath) { if (fs.existsSync(service_vault_file_path + ".cgi") || fs.existsSync(service_vault_file_path)) { @@ -730,11 +738,10 @@ async function processPath(socket, service_vault_file_path, request_headers = ne sendRawFile(socket, service_vault_file_path); } } else { - // look for a catchallin the current path and all parent paths up until the service root - if (minisrv_config.config.catchall_file_name) { - var minisrv_catchall_file_name = null; - if (minisrv_config.services[service_name]) minisrv_catchall_file_name = minisrv_config.services[service_name].catchall_file_name || minisrv_config.config.catchall_file_name || null; - else minisrv_catchall_file_name = minisrv_config.config.catchall_file_name || null; + // look for a catchall in the current path and all parent paths up until the service root + var service_config = minisrv_config.services[service_name] || {}; + if (minisrv_config.config.catchall_file_name || service_config['catchall_file_name']) { + var minisrv_catchall_file_name = service_config['catchall_file_name'] || minisrv_config.config.catchall_file_name || null; if (minisrv_catchall_file_name) { var service_check_dir = service_vault_file_path.split(path.sep); service_check_dir.pop(); // pop filename @@ -742,21 +749,48 @@ async function processPath(socket, service_vault_file_path, request_headers = ne while (service_check_dir.join(path.sep) != service_vault_dir && service_check_dir.length > 0) { var catchall_file = service_check_dir.join(path.sep) + path.sep + minisrv_catchall_file_name; if (fs.existsSync(catchall_file)) { + service_vault_found = true; if (!minisrv_config.config.debug_flags.quiet) console.debug(" * Found catchall at " + catchall_file + " to handle request (JS Interpreter Mode) [Socket " + socket.id + "]"); request_headers.service_file_path = catchall_file; - var script_data = fs.readFileSync(catchall_file).toString(); + if (catchall_file.endsWith(".js")) { + var script_data = fs.readFileSync(catchall_file).toString(); - var vmResults = runScriptInVM(script_data, contextObj, privileged, catchall_file); + var vmResults = runScriptInVM(script_data, contextObj, privileged, catchall_file); - updateFromVM.forEach((item) => { - // Here we read back certain data from the ServiceVault Script Context Object - try { - if (typeof vmResults[item[1]] !== "undefined") eval(item[0] + ' = vmResults["' + item[1] + '"]'); - } catch (e) { - console.error("vm readback error", e); + updateFromVM.forEach((item) => { + // Here we read back certain data from the ServiceVault Script Context Object + try { + if (typeof vmResults[item[1]] !== "undefined") eval(item[0] + ' = vmResults["' + item[1] + '"]'); + } catch (e) { + console.error("vm readback error", e); + } + }); + } else if (catchall_file.endsWith(".php")) { + if (minisrv_config.config.php_enabled && minisrv_config.config.php_binpath) { + request_is_async = true; + var extra_path = service_check_dir.join(path.sep) + path.sep + request_headers.request_url.replace(service_name + ":/", ""); + if (!minisrv_config.config.debug_flags.quiet) console.debug(" * Found catchall at " + catchall_file + " to handle request (CGI Interpreter Mode) [Socket " + socket.id + "]"); + handlePHP(socket, request_headers, catchall_file, service_vault_dir + path.sep + service_name, (pc_services) ? pc_service_name : service_name, (pc_services) ? null : ssid_sessions[socket.ssid], extra_path) + } else { + // php is not enabled, don't expose source code + var errpage = wtvshared.doErrorPage(403); + sendToClient(socket, errpage[0], errpage[1]); + return; } - }); + } else if (catchall_file.endsWith(".cgi")) { + if (minisrv_config.config.cgi_enabled) { + request_is_async = true; + var extra_path = service_check_dir.join(path.sep) + path.sep + request_headers.request_url.replace(service_name + ":/", ""); + if (!minisrv_config.config.debug_flags.quiet) console.debug(" * Found catchall at " + catchall_file + " to handle request (CGI Interpreter Mode) [Socket " + socket.id + "]"); + handleCGI(catchall_file, catchall_file, socket, request_headers, service_vault_dir + path.sep + service_name, (pc_services) ? pc_service_name : service_name, (pc_services) ? null : ssid_sessions[socket.ssid], extra_path) + } else { + // cgi is not enabled, don't expose source code + var errpage = wtvshared.doErrorPage(403); + sendToClient(socket, errpage[0], errpage[1]); + return; + } + } if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.debug(" * Script requested Asynchronous mode"); break; @@ -1333,7 +1367,7 @@ function headerStringToObj(headers, response = false) { async function sendToClient(socket, headers_obj, data = null) { var headers = ""; var content_length = 0; - var end_of_line = "\n"; + var eol = "\n"; if (typeof (data) === 'undefined' || data === null) data = ''; if (typeof (headers_obj) === 'string') { // string to header object @@ -1398,16 +1432,23 @@ async function sendToClient(socket, headers_obj, data = null) { if (socket_sessions[socket.id]) { if (socket_sessions[socket.id].request_headers) { if (socket_sessions[socket.id].request_headers.service_file_path) { - if (wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "js" || socket_sessions[socket.id].request_headers.raw_file === true) { - var last_modified = wtvshared.getFileLastModifiedUTCString(socket_sessions[socket.id].request_headers.service_file_path); - if (last_modified) headers_obj["Last-Modified"] = last_modified; + // Don't change Last-modified header if provided already + if (!headers['Last-Modified']) { + // Only add the header if not a js, php, or cgi file + if (wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "js" || + wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "php" || + wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "cgi" || + socket_sessions[socket.id].request_headers.raw_file === true) { + var last_modified = wtvshared.getFileLastModifiedUTCString(socket_sessions[socket.id].request_headers.service_file_path); + if (last_modified) headers_obj["Last-Modified"] = last_modified; + } } } } } - // if box can do compression, see if its worth enabling + // if client can do compression, see if its worth enabling // small files actually get larger, so don't compress them var compression_type = 0; if (content_length >= 256) compression_type = wtvmime.shouldWeCompress(ssid_sessions[socket.ssid], headers_obj); @@ -1428,7 +1469,7 @@ async function sendToClient(socket, headers_obj, data = null) { } if (socket.res) { // pc mode with response object available - if (compression_type == 1) compression_type = 2; // just in case + if (compression_type == 1) compression_type = 2; // wtv-lzpf not supported in pc mode } // compress if needed @@ -1497,7 +1538,6 @@ async function sendToClient(socket, headers_obj, data = null) { if (headers_obj["minisrv-force-content-length"]) { headers_obj["Content-length"] = headers_obj["minisrv-force-content-length"]; delete headers_obj["minisrv-force-content-length"]; - } if (!socket.res) { @@ -1525,25 +1565,27 @@ async function sendToClient(socket, headers_obj, data = null) { var xpower = wtvshared.getCaseInsensitiveKey("x-powered-by", headers_obj); if (!xpower) { // add X-Powered-By header if not WebTV and not already set - if (!socket.ssid) headers_obj['X-Powered-By'] = "NodeJS ("+process.version+") Express via " + z_title; + xpower = 'X-Powered-By'; + if (!socket.ssid) headers_obj[xpower] = "NodeJS ("+process.version+") Express via " + z_title; } else { // delete if webtv if (socket.ssid) delete headers_obj[xpower]; } - headers_obj = wtvshared.moveObjectKey("x-powered-by", -2, headers_obj, true) // move x-powered-by before Content-type + + if (headers_obj[xpower]) headers_obj = wtvshared.moveObjectKey(xpower, -2, headers_obj, true) // move x-powered-by before Content-type if (!socket.res) { // header object to string if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Outgoing headers on socket ID", socket.id, headers_obj); Object.keys(headers_obj).forEach(function (k) { if (k == "Status") { - headers += headers_obj[k] + end_of_line; + headers += headers_obj[k] + eol; } else { if (k.indexOf('_') >= 0) { var j = k.split('_')[0]; - headers += j + ": " + headers_obj[k] + end_of_line; + headers += j + ": " + headers_obj[k] + eol; } else { - headers += k + ": " + headers_obj[k] + end_of_line; + headers += k + ": " + headers_obj[k] + eol; } } }); @@ -1554,29 +1596,37 @@ async function sendToClient(socket, headers_obj, data = null) { } } } + + // Delete any other stray minisrv headers (we process them all before this) + Object.keys(headers_obj).forEach(function (k) { + if (k.indexOf("minisrv-") == 0) { + delete headers_obj[k]; + } + }); + // send to client if (socket.res) { var resCode = parseInt(headers_obj.Status.substr(0, 3)); socket.res.writeHead(resCode, headers_obj); socket.res.end(data); if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Outgoing PC headers on " + socket.service_name + " socket ID", socket.id, headers_obj); - if (minisrv_config.config.debug_flags.quiet) console.debug(" * Sent response " + headers_obj.status + " to PC client (Content-Type:", headers_obj['Content-Type'], "~", headers_obj['Content-length'], "bytes)"); + if (minisrv_config.config.debug_flags.quiet) console.debug(" * Sent response " + headers_obj.Status + " to PC client (Content-Type:", headers_obj['Content-type'], "~", headers_obj['Content-length'], "bytes)"); } else { var toClient = null; if (typeof data == 'string') { - toClient = headers + end_of_line + data; + toClient = headers + eol + data; sendToSocket(socket, Buffer.from(toClient)); } else if (typeof data == 'object') { if (minisrv_config.config.debug_flags.quiet) var verbosity_mod = (headers_obj["wtv-encrypted"] == 'true') ? " encrypted response" : ""; if (socket_sessions[socket.id].secure_headers == true) { // encrypt headers if (minisrv_config.config.debug_flags.quiet) verbosity_mod += " with encrypted headers"; - var enc_headers = socket_sessions[socket.id].wtvsec.Encrypt(1, headers + end_of_line); + var enc_headers = socket_sessions[socket.id].wtvsec.Encrypt(1, headers + eol); sendToSocket(socket, new Buffer.from(concatArrayBuffer(enc_headers, data))); } else { - sendToSocket(socket, new Buffer.from(concatArrayBuffer(Buffer.from(headers + end_of_line), data))); + sendToSocket(socket, new Buffer.from(concatArrayBuffer(Buffer.from(headers + eol), data))); } - if (minisrv_config.config.debug_flags.quiet) console.debug(" * Sent" + verbosity_mod + " " + headers_obj.status + " to client (Content-Type:", headers_obj['Content-Type'], "~", headers_obj['Content-length'], "bytes)"); + if (minisrv_config.config.debug_flags.quiet) console.debug(" * Sent" + verbosity_mod + " " + headers_obj.Status + " to client (Content-Type:", headers_obj['Content-type'], "~", headers_obj['Content-length'], "bytes)"); } } } @@ -2425,11 +2475,17 @@ Content-type: text/html`; }); request_headers.query = req.query; if (req.body) { - var data = ""; - for (var i=0; ii~Q80D%91fPlcj!2j3) z-{0T=|NoV1_myk+A^8LW3IHDfEC2ui05Afi0RRR5;3tk`X`X1Ru59bRa4gSsZQppV z?|kq7z@TtQEE41ejE#0PICJXU$+M@= zpFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4uVBN99ZR;X*|TWVs$I*r zt=qS7(BTJr4xw7TUm@{kM z%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~?&AYen-@tNG7S| zl1w(~0+o_zM{=bwNED(Iku7Ha6Bh$gD&qKr1`=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHED(a}DmTKy$sHUpws;su^>Z`EED(kGY)@th*9OSC&uDtf@>#x8DE9|hu7HjOW z$R?}ovdlK??6c5DEA6z@{#I-4wbyo_?Y7)@>+QGThAZy4+ZYo z#w+i<^ww+dz4+p*!M^+in+2Q2Ww1Q%@Z!3Za;@WKo??C`@7M=bHg6jyBV#TaL- z@x~l??D5AShb;2QB$sUR$s*@lE&%-k;PT5b$1L;AG}mnN%{b?*^Ugf?EOQ4a2QBo_ zL>E1A21qBZ^wLZN&2I?e*7Shb?vn95`+C*=VP&_Q@GE zY_Ofc>T>#l*-P~Uv~_{fuQe);HY z4tn$Kx9>j2&!;Z^>#;k~00Y-QZTt5+`%AOI-s4>dcGkE61fYNiG@bz=XTSzFkOK=W zn*q;9!Sq>heecVl1~=HfeaUZr)UzK07LY&M?T=?IquTCVR2}IHd2RW+~F1%DM>J{@set6oDkp0$ximobaGUp2 z*71%AIKU}yr%IRsQjja8CJV91zgf}^kvIdV11Xt9G;YzHkn|!tjmggRZBm)=jHk$$ znM7wYv6Kfez%;MeN>v8(m9)$zH?gS2TZ)f|Ufks*gBi(TDwLNFC8k8zD9?&o^kagn zC;lDp8BGHeV4o{&rAWEiO=`ySq#8J6E^S81mZo!;IfSVL87N6aPV}aieCI`X%F~Bs zRFu!er$-3@(mh_YkSUzm6|uRmf}Yc62}Ni_d)Y{tn$e-XY^PRz*we0hwPAt-Do68K z00Io4s5t`|?f^o78PVpU9D<&t6R#x_P0EZZBPr_SO{^JO#Hf z!j0{^Ok-@+w#(h_9_yIW4R0r@tFX8E?7TL^Uf$Nr-u8l5yznieyW&gV`r7xt_|30= K_lvL)0028zB{wht diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/BannerSM.jpg b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/BannerSM.jpg deleted file mode 100644 index 29fd83c4724138bfeb915d3d671fab61da155833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 zcmex=3($UqC zRx~s*&^FP~*3o8UXJ_Z)wh=DOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3 z%Btp;*0%PJ&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S z`O4L6*Kgds_3+W-Cr_U}fAR9w$4{TXeEs(Q$IoAk49pPk07;0Cko*G-enuu17G@T9 zkbfAN%0ZqLWMNe_WD{}>WKS#c?s+z z;ylzumXF{bg8S$HEe0NDMqsjG7G$tzIPjmLMce&9!@T&Vp`B)b{xeiDoc+wdmccl4 i0WZJutp<}l3mxR*|1)sPZU4_;-~4HLvR+#K|C<1r8Q8S| diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder10.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder10.gif deleted file mode 100644 index 5340fc6560e1bdf28f0d09b55a392c03583bf11a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1738 zcmdVV>sOKo0D$pVu7ZFFB3JQMv!ksGPE(oING_Vw4NXnU3^pxo>ZDwgj=A>*fh;R5 zBQMjy3tm#g8+n_d<=M_wCrghrr-hc6Y?W)a)lQq+{*3)TJzt-Q-I5T#JOuCoasgm7 z@UQ<``|{<>=g*%nEiElBE-oxAEH5ulPfxeBwA{RT^ZNDcR;#tQx3{maufM;)r>Cd0 zvvXizU~q7-y}iAoqocdK`|8!Jp`oFTjg4lrxwf{pp`oFvsj0cSxwW;mt*x!TzTRXq z8I4ArPRC-g>gwuhYHBnZ4U@^VSS(krT+wQ^H*VaxcJ11!Q>Ut{tE;N27z{>HQIT4$ zR;g57U0s!xl`sq!78cU!bO?fmhK5d_JUKZzdFIR+rBYc?P{8N&|9ko0!mdMr0|Keh zY7s@q;u1|U5_MjOD!XLRokOD$7_5UM4v%wkA`porJidY8gmbo#2xOuYoj??BRDd-9Y<(ur@0}i^m}y11cS+9(`XzveU{E~=hE07Q}eV*&=d4{NN2sExzDgU zf6RD!BV8$6_a|mKs4xk2$cLo(5X&4S%=ZlBgfw}Iik&w^7TAFExA@NMw|t(+=0&h0 zRr+RsuV)p?)!ppAx|+Q&>?|8dj4nldCLyvS>&J5C+(`WcpoQ0`O8GHkf@^DaoL6Cq zoNPoJR3>tyaQp$a|V7PV^=YU&Z>B&+8Vl-uIDq%J^ac%}l-B2HJRWBC~ zd2o(algrJzGOv#b`GB-4J)0HP3zWWY4H}}a90zvLjh_~=;-efTb1;fXn`(jlZM%Yx z2;dwr79q;26frT|gDWc!5(srYoaOG3Yj}EOmVV3=la0RP{7RCtMvrNqaOZwknP=A- zJf`_NbbwO+?44x%Z0e`KMB7D6%o^qDONSCh9yk@v_uuFc&iOWio$h!V9ggQ_+lS$N zarrmF5fzg}3EjvW4&lnkY`hJ=M8v*7wkS~Sgl)+|>nY?Brxzi&E-Mh);5&iin)29K zUt697L^L_70is^LYyAY6pGFq2Gc2SMZs0QMgGc&+J!p^Bz&-l0(Tm1XgeZ5v)I}9I zooi7V?`Pc0Jwy&S@oC<%)Hr&2j_CmJW~qyeMwE*EPzO%1`$X00l()#~uq}6#&{zKQ zZkO2EcYFZ37^X?VmXjVl!R~G0&(*`?WY-vz=LXY<>l(n*RKa}!CH?va<<_o}{4|X8 z_`9o$-$&_5Yy8cEa&8t?cpJ>FtyEQOSOYKnVmTLrQEh)w_6ULDx~ilaT*M~aR9rxl znVM#wA7Gx1syXXBCh!u=_)B-U5xGH92@ALK^a^6ioFbfO9`QbiNVKw(K5s@{NLtMI zHmt{Rc8uzi{P0HT>&tiQOwm|H0*uLtdVLVTHJUvl880xVg$rMy;|Uk|`u92n%Ca#{ zX4?WB{AZ?q#A*BLTIXo-mfaJ2KT+n#yWdHpSNaaQTOS|gKVJ;T$MiRqo?-9EOO;YG z*&`;_=7gVjX?KrHJ7Z6{-rXBFDMf^K8USm*cB@}cf+{l?l;(V7Bi()!@?+y3|NUzt z;zCohLcSUwB*!v}j2w*L&Wmt_oS*bK%r{cpEVnDTDyOaBpyC9kl!H6V~6X`jE$B zp2@n%7-!Xvmcz#|KHF}8r!{o^zBGFXnN9Fjj(^g&&tS}=Q{KLf1|LijLo?F5I`j*e z5C&A?>&C+%NQGEf_c|P`Rg~3%9Y=I`4HM^PP(E0fiQ&#didz%!Jr-3lfel-#P!tFP zitibcQ{B#g*)3!lL+>LjI@%1R@qAk9SY|z5p7Z21YMad#%TTLoOSJK|e1RB@gm927 zPwe{9C$;ckx&8Fvy~jXI9Oy-|Z$vT$=d6KbQb`(!4z)QrNAZyC+X4(!HcU7!Lo#pK z^j^!ugufYT3F1CRpOOZC!BaD)?3myw*x9!kLHi!ucHzS}yEc9WsFA=NiWk|iX|Gb1 hSR+I6avL@u=!;_5jRtG9&!+5Rb?U>oOE3V0{sR+digf@0 diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder2.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder2.gif deleted file mode 100644 index 9929e1c35bff1a1a12d30e303d0c2a4dd06e1cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1656 zcmZXSX;f2p0>v-M%X|Naz=Tb}q5=Vo2m#p&g1E2;QV@{RS`TX#>rzytnNxLQ*mo3H z1U0y!r#JzZ18q+YxHO0YF4bY=5wc*gtvy8qAb`HNFc&89EDG$eealZ5IPEaL1x;Dj#R-<&xcC(hc5 zvzp7zapWu=IM$vcb{u2NSvigiUB>NQQpgM1AUUA#fwX{RgB}1m2xdJ5qaYfPN-&ua=$FSl1nC0V z1v(Xi!Nh?Y20H@wA=pPC4?ymNjDQS*$UtdkHz7SBS3tT!{t0ps z`YB5XpR68*dufHW>oWN?Jj$wUSC-OVYx-}p4vRCs$+@4`$7|-T50+bqZc{Eng^$$R z`SCXMBjj&hzTzhc-J`14$hUV|5ko1xp&9sl59;G%a6NzbhyBCZebHD$^$nH6|ZVOclDPi>iofy&JEV{ zLbp6nPmkTcr@8OnnkDCNOllp~HZM66wDH5XWqfNl#j7(`t&%&JH-EL&Y;z(qUpw`F zRFtYHbxyszWppSi;$+lbhdPz<1I<3hzP&Yk{D!{M9oDb@UHaW^Ti3s$PA;8eZ7rXjMOczVVu^;Aekm!U=?wG&l1 zjuqXiUl0|@dPR7rR(q}BjZTP;3;8*&&?-0&a_MSFLLdB zrW)w%moB;FFk@+#-C?nKhx(?+pl|HCCdzs97N6syj*+xlzoj;(G=9>F_x&yNOTzNL z*sM0S4@$l-ds6F9iPimfxuy+_`?Z$0a{~H^$K8!Lgz3pqx79^f&b_v)t1dKXcvgV} zM6}T5s#r7<=vU_+H*d#S-;X}KmKn4@>Qe`j0tNyeT3xvrCKB?8ci-j(%iq}62Um}& zUiM%AGtk;sotiESd7Sa5_EzI(r(cCQA5mH^=^AOTz5K3WpRAYad^zguTVQ0|_KE`s z?gnkXe9vpF*eG+;De@D-40S<69;Ujy;P6^cS&~nuHf>O1P-ZrSn-i}5zHy4m(|Q~% z=5{UnIj7qu;ziGEo5)uRkKss_XLQQ)qKEd@Jdfx^5Wms4s;(t=)Uo8Lt diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder4.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder4.gif deleted file mode 100644 index 8216a67c45fe41fedfb5ab186640b63ca08921cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcma*j=}(gf0LSr%9+U!3KqzudArypUahj2daYk^0fZ{M1of(^w1$E3sqP$pi5`9+NIldyx0q6z!yb~tm3Pct!DkozN~Vk zY3oiMf8+)3u)dL~Fo_D^-1c6wf;k;)e=WJh%Px;+!{Z^u%b0ixgFuaF0Uc7J1cAHV zm`I5V=MWr6F$@vTBZ6s2pn!24!7x~$fO-@V|GASVhg>eGbKKD};XqMm=OoxU0k+EQ z2m-dr9Bnc?S88n>uy3k=&E#MWAoxpvSD!wv|t*NMyzg{Fr> zBLvwV^cf%Y8k|ncZ+!-~Ko3DyCunB(86Z%5U!b?y4EF7e7PA%xb?dA1C~P!n7q3*b zX5AhCp%g4&KgL`(i}8is^3UCduIp7DE|=AfgD7mmF^3y>5;#P-A&&A{`l(jg9&QlITIZfv$QES_K5|;ttHw&metS-f`?X_-3iV0+?`a%Gb#nGQPFWZR$(_-sq zH;go9I!DFJ>Hcm(GGtR7XHgDc^b9%PitkJ{FL2TWW1f}y?L9LhhS#5QqEc?I970S> z?Ga~{+)F{R#|M5~Q;tgAPR-z_!^OyL0yV4r!us^gnz&QCxt6cSWFOuW>qqjCsiT{l zfOov6_ybI)2A^f}G^PHZn>A$taq-mP9A+{#iI&FGvLe$C=9P!WRp(VOADN@e8KpU? zA?I`NJ!c<~$FElcBSGf1mD4`u~^6={-t+BCCo?zk@$t|pi8#1qxkvAzM G;K;vE;4Vl2 diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder5.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder5.gif deleted file mode 100644 index 98872413916ff6ec8620962fe5c89807a1523d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 zcmds#{ZrBh9DqM4=@%44d;yX77ezq@-;%UMK?Qs_-(Qhz6iv_BE?HTTk|1OGI?XP% znU$T@iM8hH)(cs~YMZ&XY*v%nRm*lwTbJFsYxQsJ`SJPX`Q=Gdrp8IC&byZt8m)6x3=+t@I z^6ZVJSsP0-Yl@ZC1+wz&gaSoWRuUmc1Tr=xvp~v(C<d}wMMUmhDIi{U0k zaio#F%?ngK$O{1~9s==DC;%n_0&q|f0c0Gc z^FS>ErWcSrQz~+sJ1xm&+2H5VWHqiUN(WyLpx}Ur1#b)xFa=xG{FK$;g#o%3;4y0p zl@N#n90HyQqz8HDh>4MG@WFzF3Mm}O3I>fBs9xaj2_EjC;6jNIbTP1ohEavWIy!6+ zLo@}FSU|x;SvYKo0e=thec!@DSr{mJP#X4OmH#iuJE+A_;|NkfAwHqyj&ar%6dF+- zL=GADxFW<&_Z+sv-?!8K_{Eph?5l1FHNikgvZJxSp~aI1R!b|6x<awMk{|f_x0kPv7bjJr$53`{0Hxz37K0+=@!>LxYXu)esbwi!{ZsudhIut zTo82}>*ckZON(w$s&vO%gDRv1?IKx$oh$~i$7LmyF5ORqUxEh*GUf-UtY{Q zrTwWfp$TmObd7nGl*ZV;;tZhgMmnVEXhmmfGdW!E&Kz9DHXDhzMXOr5_*t5% zTF-Z)V{?+&ZTG!rohD3vj@d6lLw;l>QW}tb680t&-Te1{Dce%+J<_p5sQJS!vBoyC zYny1++({cbbhYQrU8jkYx{EpGUw%sK&TJ=Rl-!D*;}80~$V$6+?YYnHGrI{yttI+^ z^w>b-<8O~yFbC_={RYZv2hE(Lso^QqovFiDaT+D3kKCV3tQ<}HbBq32Tbs5Yi8Qzz z;M)Ejv7vBCR zp1#=q^xqe>UV$(!D?91BKL-HOx9z*~L~T7`!A{{RXi*_!|W diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder6.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder6.gif deleted file mode 100644 index 85ae371dad6297062269cb2955edaafd6051deb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1535 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 diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder9.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ButtonBorder9.gif deleted file mode 100644 index f197d45bb1273fbdb8629f88da0ae508d1117026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1604 zcmchV`&W|%9LB%z%VcAKjBT(1bJutGu??p%?rz*+3QkcVC2s1tgczlgQ^$a9+!R3( z6x5LL9@hwuNq7M^LnXB$D;4A9DK9CS(m8gF{)s+6KEFKA=bR@lAyyrntp+}n0C4`s zAprM42J`%vS#c=fao~ajXD8rsSR>u-!)IF0cQt--v}WLlt-syc-)8AMT-AH1qPxX( z?!eA7`?jB~Fa4~#xT7lnXn9`S&i7l(G7fG{-CwG2+LGK@vZ8VG@`j>>IzyB#C#>Q< zm1Ggg*B!iF!2=I&&OjzD9Q~r}>(AS|YPTFVu5Tz#+FKa6ryzDueoVa~x^7cc?S^GF zd6CsQVb-kRs`Y^t87gzS(zM2Z*J{a5y~vm%*pZBVlFZwY!Z+%L#+8C?Nh|@4z*q=$ zH(2BWV}mD#Ivb8#3icMoo7T#=B{EAil;TKIafC;4_`(mu-9HF(D++Zj3LzGTxD*Bx z3e@<`k)$nJijan9lYr|9LMrsNRW*OSdUvX-6U2xTJ6g%HR<68R9|gT!OtPe+=!rpmn0I1JXwLE??3$smFSA}U&) z8@^HuOZ^axg34$pmyAlh0Ph4+re}$Uyh=R36XB6jhC8g4f`$VkFO*3_!ubwBw(PRLlhU$ za*+r&63#+`7a>6mMCFSF_##RlL{3Ni>8L*q6;eRu15)q*9{N8(cn23<7;2K~QU!q` zS!bVQU$Ter$T<;rL{J{QcuJwoRtTNlv>0j{;Y^}wO z)A1t9lNZ;3t?a8zXcDZLjVMDGBvQqzPNtmF4)tVTS#>P!{D-5&W?A|`QQ7uM+(CKf zu*rqj)&J<`v8dYDVHTZ_YU9%PWM@s`vn~@eSGg9=M~NB{F#x!>`qrd z<%K5co3Kaj?IByAJ#a+rAF1YL-j&@yvhF4`V&~hp?~s}6S>?F+;RnCn$Q)p*%W*&Y zV8Xo`Cs8AN^UZfJ8CoMX$Ih`$;YSd$=u-M_w;THitQxl#YdPU$53YhPpIyWw`?ib_ zby>FQZS@}+Ceb}=4!7cdcn%jDqB|beynV`XU<$q7L0R&>$i`R1Dx;|3gI|vGTfS0j z-1St)J!Y$6HfKSQZW`ORqv*1uwtXgL^uSLWes|RRK7Y<{apccATC6$)3BR$URUj&> zoXx?9rHM}z*V+~n#fs)zPSo5dt?zNW+RWE#S#wznd@MDC1kusXjvCIHAxEM#a!7BX zmrnG?cee9qiLze1d5m?)0$06GRlN%-=&YX5CixH2`$qjK&DJFOnyVpkowavPerKOQC?AN47j>>XEDVh^8Ps3vj$ zRKB|9I(~7-%$Yxj|2A`L#79TWk4YJG8eKo?(tF4|-F7*SZJf9~ewBjP*I{EVTzh~W zJ3g_vRe5_tfE`>nD=e$~Fj3Nr71~%gbn(xYW!yPi#W51}Htyb6KfhE>>d5s=nsrgv z#owisx(Bx9HC?-%Tzc6dzgwv#N>1Bz2)>sXbxKXf)bx1ZuBmMMkA@THUf(V1uOIWi zSQn~_ww6@jgMMLjyt!w5!+HAV{;uv>>(8Zyn2I}KKRfrZF6i0Z!zlN^=4SSXGRu}h F=)Yt45ZV9$ diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Paper.jpg b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Paper.jpg deleted file mode 100644 index 1d4923e8a001cf0022cf7e4b14b83aa4f7a4507c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmbV~c~Db#5XblBy_|$V@F@v~BM>DDq8!C=$Ac)0B?v^VIxQO1z*G!i5u%g_LOqHi zf)z7};Rp&=t%?#_Z4nKJRfs|nkSd53<1v6DDq3jNj?+Kees_L5v-ADU?q_FqqI04b zEJGzB5te2W#1^CF|D2I7FrB?WD1o+rco(WI*mqW z;^s^^#lmg5c6K~2Z>od9&Dp`x#c?W6=q+@a?e6L2X+K@$FY@qr^YC;>XmmQ0 z!L&9vw|3|A`0oE%6IYN@0ECRZ7yK=RgkmN#8l7Q=0Q$i*(!H2?Ia$q_e(1fFXXGwF;e)*Pm88f{; z@t!O4@m;VmSh8qwNN8k~Y}xV^pRJU~tXsc95gV7Z`K#nDDXFUMS=rz0*tu)>{``Ui z-yJMGq%JKh*H#=oR#|oCZ1uVGHM-g#>n~r?H#9aiU%lDZ{#(bb&aUphd;RzScrftL z_-Odq^N|;$FJHYLW1Emk7=~ihcgP57i|L_kjLdhZSj}5XU6U}$(IbO~&(AA4eTnYm z88I|@ZQ>2a6oFUYwBdKu@1g%4bLRho{>c0hd7=*3G>Cy16yXDjji78~q8pefVk%HJ z1i=U?j3PBIo^$bx0+GI1l-H)l(Pj~euvz6#=4ec)-)WNr1J;L01J3Hr8qpjB znpvcdkcrJY2%8mS=eU8V#E77Ip9sI)idhPgsBLAjb)V~F@8=!v`BR7-*NryBJ_?Lp zv9(wMv+|6^ao#R_YaI!)e+=5zQ7+>r_M|Bg8mIAj*`8nAEc#4CUrSUspV(C+vd+^_ z${vRWyNWgR%&L+eX<)$)Tisg);xTt)_+r~nZK)it2FXC1Mf$t*YK$=+9Lx zAT$FfVD70n>&g)v;W|0{T<3lf`PzW+78Yw{@1Gi^Lq*_>+D?C)!8yO=fCKLSu z3Pe|5RMUq4UiR}NPy+M$tF~|V6gF{isDFq@#|Ir?gwY#>&=}dQck><9gI7#$fzq#d zMpdn#SbEeL-@V#u`HSn|6V?BN zwmU5toX%5xBe``vJ3j+S67nTTeAOuew8?*1%vjE_sBFY@t67LZt_AaU#JFTV$F$+L z9#U+dSn#y@rH0&F)UTcGT8G@~An+okMd;kE1~hcEHLSKG<0msBk!t!MN@Tq$Y#xiK zy_{^M@I$;I z3$Z!yXC5Wjjzw&e4%%NO?C!SYCHko$wSJ!;W3R+n4T+Vv^Xravy}Cy@L41p^Y-eeY z$AH527;+85ak+7c$joRIQ~R$oe0oQ4C{JpbF(-`-%&*h6aJU_g=wIEqLy$sjx3))E t0ld`E<(%miJ=-q4F<`59ZBwl+TrnO6l`U~m;9_aIsQFhS;=N#^>n|5NhuQ!D diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Pattern.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Pattern.gif deleted file mode 100644 index 2f003a83a80966e25f82bc2b34c3170a1f0169cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmZ?wbhEHbG+<(7IKsg2p8){`1*OPCKqIRC5auAW6o0ZXg7}L6xgCp2Qgbtl6&!s6 z#2GmRI0PgVGz=^pJOUyT3K}{l%vi93fk6kP7UVPr)(r{@eJPpqGFGk2dA+Yd=X^=- z{fc$(Yu-O+Vp8sAG3v=udY3;_@US!*d){<+$Jp2DcarB+t)2Nanj_;1=FU_m^o|qoVoKDTwL9l z%h>&bxVWop`5V>=wzRf)iu7;mow9S%{5^a3?LTnvkljM35;rgJ^5rX5hOLT^ diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Shadow.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/Shadow.gif deleted file mode 100644 index 1f3e660bfe3a8f2c77cb9f05c3a01811a9a9da65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmZ?wbhEHbWMp7tSj52ap8*{#4g`rP{$ybU)Bm|0i%L>+Gm8}*eF9ho3=%pR7<51~ PAOjefSv;(SI2o(~Dc=mB diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo.gif deleted file mode 100644 index 3067d92d9bc73500989a154d60a502349eb10ab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmZ?wbhEHbWMr^lSgOXr&CSWp&CA2X#lyoRCMF@PsAOg57!nbkm0OgZSDceyl3P%k zS6G%`R9;w8SzK0KT2WhGRbNrvP+8MhRohfu*IZNIQrpm4*VtCy)ZWnC(b&@2)Y{e3 z-qX_F*VftB-qqjU-Ph4Qp{ILdXV1jmo+;kG0aQea{{)?jQWHy3QxwWGOEMJPJ$(Zh z6o0ZXaxvI5=r8~Q$fFEwh6kD+3jAuYk?UhiUg@JWp?&ej6kl9puob&U=09h`eY&i diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo4.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo4.gif deleted file mode 100644 index c29e7bcc1158f6b16194caa6697e8623ecb12c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmZ?wbhEHbWMr^lSZcz+&CSWf!^OkHBPJ%nDHkiNsAOg5s26!fKkAAB2wnAzn4}kd zRWIh6Vf0PC*qcT%*NtPY>c`$TiMeVJciSNTzG3_$ql8DM3D+It&Kf5@HBY{0pM1$Y z^{z?!OS6nSrWsExGai~{KC#Pu64g(N?{KUX!e4r`OvFU8e#_3vH wUe*{)<~Xv@Lq(v2dGW^y0b0|#k1-3)4O$&~`l!=Pw>dtY0t_5%%?b?G05zI-u>b%7 diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo8.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogo8.gif deleted file mode 100644 index cb41878647dedeee1aabe69b7e9066310e376383..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmZ?wbhEHbWMr^lIK;;Ap8*BrMYnqU1^|)bPZmZl26hG=kTggw12b2|t~>t>%$(Xe HI2o(~sIm;u diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogoMB.gif b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/Themes/Images/ShadowLogoMB.gif deleted file mode 100644 index 9a3e6ab112e5a321734463a596a571755aab1e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 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 O`Q;z@l5fxf0RTIK`Mie! diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/h.js b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/h.js deleted file mode 100644 index 221c9666..00000000 --- a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/h.js +++ /dev/null @@ -1,246 +0,0 @@ -if(!String.prototype.replace){String.prototype.replace=function(o,n){return this.split(o).join(n)}} -if(!String.prototype.repeat){String.prototype.repeat=function(c){o='';for(i=0;i');return parseInt(d.z2.v.value)} -function go(u){location.href=u;d.open('text/url');d.write(u);d.close();} -function dial(){go('client:redialphone');go('client:logoshown')} -function nbsp(c){nout='';for(i=0;i'} - out+='' - if(bgm){ - if(bgm.indexOf('.')<0){bgm += '.mid'} - if(bgm.indexOf('/')<0){bgm = cch+'Music/' + bgm} - out+='') - } - d.write('') - } - if(!msg){msg=''} - out+='' - if(!nl){out+=''} - out+=tab(msg); - out+='
' - return out; -} -function tab(msg){ - bgimg=gTC('bgimg') - shimg=gTC('shimg') - bgclr=gTC('bg') - gclr=gTC('g') - if(msg){ - msg=msg.replace(' ',' ') - if(!shimg && bgimg=='Pattern.gif'){msg += nbsp(5)} - tout='' - }else{ - tout='' - } - return tout -} -function ta(r,s,n,b,c,x,u){ - bgclr=gTC('bg') - tclr=gTC('t') - if(u){x+=' usestyle';d.write('')} - d.write(''); - if(u){d.write('')} -} - -function as(bg,h,w,g,b,lc,rc,lo,ro,s){ - if(s){ - if(!lc){lc=gTC('t')} - if(!rc){rc=gTC('bg')} - }else{ - if(!lc){lc=gTC('bg')} - if(!rc){rc=gTC('t')} - } - if(th==1){bgclr='333333'} - if(!bg){bg='191919'} - if(!h){h=32} - if(!w){w=320} - if(!g){g=0} - if(!lo){lo=0} - if(!ro){ro=0} - if(!b){b=1} - d.write('') -} -function butt(v,n,w,t,x){ - if(th>0&&th!=4&&th!=7&&th!=10){sh=true} - bclr=gTC('b') - bbif=gTC('bbif') - if(sh){d.write('')} - d.write('') - if(!t)t='submit' - d.write('') - if(sh){d.write('')} -} -function csa(m,i,b1t,b1a,b2t,b2a) { - u='client:showalert?message='+escape(m); - if(i)u+='&image='+escape(i); - if(b1t)u+='&buttonlabel1='+escape(b1t); - if(b1t&&!b1a){b1a='client:donothing'} - if(b1a)u+='&buttonaction1='+escape(b1a); - if(b2t)u+='&buttonlabel2='+escape(b2t); - if(b2t&&!b2a){b2a='client:donothing'} - if(b2a)u+='&buttonaction2='+escape(b2a); - return u; -} - -function redir(){ - r=history.previous - if(r==htm+'Themes.html'||r==htm+'PhoneCallWaitThresh.html'||r==htm+'BGM.html'||r==htm+'NVRAM.html'||r.indexOf('wtv-')==0){go(r)} -} - -function goHTV(){return go('wtv-home:/home')} -function gsa(m,i,b1t,b1a,b2t,b2a){go(csa(m,i,b1t,b1a,b2t,b2a))} -function head(msg,fs,bgm,lp,nl){d.write(headr(msg,fs,bgm,lp,nl))} -function dhh(tit) {if(tit==1){head('Partition Map','','','',true)}} -function vh(){d.write(headr('VFat Hax'))} diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/n.js b/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/n.js deleted file mode 100644 index f1cd2056..00000000 --- a/zefie_wtvp_minisrv/includes/ServiceVault/SharedROMCache/n.js +++ /dev/null @@ -1,55 +0,0 @@ -z_nv=null; -z_th=new Array() -z_th[0]='HackTV Light' -z_th[1]='WebTV Dark' -z_th[2]='Amy
Red' -z_th[3]='Basic Web' -z_th[4]='WinXP Tan' -z_th[5]='Ryder Green' -z_th[6]='SKCro Blue' -z_th[7]='Win95 Teal' -z_th[8]='zefie Purple' -z_th[9]='MattMan Brown' -z_th[10]='Paper White' -z_th[11]='Halloween Black' - -z_def=new Array() -z_def[0]=0//theme - -chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@-"//64 possible different values -function gTN(th){return z_th[parseInt(th)]} -function pp(){d.write('
');z_nv=d.z.h.value} -function gB(off){ - if(!z_nv){pp()} - b=z_nv.charAt(parseInt(off)) - if(b){return chars.indexOf(b)} - else{return -1} -} -function sB(off,dat,raw){ - if(!z_nv){pp()} - off=parseInt(off) - prefix='' - if(off>0){prefix=z_nv.substring(0,off)} - if(off>prefix.length){while(off!=prefix.length){prefix+='.'}} - if(!raw){dat=chars.charAt(parseInt(dat));} - z_url='client:ConfirmBYOISPSetup?BYOISPProviderName='+prefix+dat+z_nv.substring(off+1) - go(z_url) -} -function eB(off){ - sB(off,'.',true) -} -function eAll(){ - z_url='client:ConfirmBYOISPSetup?BYOISPProviderName=' - go(z_url) -} -function gV(off){ - off=parseInt(off) - z_len=0 - switch(off){ - case 0:z_len=z_th.length - break - } - z_val=gB(off) - if(z_val<0||z_val>=z_len){return z_def[off]} - return z_val -} diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/home.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/home.js index c4a6186a..c1a9e46d 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/home.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/home.js @@ -47,19 +47,17 @@ var supportZefieAlert = new clientShowAlert({ if (ssid_sessions[socket.ssid].get("wtv-used-8675309") || ssid_sessions[socket.ssid].get("wtv-need-upgrade")) { - data = ` +data =` MiniBrowser Home - +
- +
- -
- -MiniBrowser Home   + +MiniBrowser Home  
@@ -85,168 +83,7 @@ if (ssid_sessions[socket.ssid].get("wtv-used-8675309") || ssid_sessions[socket.s ` } else { - hasJS = session_data.hasCap("client-can-do-javascript"); - title = `Home for ${session_data.getSessionData("subscriber_username") || "minisrv"}` - data = ``; - if (hasJS) { - data += `` - } else { - data += ` -
-
- -
- - -
- -${title}           -
`; - } - data += ` - -
-
-Mail - -Favorites - -Music - -Search - -ROMs - -Settings - -Help -
-
-
-` - if (hasJS) { - data += ``; - } else { - data += ``; - } -data += ` - -
- - - - - - - - - - -
- - - - - - - - -
» Community «
€ Chat
€ Discuss
€ Messenger
-
- - - - - - - - - - - - -
» Account «
€ Relogin
€ Configure
€ Password
€ Add User
-`; - if (session_data.getSessionData("registered")) data += `€ Unregister`; - else data += `€ Register` - data += ` -
-
- - - - - - - - - -
» Tools «
€ WTV Tricks
€ Themes -
€ Pagebuilder
€ Clear Cache
-
- - - - - - - - - - -
» More Stuff «
€ Switch server
€ Run your own server
€ Midnight Archives
€ Help zefie
-
- - - -
- -` - if (hasJS) { - data += `` - } else { - data += ` - - - -` - if (hasJS) { - data += `` - } else { - data += ` - - -
` - } - data += ` - € Welcome to zefie's minisrv ${minisrv_version_string.split(" ")[3]} -
-This server is operated by ${minisrv_config.config.service_owner}.
-`; - if (minisrv_config.config.service_description) { - if (typeof minisrv_config.config.service_description === "string") { - if (minisrv_config.config.service_description.length > 0) { - data += minisrv_config.config.service_description; - } - } - } - - data += ` -

-
` - } - data += ` - € minisrv Latest Updates -
-•  Redesigned home page, uses custom rom theme system.
-•  Added Protoweb Support (Try it!)
-•  Added a new minisrv logo
-
-
- -` -} - -/* -data =` - - - - +data = ` Home for ${session_data.getSessionData("subscriber_username") || "minisrv"} @@ -507,4 +344,3 @@ data += ` ` } data += "</body>\n</html>"; -*/ \ No newline at end of file diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/splash.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/splash.js index 93536821..b5e1d8e7 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/splash.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-home/splash.js @@ -8,7 +8,7 @@ Content-Type: text/html` data = `<html> <head> -<display hideoptions nostatus showwhencomplete switchtowebmode skipback clearback fontsize=medium> +<display hideoptions nostatus showwhencomplete skipback clearback fontsize=medium> <title>Engaging zefie... diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAccountInfo.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAccountInfo.js index 971a0f22..ef31fad5 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAccountInfo.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAccountInfo.js @@ -5,7 +5,6 @@ if (!request_headers.query.registering) { headers = errpage[0]; data = errpage[1]; } else { - var hasJS = session_data.hasCap("client-can-do-javascript"); const WTVRegister = require(classPath + "/WTVRegister.js") var wtvr = new WTVRegister(minisrv_config, SessionStore); var errpage = null; @@ -26,10 +25,15 @@ if (!request_headers.query.registering) { } else { headers = `200 OK +wtv-noback-all: wtv-register: Content-Type: text/html`; var title = "Account Review"; - var main_data = ``; + if (isOldBuild) main_data += '
-
+ var isOldBuild = wtvshared.isOldBuild(session_data); + var main_data = ''; + if (!isOldBuild) main_data += ` +
`; + + main_data += ` @@ -38,7 +42,10 @@ Content-Type: text/html`;  
Here is your account information. If you need to
-correct an item, press Back.

+correct an item, press Back.

`; + if (isOldBuild) main_data += "

"; + + main_data += `
  NAME
@@ -62,18 +69,13 @@ correct an item, press Back.

${request_headers.query.subscriber_contact_method}

 

 

-

`; - - - var form_data = ''; - if (hasJS) { - form_data += ``; - } - else { - form_data += ``; - } - - form_data += '
'; - data = wtvr.getHTMLTemplate(title, main_data, form_data, hasJS); +
'; + var form_data = ` + + + +`; + data = wtvr.getHTMLTemplate(title, main_data, form_data, isOldBuild); } -} \ No newline at end of file +} diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAgreement.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAgreement.js index 49b0a53a..e53fc3d0 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAgreement.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateAgreement.js @@ -5,7 +5,6 @@ if (!request_headers.query.registering) { headers = errpage[0]; data = errpage[1]; } else { - var hasJS = session_data.hasCap("client-can-do-javascript"); const WTVRegister = require(classPath + "/WTVRegister.js") var wtvr = new WTVRegister(minisrv_config); headers = `200 OK @@ -14,39 +13,32 @@ Content-Type: text/html`; ENCTYPE="x-www-form-encoded" METHOD="POST"> Please set up your account:

- - - - - - - - - - - - -
YOUR NAME: - - - -
+ +

DESIRED USERNAME: - -

- -
+ +

YOUR CONTACT INFO: -

-
CONTACT INFO TYPE: - - @@ -54,13 +46,11 @@ AutoCaps selected> -
`; - var form_data = `` - if (hasJS) { - form_data += ``; - } else { - form_data += ``; - } - form_data += ``; - data = wtvr.getHTMLTemplate(minisrv_config.config.service_name + " Account Setup", main_data, form_data, hasJS); -} \ No newline at end of file +`; + var form_data = ` + + + +`; + data = wtvr.getHTMLTemplate(minisrv_config.config.service_name + " Account Setup", main_data, form_data, wtvshared.isOldBuild(session_data)); +} diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateReviewAccountInfo.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateReviewAccountInfo.js index 0da4c250..beebdb59 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateReviewAccountInfo.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/ValidateReviewAccountInfo.js @@ -51,37 +51,78 @@ if (!request_headers.query.registering || data = errpage[1]; } else { - var hasJS = session_data.hasCap("client-can-do-javascript") headers = `200 OK Content-Type: text/html`; - var title = "Finished signing up"; - var main_data = `
- - - - + + data = ` + + +Finished signing up + + + + + + + + + +
+ + + +
+ + + + + +You've finished signing up + +
+ +
+ + + + + + + +
+ + Thank you for signing up for ${minisrv_config.config.service_name}.

You will now go to your Web Home page. You can always connect to the Internet by choosing -Web Home on your TV Home page.`; - - - var form_data = ''; - if (hasJS) { - form_data += ``; - } - else { - form_data += ``; - } - - form_data += ''; - data = wtvr.getHTMLTemplate(title, main_data, form_data, hasJS); - - headers = `200 OK -Content-Type: text/html`; +Web Home on your TV Home page. + +

+
+ +
+
+ + + + + + + + + +
+ + +`; } } -} \ No newline at end of file +} diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/register.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/register.js index 240baa13..83e0a917 100644 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/register.js +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-register/register.js @@ -8,23 +8,19 @@ var wtvr = new WTVRegister(minisrv_config); var namerand = Math.floor(Math.random() * 100000); var nickname = (minisrv_config.config.service_name + '_' + namerand) var human_name = nickname; -var hasJS = session_data.hasCap("client-can-do-javascript") && parseInt(session_data.get('wtv-system-version')) >= 2000; -var form_data = ""; +var isOldBuild = wtvshared.isOldBuild(session_data); +var form_data = ``; +if (minisrv_config.config.allow_guests) form_data += ``; var main_data = `
Welcome to the ${minisrv_config.config.service_name} Mini Service, operated by ${minisrv_config.config.service_owner}. The next screens will lead you through a quick setup process for using this service.

Press the "Continue" button below to begin setup.

`; -if (hasJS) { - form_data = ``; -} else { - form_data = ``; - if (minisrv_config.config.allow_guests) form_data += ``; - form_data += ``; -} +form_data += ` + + +

+`; -form_data += ``; -data = wtvr.getHTMLTemplate("Welcome to " + minisrv_config.config.service_name, main_data, form_data, hasJS); \ No newline at end of file +data = wtvr.getHTMLTemplate("Welcome to " + minisrv_config.config.service_name, main_data, form_data, isOldBuild); diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-setup/phone-BYOISP-Done.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-setup/phone-BYOISP-Done.js deleted file mode 100644 index 2b2f22d1..00000000 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-setup/phone-BYOISP-Done.js +++ /dev/null @@ -1,7 +0,0 @@ -var minisrv_service_file = true; - -headers = `302 Moved -Connection: Keep-Alive -wtv-expire-all: wtv-tricks:/themes -Location: wtv-tricks:/themes -Content-Type: text/html` \ No newline at end of file diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-tricks/themes.html b/zefie_wtvp_minisrv/includes/ServiceVault/wtv-tricks/themes.html deleted file mode 100644 index adceab0b..00000000 --- a/zefie_wtvp_minisrv/includes/ServiceVault/wtv-tricks/themes.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - -
-
-
- Please select the theme you would like to use from the list below. Click done when finished.
-
-
-

-
\ No newline at end of file diff --git a/zefie_wtvp_minisrv/includes/classes/WTVRegister.js b/zefie_wtvp_minisrv/includes/classes/WTVRegister.js index 2aa1e7be..c2ba4cad 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVRegister.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVRegister.js @@ -22,7 +22,7 @@ class WTVRegister { } checkUsernameSanity(username) { - var regex_str = "^([A-Za-z0-9\-\_]{" + this.minisrv_config.config.user_accounts.min_username_length + "," + this.minisrv_config.config.user_accounts.max_username_length + "})$"; + var regex_str = "^([A-Za-z0-9-\_]{" + this.minisrv_config.config.user_accounts.min_username_length + "," + this.minisrv_config.config.user_accounts.max_username_length + "})$"; var regex = new RegExp(regex_str); return regex.test(username); } @@ -73,29 +73,40 @@ class WTVRegister { * @param {string} title HTML Page Title * @param {string} main_content Main center content * @param {string} form_buttons Form and buttons + * @param {boolean} is_old_build True or false * @returns {string} HTML Page */ - getHTMLTemplate(title, main_content, form_buttons, hasJS) { + getHTMLTemplate(title, main_content, form_buttons, is_old_build) { var data; - data = ``; - if (hasJS) { - data += `` - } else { - data += ` - -
- -
- - -
- -${title}           -
`; - } - data += ` - - + if (is_old_build) { + data = ` + + + ${title} + + + + +
+ + + +
+ + + + + + + + +
+ ${title} +
+
+
+
+
@@ -121,9 +132,67 @@ class WTVRegister { `; + } else { + data = ` + + + ${title} + + + + + + + + + +
+ + + +
+ + + + + +${title} + +
+ +
+ + + + + + + + +
+ +${main_content} + +
+ +
+
+ + + + +${form_buttons} + +
+ +`; + } return data; } } -module.exports = WTVRegister; \ No newline at end of file +module.exports = WTVRegister; diff --git a/zefie_wtvp_minisrv/includes/classes/WTVShared.js b/zefie_wtvp_minisrv/includes/classes/WTVShared.js index 9b1553c7..8a1e707d 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVShared.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVShared.js @@ -520,8 +520,8 @@ class WTVShared { if (minisrv_config.config.verbosity >= 0 && minisrv_config.config.verbosity <= 3) { debugFlags.quiet = minisrv_config.config.verbosity < 2; - debugFlags.show_headers = minisrv_config.config.verbosity % 2 === 1; - debugFlags.debug = minisrv_config.config.verbosity === 2 || minisrv_config.config.verbosity === 3; + debugFlags.show_headers = minisrv_config.config.verbosity === 2 + debugFlags.debug = minisrv_config.config.verbosity === 3; log(` * Console Verbosity level ${minisrv_config.config.verbosity}`); } else { Object.assign(debugFlags, { debug: true, quiet: false, show_headers: true }); diff --git a/zefie_wtvp_minisrv/package-lock.json b/zefie_wtvp_minisrv/package-lock.json index 428edfa8..09411e16 100644 --- a/zefie_wtvp_minisrv/package-lock.json +++ b/zefie_wtvp_minisrv/package-lock.json @@ -1,15 +1,14 @@ { "name": "zefie_wtvp_minisrv", - "version": "0.9.55", + "version": "0.9.56", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "zefie_wtvp_minisrv", - "version": "0.9.55", + "version": "0.9.56-pre", "license": "GPL3", "dependencies": { - "@mafintosh/vm2": "^3.9.2", "adm-zip": "^0.5.12", "crypto-js": "^4.2.0", "easy-crc": "0.0.2", @@ -25,7 +24,6 @@ "proxy-agent": "^6.4.0", "rc4-crypto": "^1.5.0", "sanitize-html": "^2.13.0", - "socks-proxy-agent": "^8.0.2", "strftime": "^0.10.2", "uuid": "^8.3.2" }, @@ -138,18 +136,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@mafintosh/vm2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@mafintosh/vm2/-/vm2-3.9.2.tgz", - "integrity": "sha512-lQS+7KT5H88iMmbz94X9L1B2lY3TTxRbh8etoAaYGfR1rGQLRr4TmejVzAXN65fJWJAHPRgVKHk/wD75XKsfOw==", - "license": "MIT", - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", diff --git a/zefie_wtvp_minisrv/package.json b/zefie_wtvp_minisrv/package.json index cf4fd162..c7dfd47b 100644 --- a/zefie_wtvp_minisrv/package.json +++ b/zefie_wtvp_minisrv/package.json @@ -1,6 +1,6 @@ { "name": "zefie_wtvp_minisrv", - "version": "0.9.55", + "version": "0.9.56", "description": "WebTV Service (WTVP) Emulation Server", "main": "app.js", "homepage": "https://github.com/zefie/zefie_wtvp_minisrv", @@ -26,7 +26,6 @@ "url": "https://github.com/zefie/zefie_wtvp_minisrv.git" }, "dependencies": { - "@mafintosh/vm2": "^3.9.2", "adm-zip": "^0.5.12", "crypto-js": "^4.2.0", "easy-crc": "0.0.2", @@ -42,7 +41,6 @@ "proxy-agent": "^6.4.0", "rc4-crypto": "^1.5.0", "sanitize-html": "^2.13.0", - "socks-proxy-agent": "^8.0.2", "strftime": "^0.10.2", "uuid": "^8.3.2" }, diff --git a/zefie_wtvp_minisrv/user_config.pconly_example.json b/zefie_wtvp_minisrv/user_config.pconly_example.json new file mode 100644 index 00000000..6f715858 --- /dev/null +++ b/zefie_wtvp_minisrv/user_config.pconly_example.json @@ -0,0 +1,99 @@ +{ + /* + STOP! STOP! STOP! + Do NOT edit this file. Instead make a file called "user_config.json" in the same folder as "app.js" + With that, you can override anything defined here. You can copy this config as a template, but should + only leave in things you are actually overriding, in case a future feature update changes any defaults. + */ + "services": { + // service definitions + + "wtv-head-waiter": { + "disabled": true + }, + "wtv-tricks": { + "disabled": true + }, + "wtv-star": { + "disabled": true + }, + "wtv-news": { + "disabled": true + }, + "news": { + "disabled": true + }, + "wtv-register": { + "disabled": true + }, + "wtv-log": { + "disabled": true + }, + "wtv-home": { + "disabled": true + }, + "wtv-1800": { + "disabled": true + }, + "wtv-flashrom": { + "disabled": true + }, + "wtv-setup": { + "disabled": true + }, + "wtv-music": { + "disabled": true + }, + "wtv-cookie": { + "disabled": true + }, + "wtv-chat": { + "disabled": true + }, + "wtvchat": { + "disabled": true + }, + "irc": { + "disabled": true + }, + "wtv-disk": { + "disabled": true + }, + "wtv-guide": { + "disabled": true + }, + "wtv-mail": { + "disabled": true + }, + "wtv-passport": { + "disabled": true + }, + "wtv-favorite": { + "disabled": true + }, + "wtv-admin": { + "disabled": true + }, + "wtv-author": { + "disabled": true + }, + "http": { + "disabled": true + }, + "https": { + "disabled": true + }, + "proto": { + "disabled": true + }, + "pb_services": { + "disabled": true + }, + "pc_services": { + // PC Services + "port": 1699, + "pc_services": true, + "disabled": false + } + } +} diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.code-workspace b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.code-workspace index 2c2577af..8dc0a8c5 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.code-workspace +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.code-workspace @@ -5,5 +5,6 @@ } ], "settings": { + "codeQL.createQuery.qlPackLocation": "/home/zefie/dev/zefie_wtvp_minisrv" } } \ No newline at end of file