From 0c0d1821d6b304787baec6f2ae44334952a22bae Mon Sep 17 00:00:00 2001 From: zefie Date: Tue, 10 Aug 2021 22:48:28 -0400 Subject: [PATCH 1/8] fix PUT commands --- zefie_wtvp_minisrv/WTVDownloadList.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVDownloadList.js b/zefie_wtvp_minisrv/WTVDownloadList.js index 5e3c60f1..3dd3b1e2 100644 --- a/zefie_wtvp_minisrv/WTVDownloadList.js +++ b/zefie_wtvp_minisrv/WTVDownloadList.js @@ -115,7 +115,7 @@ class WTVDownloadList { */ put(path, destination) { this.download_list += "PUT " + path + "\n"; - this.download_list += "location: " + destination + "\n"; + this.download_list += "location: " + destination + "\n\n"; } /** @@ -124,8 +124,7 @@ class WTVDownloadList { * @param {string} destination Destination file path in the User Store */ putUserStoreDest(path, destination) { - this.download_list += "PUT " + path + "\n"; - this.download_list += "location: " + this.service_name + ":/userstore?partialPath="+escape(destination) + "\n"; + this.put(path, this.service_name + ":/userstore?partialPath=" + escape(destination)); } /** @@ -134,8 +133,7 @@ class WTVDownloadList { */ putUserStore(path) { var destination = path.replace("file://", ""); - this.download_list += "PUT " + path + "\n"; - this.download_list += "location: " + this.service_name + ":/userstore?partialPath=" + escape(destination) + "\n\n"; + this.putUserStoreDest(path, destination); } /** * Adds a GET command to the download list From 9b25b0b86016ce599173d720c082b63f12775285 Mon Sep 17 00:00:00 2001 From: zefie Date: Tue, 10 Aug 2021 22:54:25 -0400 Subject: [PATCH 2/8] update userstore to allow path= too --- .../ServiceVault/wtv-disk/uptest.js | 57 ------------------- .../ServiceVault/wtv-disk/userbrowser.js | 23 -------- .../ServiceVault/wtv-disk/userstore.js | 4 +- 3 files changed, 2 insertions(+), 82 deletions(-) delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/uptest.js delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/userbrowser.js diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/uptest.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/uptest.js deleted file mode 100644 index b015f7a8..00000000 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/uptest.js +++ /dev/null @@ -1,57 +0,0 @@ -const WTVDownloadList = require("./WTVDownloadList.js"); -var wtvdl = new WTVDownloadList(minisrv_config); -if (request_headers['wtv-request-type'] == 'download') { - console.log(request_headers.post_data.toString(CryptoJS.enc.Latin1)); - wtvdl.reset(); - var froot = "file://disk/Demo/"; - var fget = [ - "attract.mpg", - "can-you-hear.mpg", - "explore.mpg", - "hear.html", - "index.html", - "menu1.html", - "menu2.html", - "menu3.html", - "menu4.html", - "service.html", - "splash-mits.mpg", - "splash-phil.mpg", - "splash-sony.mpg", - "splash1.html", - "splash2.html", - "splash3.html", - "what-is-it.html", - "what-is-it.mpg", - "what-others.html", - "what-others.mpg", - "whats-in-it.html", - "whats-in-it.mpg", - "whats-in-it.mpg.old" - ]; - - Object.keys(fget).forEach(function (k) { - wtvdl.putUserStore(froot + fget[k]); - }); - headers = "200 OK\nContent-type: " + wtvdl.content_type; - data = wtvdl.getDownloadList(); - console.log(data); -} else { - headers = "200 OK\nContent-type: text/html"; - var success_url = new clientShowAlert({ - 'image': minisrv_config.config.service_logo, - 'message': "Upload successful!", - 'buttonlabel1': "Okay", - 'buttonaction1': "client:goback", - 'noback': true, - }).getURL(); - - var fail_url = new clientShowAlert({ - 'image': minisrv_config.config.service_logo, - 'message': "Upload failed...", - 'buttonlabel1': "Okay...", - 'buttonaction1': "client:goback", - 'noback': true, - }).getURL(); - data = wtvdl.getSyncPage("Testing", "UploadTest", null, "Your receiver is uploading files.", "Sending files", null, success_url, fail_url, "wtv-disk:/uptest"); -} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userbrowser.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userbrowser.js deleted file mode 100644 index 72804117..00000000 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userbrowser.js +++ /dev/null @@ -1,23 +0,0 @@ -// todo some fancy ass file manager or something - - -if (socket.ssid) { - if (ssid_sessions[socket.ssid]) { - if (ssid_sessions[socket.ssid].isRegistered()) { - data = ssid_sessions[socket.ssid].getUserStoreFileByURL("file://Disk/Demo/allyouneed.html"); - //data = ssid_sessions[socket.ssid].getUserStoreFile("Disk/Demo/allyouneed.html"); - var contype = ssid_sessions[socket.ssid].getUserStoreContentType("file://Disk/Demo/allyouneed.html"); - - if (data) { - headers = "200 OK\n"; - headers += "Content-Type: " + contype; - } - } - } -} - -if (!headers) { - var errpage = doErrorPage(400) - headers = errpage[0]; - data = errpage[1]; -} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js index 2ca7c442..f53bd496 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js @@ -1,9 +1,9 @@ if (request_headers.post_data) { - if (request_headers.query.partialPath) { + if (request_headers.query.partialPath || request_headers.query.path) { if (socket.ssid) { if (ssid_sessions[socket.ssid]) { if (ssid_sessions[socket.ssid].isRegistered()) { - var result = ssid_sessions[socket.ssid].storeUserStoreFile(request_headers.query.partialPath, new Buffer.from(request_headers.post_data.toString(CryptoJS.enc.Hex), 'hex'), request_headers.query['last-modified-seconds'] || null, (request_headers.query.no_overwrite) ? false : true); + var result = ssid_sessions[socket.ssid].storeUserStoreFile(request_headers.query.path || request_headers.query.partialPath, new Buffer.from(request_headers.post_data.toString(CryptoJS.enc.Hex), 'hex'), request_headers.query['last-modified-seconds'] || null, (request_headers.query.no_overwrite) ? false : true); if (result) { headers = "200 OK\n"; headers += "Content-Type: text/plain"; From 7b3b7325a714cded93ee5f04c9b9a13da8076f7c Mon Sep 17 00:00:00 2001 From: Eric MacDonald Date: Tue, 10 Aug 2021 00:11:09 -0400 Subject: [PATCH 3/8] Change to % reduced so it's more useful info (ratio is usually uncomp_size:comp_size) --- zefie_wtvp_minisrv/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index fa4463a7..e2fb3417 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -602,8 +602,8 @@ async function sendToClient(socket, headers_obj, data) { // ultimately send original content length if lzpf compressed_content_length = data.byteLength; } - var compression_percentage = ((compressed_content_length / uncompressed_content_length) * 100).toFixed(1).toString() + "%"; - if (uncompressed_content_length != compressed_content_length) if (zdebug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ Ratio:", compression_percentage); + var compression_percentage = ((1 - (compressed_content_length / uncompressed_content_length)) * 100).toFixed(1).toString() + "%"; + if (uncompressed_content_length != compressed_content_length) if (zdebug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ % Reduced:", compression_percentage); } // encrypt if needed From 002c221f05f521cb46a9b4fd52e7fcaf94e6a89d Mon Sep 17 00:00:00 2001 From: Eric MacDonald Date: Tue, 10 Aug 2021 22:32:10 -0400 Subject: [PATCH 4/8] Remove WordArray from allowed input types then fix garbled text encoding issue --- zefie_wtvp_minisrv/WTVLzpf.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVLzpf.js b/zefie_wtvp_minisrv/WTVLzpf.js index 5bfea2ea..5983dc47 100644 --- a/zefie_wtvp_minisrv/WTVLzpf.js +++ b/zefie_wtvp_minisrv/WTVLzpf.js @@ -447,27 +447,19 @@ class WTVLzpf { /** * Converts the data to a Javascript Buffer object * - * @param data {String|Buffer|CryptoJS.lib.WordArray} Data to convert + * @param data {String|Buffer} Data to convert * * @returns {Buffer} Javascript Buffer object */ ConvertToBuffer(data) { - if (data.words) { - var WTVSec = require("./WTVSec.js"); - wtvsec = new WTVSec(1); - data = wtvsec.wordArrayToBuffer(data); - WTVSec, wtvsec = null; - } else if (!data.byteLength) { - // otherwise if its not already a Buffer, convert it to one - data = new Buffer.from(data); - } + data = new Buffer.from(data.toString('binary')); return data; } /** * Compress data using WebTV's Lzpf compression algorithm and adds the footer to the end. * - * @param uncompressed_data {String|Buffer|CryptoJS.lib.WordArray} data to compress + * @param uncompressed_data {String|Buffer} data to compress * * @returns {Buffer} Lzpf compression data */ From a8f43ea5d5834c99b326d962dbb46d595d433a31 Mon Sep 17 00:00:00 2001 From: Eric MacDonald Date: Tue, 10 Aug 2021 22:45:46 -0400 Subject: [PATCH 5/8] Return when Finish() is called (makes it easier when we add stream comp) --- zefie_wtvp_minisrv/WTVLzpf.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVLzpf.js b/zefie_wtvp_minisrv/WTVLzpf.js index 5983dc47..09eb3cfd 100644 --- a/zefie_wtvp_minisrv/WTVLzpf.js +++ b/zefie_wtvp_minisrv/WTVLzpf.js @@ -400,8 +400,6 @@ class WTVLzpf { this.EncodeLiteral(code_length, code); } } - - return Buffer.from(this.encoded_data); } /** @@ -442,6 +440,8 @@ class WTVLzpf { // End this.AddByte((this.current_literal >>> 0x18) & 0xFF); this.AddByte(0x20); + + return Buffer.from(this.encoded_data); } /** @@ -467,9 +467,7 @@ class WTVLzpf { uncompressed_data = this.ConvertToBuffer(uncompressed_data); this.Begin(); this.EncodeBlock(uncompressed_data, true); - this.Finish(); - - return Buffer.from(this.encoded_data); + return this.Finish(); } } From 53998c236bffc0984989e494ecf1d09ffec37084 Mon Sep 17 00:00:00 2001 From: Eric MacDonald Date: Tue, 10 Aug 2021 22:47:04 -0400 Subject: [PATCH 6/8] Add ratio to compression log line --- zefie_wtvp_minisrv/app.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index e2fb3417..0330a54b 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -602,8 +602,9 @@ async function sendToClient(socket, headers_obj, data) { // ultimately send original content length if lzpf compressed_content_length = data.byteLength; } - var compression_percentage = ((1 - (compressed_content_length / uncompressed_content_length)) * 100).toFixed(1).toString() + "%"; - if (uncompressed_content_length != compressed_content_length) if (zdebug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ % Reduced:", compression_percentage); + var compression_ratio = (uncompressed_content_length / compressed_content_length).toFixed(2); + var compression_percentage = ((1 - (compressed_content_length / uncompressed_content_length)) * 100).toFixed(1); + if (uncompressed_content_length != compressed_content_length) if (zdebug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ Ratio:", compression_ratio, "Saved:", compression_percentage.toString() + "%"); } // encrypt if needed From 11935a588628ad48174308c5122a579ae102a339 Mon Sep 17 00:00:00 2001 From: zefie Date: Tue, 10 Aug 2021 23:01:41 -0400 Subject: [PATCH 7/8] remove dev files from vs project --- zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj | 6 ------ 1 file changed, 6 deletions(-) diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj index 7d786788..1810a2a6 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj @@ -52,12 +52,6 @@ Code - - Code - - - Code - Code From 95442a12af5cbb45025ac621c6d882d359be7130 Mon Sep 17 00:00:00 2001 From: zefie Date: Wed, 11 Aug 2021 00:56:21 -0400 Subject: [PATCH 8/8] lots more stuff - proper gzip download for disk system (aka WNI reinventing the Content-Encoding: gzip wheel) - send Last-Modified for static files - send wtv-checksum for all disk system downloads - other fixes --- .../ServiceVault/wtv-1800/noflash.js | 2 +- .../ServiceVault/wtv-1800/preregister.js | 8 +- .../Locale/en-US/modem_firmware.dat.gz | Bin 0 -> 92837 bytes .../Locale/ja-JP/modem_firmware.dat.gz | Bin 0 -> 92835 bytes .../content/diskmaps/ModemFirmware.json | 17 +++ .../ServiceVault/wtv-disk/sync.js | 6 +- .../wtv-flashrom/content/content-serve.js | 2 +- .../wtv-flashrom/current-noflash.js | 2 +- .../ServiceVault/wtv-flashrom/get-by-path.js | 2 +- .../ServiceVault/wtv-flashrom/get-lc2-page.js | 2 +- .../ServiceVault/wtv-flashrom/noflash.js | 2 +- .../ServiceVault/wtv-flashrom/willie.js | 4 +- .../wtv-head-waiter/login-stage-two.js | 6 +- .../ServiceVault/wtv-log/log.js | 4 +- zefie_wtvp_minisrv/WTVClientSessionData.js | 11 +- zefie_wtvp_minisrv/WTVDownloadList.js | 8 +- zefie_wtvp_minisrv/WTVFlashrom.js | 26 ++-- zefie_wtvp_minisrv/WTVSec.js | 11 +- zefie_wtvp_minisrv/WTVShared.js | 42 ++++++ zefie_wtvp_minisrv/app.js | 129 +++++++++++------- zefie_wtvp_minisrv/config.json | 1 + 21 files changed, 185 insertions(+), 100 deletions(-) create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/ja-JP/modem_firmware.dat.gz create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/noflash.js b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/noflash.js index 984e5442..1c68e5b8 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/noflash.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/noflash.js @@ -1,5 +1,5 @@ if (socket.ssid != null && !ssid_sessions[socket.ssid].get("wtvsec_login")) { - var wtvsec_login = new WTVSec(); + var wtvsec_login = new WTVSec(minisrv_config); wtvsec_login.IssueChallenge(); wtvsec_login.set_incarnation(request_headers["wtv-incarnation"]); ssid_sessions[socket.ssid].set("wtvsec_login", wtvsec_login); diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js index 8548ff59..43f3e7d6 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js @@ -20,15 +20,15 @@ } } }); - if (i > 0 && zdebug) console.log(" # Closed", i, "previous sockets for", wtvshared.filterSSID(socket.ssid)); + if (i > 0 && minisrv_config.config.debug_flags.debug) console.log(" # Closed", i, "previous sockets for", wtvshared.filterSSID(socket.ssid)); } } if (ssid_sessions[socket.ssid].data_store.wtvsec_login) { - if (zdebug) console.log(" # Recreating primary WTVSec login instance for", wtvshared.filterSSID(socket.ssid)); + if (minisrv_config.config.debug_flags.debug) console.log(" # Recreating primary WTVSec login instance for", wtvshared.filterSSID(socket.ssid)); delete ssid_sessions[socket.ssid].data_store.wtvsec_login; } - ssid_sessions[socket.ssid].data_store.wtvsec_login = new WTVSec(); + ssid_sessions[socket.ssid].data_store.wtvsec_login = new WTVSec(minisrv_config); ssid_sessions[socket.ssid].data_store.wtvsec_login.IssueChallenge(); ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(request_headers["wtv-incarnation"] || 1); } else { @@ -117,7 +117,7 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) { if (request_headers.query.reconnect) gourl = null; - if (!file_path != null && !zquiet) console.log(" * Sending TellyScript", file_path, "on socket", socket.id); + if (!file_path != null && !minisrv_config.config.debug_flags.quiet) console.log(" * Sending TellyScript", file_path, "on socket", socket.id); if (request_headers.query.guest_login) { send_tellyscript = false; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz new file mode 100644 index 0000000000000000000000000000000000000000..70fb34416b66de2160b4eee2358307aeb22dbc1e GIT binary patch literal 92837 zcmb4}Q+Fj?vxQ^Z?%2kTv4b7kwr!_lCmq|iZQJgk<8*AJ^Szhn_KaHf1J)X2)tEKs z^CJchj+7!@1`N{P(ahZ5(8Aiq-qYB{oY~CS4eYYlTT6BPg~zY`Qe+6Fh_xxwZmO)n zPI{vV1k_Wm)^r9|uU6G+*!MDnw}6&6HM(EXE0yaB;u>o=*P>UL)~J?7*O*mWqHASF zTA62kPhg-vu3lc=1aBUCZVY=9d@bj4csX28W-?u`*)fy1h*PnSQScJ$*D>KcM@t2z zp^t5Zl~w_qZiIX-$nscoEc?y&8VOgUMq8H(ZM+xm-Z_wdum zR*7pAbL}QbYpfi z(zOlq32;y&e=gG9_B--HckYIl-!&etw=FwawCr$MnfBMUeK(I}z;RFUUG(7wYWxo^ z*NQp6LA2;958aS9zwfb5hFyM#>5cu4e9c21z?${=S8unPPm2> zNqK|@59L!}v0>}5mX`4ZM-q`DL4=xC6NB3RiGZmFbPHGaP?CCMFb+9K69XvgNAEU!Q^|<=Q{I%e^ zQ$e@+szl5!Al|?s$Rd0tc>rG?8p~+$Aey`r`kW7`eO`gLBrOQLJei&-V_-H2oBIiy z5j2OMu!`+owSiznXmU;l*1EE%W5Zx49u&vWa)r!QjjYpbA<;_anfxphBw{WdM20GY zg2Y}yW;R;*&k2t+zS*Mnu$m7`x6xK-baEPcK?p7zF|c<)@RUWpKtez9)O2!?NDUH} zZI^PvX$DqS$iWYslccs)r0f&HwXjj-)FOJi9ZRF-DQ*Gx=M5=y5eiSxbU2n3oEusT z)cWE39s-Ryc2yIiINabF>7X$%p-zeoWfUE4nL~`8s2}_-2|?B_tg$25zG}h{Th*Ab zu1(#_u26?CF=mJ<%}Vd#TFEt!-O76@!FG*kHA{dvR{JU?vQ^XNDgT=FFF~>sm8Dw7 zL);E+HM*T+mX4pohVXPHSm2 zmDv&NM???yc51jE3pmnw-@ms011|zsSt$SItm*Vyz;Yo_4d3Ny+{1*j)f~)7=MfD2 z5d{3hH3p8IAZA$D4+Hg{ohRbmkp*NV$ve9w)ejRxIb1tW6hh8o)pliEzk`j5pkio= z66DX7v1B5oM<|C4a#`G*(97G%xp=G~b5bSIUsU70wqN5b744b2OR&e*z+)p2yN=co z+b;{g3U(4D1;O(rUO<>2B^GH<^#? z;ClZN4&8o-v)=TR)qFd`IqI){dut27bNgR8a@pj0WrO*LHm^+EhYo>;wJlsr<&@>` z#5{QU7$hT(D)fR*7#18lqd@Iur*%2qacQ*78s;Qb=Pqqk+5Q35b~u9(-PFI@4>W zrW2x;7r5}ooJ=H2H@3=r2L-2xP#f4QUEofK?QOwu=`dQ_Mhe>S?_-J8W_9q_l=oN# zmgn52{GH8t8G6h-q$vtuk;~W+(Sj7qk@ljd1xr0L42u~K+u_v9YO zqIMNJiA0~=#&$JRri|lbD5G@6-SC&zO}3yOtBFF`&cJIctEOeVBg2i1#-6JCqno_u zevCCmqC#{9ti7-S!MFkLi3km5ixv?w@REKLtV@q$uH{fJ6BbOAWQeh&l94{RjOWAM zaVZ}(jL_J23F$2#Mu9ihIaTuNwNan+k>%vFL_s`fR-537Vaq&jXkoXNRW-lioQ~s& zf!{x38AWrclf$_(O>7MVSZWlosq2!5e!*kw!Z{NM$H>f3P*Bv7p)8RQ=9pn>IeK1n zDjfK*%L#n3X#Ppq_oj7R+LksSuqevfIDS7Iiqao>LZq>o$WvEC_TL|=AP9V@JA;PG zItsGzEx@7e>=qn7GgfqsuEwW)GGnMt7=+Bl{kQuhk_{#n%Sdus0V`KB3mCGdaQGdG z<6)YL(Xt`D7Rv1!hG!qmGcf0!$n@7qFrgviB_H#!fxeAIscl8 zY_*kJ;W}&0yA&@UoMi6rt(%fJgeF=8i&*`Uk6rc(%cxjznC)FuCgr#@mCPg8HJm~y zbZwo1HAK6Jc_zTi7X2umnRl8#t9yLvI-gjx<=f~iyqzDy>}9fEilLW&4m&2{Pu!6Gy^8RG;N+-0MDdY#yE!ODJSH zY2G0K#B;s-nbY8>u(9j8{hBRVY8U`NtDZT0`H`axXWx8<*jD(XVRvP302}zUC#atr zGAANaZWHR2I=lJ1tvtq{yEaQiHZ_TMod_aMy(qxIwyI>nj#GNF6-=(*FzT7%X|VE? zi{&vK_q@9`J9gC7YWv-LTX)eu$YXO2kDb)xmj?^;|m&9-aM-C659>ES{Tr&kE=f0Q;Nw zp*-8D`%=VTxur?nqbOC&Bb*-S;X}I!M%9K+!KUhboP~*PeE36Snha5~;hRzE5N4_3 z06d29)cT)c$;H6W6qu)=IGGR_1~H{D%YSwU*T!WIURt$K>ROy834Kz@5%0+7+%5SQ zRskdxq7bSE-vc1E-*Z*=p=HGt1Gg~Bjk}(oD91%-d5rr_XRJwATz2!D69QYw5ZO%$ zG2=rZYrB#)YK(yZXn;D|Uq^~nfP(46^5&oU)72Xs*IR>{A&rX^`- zAdPzeH!AoSifvRUY6Efk&+R~qsz5_1O(@3KVN5h_ zLgXg_UFxdD;`zE}Ydo-G2A#TURff^y>wUm3pd9hpMreJ*s`hH)TjdP%XLXAgbJMQ+PKO-EhN)>+ArI^XP(Cq4Yh)J=g+a4ax4fI7bjLLg_h zA-@Q8phH`M2N)#SPu;&BV7!S(89q(1oG~VOc;Yozq1~UuHW7-pqYryIyDI}3b%Qxs zOEhfw0d%*r@-i})xhZ)W87btSNl7Z0n940b4C93ERtt&xAC`lsavvkD&u~HNiZx_L zWsuqiVAp6tRLI!STTdvV(9)5CvIjezREbBFPUMx?N6NG$iicJKY^Uj|xr~*uJIADB z@*!`lHfazSC9d>Nt#Y(zdl@d-m^0fDJ8L!(0CMG zz$v8WV1sq3h_IQ0287^Bq-U~~r>GbPi=+cqm$WdO2b1JTG8z?H2(Zy{gD|iz-q?`cVc<40 zk~#6nw?Yy1BBbFnA@3?v?JA(p)069+#$ z`_>e0npmhbwbboOdZvfP<{9c+0@e~5lh{}q(cf||0!(P{@Bdnx()iJkmq6I%Fk{z& zudJ26SY}8P;3#PGI2JaE&tQg!<@}t-u-F}{MRb*^mf!bRQv+5D{S^Yu$Ao&2H zln?e5M?Ou?9?r!~K09n`#eZDjwdsm}7SHkZ!Jp{^Gelw1@$VWEY@57E0byW}t<@nT z*G=l8|}){tzmT&AhOi91ef)Rv-CnxNX_$R{aH zElNZE+1V)P;mpe6NGG{txaq25`7n?{DwpTtv&WbKG%1&RytB63=Un^riydJ@z`C++ zab~kW6Xk;?xLvSKmdSIO8aa2!dbBM$3`o!xlJ-u7LXl}IRr}sC4O1XhL~9GAk6XPu*Dlq#Y`Q9@wq`Zz_L<9omYm!XYa!+ z;A@1lsN_Iu$rNS2XgB{s?`f>z;B?&IqZFmKz`BPi2{0s>QT|m3Hhy8;Z zcy<>8CLl<%jqL?4kLY7n^pp!}{KzzEYjb+g0Yhd=|2vc=^9cF{4?1j*BpMaki^bE$ z@r7#EpI3xiUnGFQ6y^<061J=G2m6pYCp>cp3PEb5FSb51v*)@*%tg|c0qzBA_PtUI zOWlOKEPYf+n%qli`p43izqG3%%EFL&0sk`@g&qiz?K#-*1Gv2%a(z-)f9Arj{O_So zWE`?$QLF+L7)7O$skgs>eE0(m4{M2+k)6KFSMJw{GtDIpe6)pl?U_(t0B|t3E3~LC zQF+IQGA)*bV=mxc?@O_yJYD4&*_({Pj3_`#Jtvm5c*5aGs)!$7Y%IyyOn{Eee-b?OM4422`qD%t>C!wRLNRW`wpJW~%1)Z230xw+M1RTzRlPqC2nM!#_OQ@YE6b%mnHZ0I)-UTE1FDLF}-)t)*&KjHw~ z^&MuXk$pSlCaZV)9AldhPR@sA&?{)~R)(@z)`$bxMBMU}Y6-2-2X5E6vfN8Jk*Xcj z0>%%xqPTYdL=TMfCcLphAxv6U*+O`3Ce+&TxyDLqXrde}XE(cV{A#d9Zr=)>Oj;e- z+2}}rqH0wcqVSSh-G`j~L9Brxn**G-h&Irg$*fyLcu2@tC;AJVg+XcVSXiXMVVG9J&d5x)+@aIwq!`szaN0XR&vrDnS*z7 zy$3V{6w_SXAV38ThqTnC{Lo4w=sZT$sSCD#;LJqo?~xxL%CwF%6PsD=6y547#{z7Q zmS#k~1B8AcnDF#MzGjdpFb9V*md}M0{xWcrNC8hO*o5u{i#cKcKV?#&dp@~{#=)4) z-MK0gG+{w}6T4}&p~M`VJSu7T;u<-yPix+AfW^r~bF$hb9s(y7s*Weg9*&Aci1f{7 z7y9o!6~4k0-)i3#DHO!Pn6VE9RI!`G3bWTZ1s;(1;mZHeTgl`?jZ@|;JxRi=623=5 zX0)COMbXzBGN7qLD`Jn1d`OYaG?TgHV$Rf(hLb#(?S)6D3sK5#uMfQ~p6=J9+lTAS zAx(lG!u;Ab-+Z^Q~`k>Xq(t?2QX-KfgUZM-}Q=P1Vk;JrJh&s7T&1y{@mvcSr z*KGmG`Aoe7Yo!YS4cm*PX-|%$#ytIImj;6gmW8KfR3bGs0k4ULeF{)oJc44R@=M$~ zfEqx~>{4@KfIH+4i_XlP;#4^Vhl@agf*m8RX^eNa6oIY?lTdO|%xbtkj>aOAG#&!? z{!AL};T@h-ryuE-D>hOLj&=49W3??h@&(T6-5pw__k!N+RS@dt?M4+LAH3UAhq2!3 zG=z-<>~KRLX@C_x9zK=IH#QI~9e$>X(Z2xuM?Rpca{Fs0Q^MJ8UR!Rn=2W}Fk;3Qe z<#frvTAQZ14hm@sgOSuj(RS=Pq_l8vHqrt|wTB>lcyO}tIua^;bda}@^o>x~j1}(O zDAI}DSYU54xX1Okn^9v@ssR6MpiYahixM@+8n#jyMd#*+jqus+_xRn+`Fc2njxK)o{iAlAl86z!q!5P8uJ9ez}}S8zChll;;fh1%9lQWT-k5&3!Kl5zjeF8 z*3jCGZaVlQBiaQ}Q6-`9s|u1Z%5%4*%0@rFTcGgJwpfVO@4t_=JcG=p3cyN@as@2d z%7{5{hLm@qk8h?Tm-FaS?`THPAX}F*ey86JN4u*Q$!5!r0*F&4uCpzG#14K9wm2LX zmqRe+4ve-(uwbwvQbn#X3#YXafXYpP+;WDv3Vn?Vw$@v;{mV*QAwkMo#m@_}HWwzt zj=)wUBM!zB;w!LSC~VI252_7(E3bagsU+Ks44yPn;GbTlNuv~Kk^pOE?MN~3%cpj1 z;3|(I+|**?mdB>s!#Sti)hE~*lL!bB`SK_zcT1ZC6)@-#Vv(Fh%oezs?aN<@-QwG) zg~>I+TJfJiUCWr-(BluCq_t#@^XqYDSd0%ZYPyC{T_`v1L9s`irYlv3DGhaH=fa%x zUg6=fR3)4ah+$5Zi_cTzx%$j-FD+Q|Jk>{5DkoZh5tO#S4h#y3Kz5D`G=7)hxq7F| zagm3k!Tl9z{3+crVty$jGJ545@7BUMWN;uglum^9y^79?HPEu+IMr^+3&F;-SkhFk zD`<2A7NaVKi4OpDs?K&HLwt zo$W2SS+mw3$YMJ?ieC$v!c6sUu|1n?O%X5}AXNIU1R2~&cVJnZi!0P$ihEQ!~56qJW$ zHZ;HUmo)@&4jwK%FEZ3X!Gp%PE7^N0p7l~lt7M(9C~&+ zFI9Q*MLXr*0_)wDQK(1blTcUhgXVDDKHH;j86NadmhY>UO8Dx6mn>*l>?M;yT%f|M zED>Jhf}W$rfA%=~heAVh7-@J)!l_GGJHc^`682ZpQ3jq4H8R6PC=j{sR=Jf!Nvf6o zbuv7@A5-0qmKk?2ipggdb&tLSGX=ntXz|6;~+;3shf3g%Dlk9R8>l&=~pmvPLx-d*OBnx;1ivtB%$w)({bI5-Xct#6W!_`a|d z177}_r|)pz?3?AVsZNdB-F_Cmvp%x%CEs7e=};JSW~Ccqj);6^Cep23u+aX%J2qz$ zFexgVzyqW9Jw@ta&WEU;2!>Jp1JnMGwE!raY3#6tDv7ggp~4X2JIWaGM?^T)hRuVW zTi502FBmlWAWOlJEm`MTZe^Ck)`Xu zDY`b+ABHH~2z?6)Bg>#>c@jbX^?gYAr_ma00qz8xLdz~eR@Jm1qF>lJnE z1j`9L1M+NUjNS^y{zf9enrFxd)s5-rfST}v1~L_>Z&`q4Bs{A2L@>#LY40diD_K|`pI=9Is(dd+i)ZaG0CFehkq4R&fc-l@3#)~L`^1lF?0{}MyVvkVq9V#13D!j zV`T3mkie_{yjQZwiH1a2KYoR$Rmq%C`2V~0>&oVUC*Q& zWLzk-TaU?!*hSEWmn&xQ!J=!kZDtJN`O8g-Gm-loE*E67$dSW5t)Q{Y>71Th$`B+NMssc!B^4@d0pB{N?CI#Pn?8VrzNRmu0XVvZ zzMRi?m)woGCW>Q#5re2+k}Zr6(&u_DY6X(=XvD}1B3zPn!8%Dj8@*i~cRgT^P#vX% z+4e>Uoikljl(^$771b~uFSbJEnUl=$qL4kjlftO9bg#3H$`5evN>5u9o|m!8$uk}< ziGq}*U{%%79y$mVm;qkmd^WH-QJboSEc%i%gv#E~6$4Ql7P8j#1cae%Lv}ws6av-&=xOi&ktVt3ZuMmj?!CRgD@>F*O}h6jl$ zi~DEvd9bDt*XUaT@*N&v=?)sJx`;*L1Bx?~IUHb#Wrc_aLPiwsL%Ljh=m3yY0wvp@5b1eQ5wvypPGF|=^ zvSHK+lBSE!l+8pG>(~+e<^y=#R*qkl#Ft8VD{OA@d`e?ZeGV%Dbp@3s3O%yZW`Z(k z^z+3LK30jbBUeeuXaKvNmeKf{f|>bGZ}XVq<0*}6>WbMbxf8V~wc&nk;aYb=Q4RjNW1SK%!!ky<0+lE5UY&*$UplJi|4hxWC{d)Q6iOwf!42yv5kr3sK#g+8 z@@07-2Urgbq=JVa8IL;pA{*>;J=)jrgX+;4hCy}6v^#sd zOfUA|4&K#Y-PnD&8@1mU-wu#z5}t%ToF%%G2;UB3f1YjtZqi2WiH_lJ48-g$6_mpD zwQ4CF>92&8@HR^x)xNFsTQ@bn-yv~{%DUa-k9dCxvg+qq)&?hlA>qg?C+SFMvZrE@ zPw{OZFnbebyjVsM=^?$ekodF_PvLAMi4>!r02%zNc zg0$%n>dH6w`0aLu8w-8;%6Dl;7K-EiV0FYgnQL7L<#1 z$7ugZ0=mph2tCR{c%c83(1<2}chW^6IC%h7sMh851HFRXxT052W9!#%RXsqBT-Xi> z0%oN_|vhlAD|pJu!C(@xe&91iMlS#jF8T#03Ff49U_ zd+Hf-&eVB|7q%9jnl+CC@mJDZQ-G$GsXv2A5UJH60#SthD{el06+d{x62B> zqIuA3kV*IW@=5rhRC|q$`AB?@1B6!m24sN5a!2 zxv;VlXx(*4y#RmTwArJzQ=nY;BME-p@%DpRJB33_uG0b7ArQ9WDGffo1@~vdiSfpW zR~Q*Fua#o^su+sG4XN1@sV;$f0$MKCRZ4L|ox$iX0}?O`;zrq_kIf zD5FRQFn(^AfkXP;ObXaH7}{a@;n+RlKiFRPPo>lFSJvbrh->zITgHYzrTgAEWO{I< zBls5aTk@ecrH-f{Wzx}ARo_u^E{)(oFNngoRIktf*P75wl%bQDU}NG?rQbYU|(sJxRV`Sb@O*a8?)68#I*TX{KeUeBlfNpYPy zLA?Tg5j17!8w_!8R^ULGe0D47CYNIxk@!28Wr&;PuGeI3>=NyfnzQ(7Kg&t1Ii|Os z1JCBt8HK2wyX6|!WZRSDaZ`;Ot)FA_&OcMo=Bq?)A6Y4*>5tcmIze~&ApwhH@i3;N zmA1zV7~5mMP;H_;HaRUb)aXkS%n0orCRL5UYsg*+*Ad_hwM4@zU+8qKsdWihMz}2P z$~?_7INS??>Uqe3{kinK5sVO^?Q3TY-QOeFRuK$+XL;!_Z^jp6D13i6*0x@~2lf=+ z*~^xwHtAI-I7avCscWjoIwB4I4b;^e>)#<5c?pDI5}d^ILv^Er2{x!gt5XRmb)wQ) zg!8+%k*1`>|F*F8Frcqs-R}#UB0H?!+S?x^Ws}1nG~sM*cZM65bdN*0|66{$+U|vpqO;RS}#bFUE1679# zw0of$#@RC##cmr4wBC}3M(diQ7f(T~dXI;MvMy2k;s%W*0jm3&B9wc-7VaC)P+&OQ zCZa-3z@*Et=OXh6dD^c4%=g#-Wvy^YF9@*~I{lQhLQu?-%a@S*2e}UGd@+~aD5H1y ze4hZj&VMhQ3!77i9BZ@gkTYRE^=_=(;4M%1O7S5FNdv(~%%_TFTMxuVQ`Yj^TcnQ; zZzG2kYvvo6SJy9>Ce&Yb9PwYab2E;Cha^C z#kag9cQ_+IAqjfCM8fFy4GvoYlY$-`UV3OxA8D zZ73`-rW1|8gn5AIjA7%;sfug^o#SztSvYh}40C?2LP>#P5qxmF9I91B2^@+_!ZmZK z^Vp8pO{S$D|0jD2B9bG<2oGEtW-k9JGBBi#X#RnmDF$D2E-!zuH-djq@Qbj;-VawK zFzh-Q^}fO0h2}%YABtRy!Gyj5y|ene01Zeu@}tlk+|KQ1B|l-APXH2!k=)D7FHGQsJ}Nf1?X*N4GH|WBc5GXh2~WCA2Mi2HHgHz*F-wUn|(MZ*SAXW+|$=M+@KIqp%1X7S7PIm zs#v#FZ?Ra6ek-c8SE>7(UjVAoV~@(>kKawKW{!IcU33+FgBTk7YQN1%9b?sP78k5; zsT7dXxb@2I(6%{Nn-#@*e^{mB-Z-u(@8LccU#GjQ^r)wvhMC?UfpsV)Kq+0j-_bHR6>cgIRaJ}z~)}fCb9{rzv z@*2Dr(cz|46o0k;^D|Tvr{|8EbyE+$cst&4?S~)Lw0{I4VKwCa))bEcRprX=#JSQD zfnK6aMP$J3?!XJUfCQN5jG?ymXV${})Mh}%6sow2Rdf0+7R06ct*?d&e}HG|BTqnk znG@GErbKn&dO^RZW>{O?E+Q+qP>YYqyr6$abiS{WIz(0r#^2Pvo~d$gSOMY>R?jj! z+iBP)jGIWuA02x`Q{1HuVqwSl!lkihd)`~snsySMt^~z=o7+1r)~LLWnsSi@ ziZbwZ=3^K0sM=UZcj8??`thi|SNM*VI;TG^FP{G# zW=J&&d=t4!`1!qV6gpA**_He1LLs?PA|PaKXg!;L5Y&!wnq|P4rfato`X+NdekWOR zmL+n<@+ZRlXaF6dzy^I+I`y9g_N?U0d^JHLsI5otz!@b}#=%+%mbZ>1u&1(xo85h& z&+;tnStA@J55C4Wof`2YTAS1`i1BhY%cSTgTWGh2900(Ew^pnp23Qg`irO=0RC>$mB&iT zuCTuNjUxn=pQ4}=Ng7(kSEg6|HnsU2rx9IXX7>(+lhRD^z@I3Jq_U1;XS8&_u*|c+ z5$G%o)tOBb7Q_Q>2cTW^2by%U02j!kQcf`l2Sud5e6BF!95&?A7}J!lWMIS>RMggrgPKm{@q_$8Fqm?^SVX5hR) zP`>Z;`~&QdnC-xP{C^|$pZ!3<(+ufLAn^J(-^7biReOk5)CScMPWrFU zoBEI@0q;BS3X~b?4v_zSdwVZS4aeW}+i~JIK3DLJ>#kJA@}#Td@F5p5U?*Asc7kSn z|Mf!GE~UX_7Y8C{0^!I%$0I(upRZq=SN8U=yVe&*e*(0WomxaRQTE$O(u8Z#00=ft z-|zfKtjGJls_)1Hx~IcI&;Ql}UI9>}=(uie?Fe?Lh>H_rE?9bjeAopE5Z<;Sr~wcP z3YbENnoT;pNsgqsP37JT;Sr3}2a^&}G`MdbzJ($CPeh#mIBOR-Yz_deRvr zqd$GMA$3(0{2*iZtrcKIrSyxJ>Wy6kuikn*Jk|L)7x0xSAPTRRpx&7)Cg*tkvoBT3 zHIwzPQ&zpU{6lf+`E(qsec5W>LNbU7n(U9B6T3kHoG#xJ^O9@v0_^uA6RH%%6#ay6 z(^3*=wTXwa5h>4%{=IHuXM;;!OBAKT1G}?J3(7m7C%jc(wY7?E<#**_P#iIr_X=XM z0m;*O#c{DlypQQhcQGK&M6#dLXaAI{m;qEz@HKY&0?L;B$^Opq$`5#7Idzo$X3hHH zZvHsC$W$z0s#ZK&JS<5QzZU<`HpN_R8&3na3(dmS&?;$3fgjt0OKbE^fiIF`d0HDA zpVbadMoy+GnYl}wCfE0~zSDi__>cQi(Xyi=rCw-c!M}E_`9Kyil#leViPliuec9wj z@&7#V3}tZve1$ynNw6Z0pr13UT;Jb(r00M@yn^JZ626^;`hXhktWOSOGMJI}gV!jq zkc{25Ady^YQHXW(KQ<6m^ksS}p>9;N`}7q0CcOLiDwN%0VI7eH`UnUJAlcM=HkZ=R zOuDn(!~a{~-Ngi#EjAE6@whRH^}~*7T{%IrU-<81hP+_;0F}`FHz$ymHx8V7(H?@tl0Vax;b3qjUE>t7+fM7G_Fa9?)mo2+O z3T?9CV|j1sb85%dz>aEuDw)elw?eNUY9u|mG`HoiT%itBI{JEZo246~X^yTxo6U-E z56p8u2dYDm&mrrP$8K);33ot@0S4PLJH-G-A^7t3+q2c= z?3IpLXWtdVHD#K@5nn*?uwgG9(TY0C&(rQ-!}SLmE*_;Jd~=1i61=KbpWwpu_A=ncfTGeG`6(z(pZ2M z6Q(t!LB;?Tquid05BVxh9%mu;3jWWQ@0Ofr7~a$8=$16zHTl-@-AaXFVv@hNAqc`^S>Xt- zJKIrmaXH2R3_Ozfkq^J}ZIln+THcfjoe_g28R2~8wc_{ew`16HRFPUoCezg2VmB*W zc82ml;ZW_`koN_chFR5W^u!O5{zLTx5b>Qf+=W|#ippSw z$7>O;aFAp;skT0Jd`k>vw~IVp%g4LE0k)*VH&dE~D>?HPaWlXFLcY@-MUU0EvyZoI za!8t``(9ryJn#bj$Tw9*$u{aryh z5l=qE5$~l~4u9a2XP}9-Vi09Zyh*=j%@LY~` zl}{>=*1-(Zys-sTu#E~rNGQ1v6hi*PcC1k3TwRLqw)5d4yFv-nJ@i)8(aXq$6HyehLiySW=Wuk~{pmUn?*ec?o}IO-aOh}DXpQwZ(h1Nmt;+qcrR z)f=LoD)OQR%L|fyjT)b)KD*ND#fTd=m0NQettm!sJq)T%KU%~mIuv*dVISSvBNC#g zqPP1qMKc=FJ;s(47wO<15eWYR$Fn+kJpX?G#rO{ibp;2l#CnxyPLNXKGHA1~W)4y^ zy^5LE5O|)@)!3>Ld)DpZ@ooVV<{20H9|U%ce`sqa_&}tsC@8rmZJFf0V)YtF#bi2x zSLuv|q*sP?Z0O>FNwQA4Ckc!{9h;=2bM%f+iC&0<&l%zp2^IP=w|H83MNIroi7WSly96;fL?A2bh)df{Ws;M{-(DKKE2#D(B8K_DCf#h z{&})Jwn^VF97%fd zU08BO*)$M$K9Sa))1eEFoBLP4-DhnQ3ztD1>L{!H!&;}z?$UUbgMvV)jc>?$$d$RMPe9iwWg(fGY! z(T+F)IR3L8>)@~X>9c%^t%Da!ph}D85-c0s@Y; zm1(YOOJBh-8(n72O*%`k?<-Z>RRrvlYPRe0q5_9NDBbmNCo!efhu@nK#;942FWfhUoPS+DW(Wz(ky z{7jQxC6q%e?dU1G#W=?h4j%+2PFK{=--6T+i z7YuZXAYfuX6e&-LEapZXKU?%1r@(Nmh|fXSH<%%D#b6Fh5&5m*r?&woGlqAgLGWG0`KO9gsAdE;`8oa% zjwx508o>|sx?jAuJ^I#udXwt}H<|=d^oPANG0iT%NQYPt({VpFnix!P3$zh{)44LA z>JSV)xE%-h0s=}NA&AOXFI*vc!Ix%^DTNX4q8$P4ebzEvXCeo}tu4X(lT_1Kj*$E=>v7zY@ z`Ml`2*D6$6uIcpVRmevwj2I=V`v%XWl?%H>roK*t8gCRdZCr;8KK>B%T;N3?+w7r~ z$sQI7t!MEYx#{$_bdody@CqF+h5Zi8VGOugX04)^Q_yvYM_2XD28U*771X4(qfSzV zi@KOo-!vt{8*cTA4V;=LQzap70u`a1iJ)KOHR1ORw+jI%p{d8_qG3Wfb16>Lp%1!4 z-qIhxmlkBEe>6u#P3{XY)@yLaQ?JG%IbX}w3m%uFQJIU1{nqc-1nASG^O;%Axq5Md z<}9CXQeh`cK^Z>>?ra7rV(rzUd0EGg=aD!CKuSaMDO<4~Lp@LJD?WIF*ZXw7Fert) z48T7BMn7(Zd;MRxpChpQ;lGBEBlgA1bRkBJm-&A4N{Z}p{()X~o_G4%;UFq+X&A=yqOO^ zs8>fYC0-|dTZeq_(bl5@cQec=;8mPBN^ z2X50>k}2&$T^Mw@WgG3lL*)$tL`S@e*$1_w#&6AVCD;rnXz!EM&$ z6nZ8_deciKtqZkFhrE${OY<2Fg-{l)U(VuaF{#P@f$HlzGz&g#lBC$ps0c;f<&f@C zN(oO2Xcs4fsy8PP1EH{O9pl-X%`Ti^)`G+It>li0|=BHH-@exBP-&V%t9O?dq#+05tP=+s-=N53I5Ty-a?W(|M z*;zbxp%s%-D1T^t$}f4CPA`H#qJ#oswW=30v{m49-Acqg+;8c4n&eVI5k8Bxqw4h{ zT(}2^9`ZiWd|4kS-EPig^#LW5K3vX?V&Ax6bK`0@BydnO78WkSg~eBZEosc9LlW01_I*m1yA=epj?j&GRWHaUp0rrT69GI0Za913SCI(ZIfG6fiFQN2hjXzE zmb>;}uG5?WVc&HPa)zT&Vtw0Kv~W!@P?-oOi1&lpxFf+bmZMor1lRNhT>E_~Mwxbl zU(z9=2*2I$U6OysL52587j}~#`D!_oD!Op9elhGizUN`D2x(;UE&QRev0e^w0q8I@ zS|K9T{3kfHU-V)Pc~20xG1;eI27`{ZZl<81+q}s#-iZs?ehP+}M2N&OX`M@K_tzhC|q6sjCqdpKr)H8=?3JSQ~(tlzQfysqmzwRZynUCymepj zn^64kcrS2sea@VCd$p;%gW*5o!tAxCPzW92{Ot~tAB4W)6!r#_+#$8?y}%!_(cc^D z@gC!>ZNAoK#_Muuow9S^I_M_uE>t+LL^F^uJC5FSimVF#A7=CUqj#P6O?T0M%m+D_ ziq@Yo>%WBNtPpKy4Yz9u3{>GaO%1o%zJ2?~D39KDidRA^_glqnNEFtFqR-D^4L=@S z;xe3vHl01V)MaoST;?*|J-FOuxM%(`Mq(!&eyH~rD`T4*%(iaQJ}-ppVW-;Q^8wzr zSvwbCryW6V_#%L}v5Yl4?A_Vlxxaot1VZ!2=2jL~8otw^3FdOcH#Oot-#VDBbJAHu z0WY2St>J4Eb>*9ypgmt3&NacQe$&@S^PN7&3Y<-*7+INFh~?Q8YDv zaMt2ruFZDg&>UKyy49R(4|2c4Xj%Z_NFn^#Gy%eiLikUU4#Js2_@1c;gmpsrw#gg1 z#jKqwEEP4CG30W6+yD;&KmedS#AHIOGsHSUOf1BLAm#xvT8R1K7e1lN=ghfK<@y@c z(^}Su_I&M>2X)hS%N0%-m>0zUzhKSJ&VY8-81A~6W4Oot5X2gOuJ{Q}*lG>0>0I&4 zmS6VVbt<;}v~Lbd*nH&|t{HfCR~P`tH*-Iv&H2B0mWkz%Bt-=IJAuE+`->n{1VQ-0 zk0FSk;L;a=kA3>xLo#L`D|4MDGSQR8$zp05S z^hydny8ewh;?u-Dk1k$BD#xs;)Nz@azxsYzS-G}*tj4!8^4+w2Md-j!?`-(G@-uPb zhqtWfS6ANgY3O{*5t!e7>W%eJs)oiKt@M=nW?%nk)4(mw7fw$vT)yJXNZsn7u8${@ zA4d<__}0mLm;K8VGyk(F_TcIteP3z#&#C7J?*90L$fC>3cf7jr%na{K|FOosT627D zY~8D=uhdLCxps7&|Ik+^418d@`ohljU$ijFccRaKa`oh!&waJlXUuNO!?(kYa<^fEqZ14lAnEtv;WcEy0v-dqNF0V@fDwewaY}NTg%fY zWu99VTr_glG2i4@(vSFdTOK4@(e;@6h;PQ`pg}9o`Q2jZg3LWfR-HIC@~C$ayQI2@ zE_1wW#yZFFI-e`SJmp)|{lmz}8<|P=wa@RreMEZv*B3kc49e_!%D2eF=cwqh74S_FFG_RQ&S)=8WUcgurz!V`Bq5g8%HHY z%ZWPQ#3~eHUORkL%$9Xy7fkhd>o4`x&Tsi>uZ1}?yY}ZFyfu$lD7W4x7baQLUVp8n zY3slxishOQci9qkCzkz^xnF8HRJ_g8Fn)~AP%*Py*T3@H;sr}P70t39^Zl`SK~+dm z(3c55voenYwe){=}tKvopz~or}uJ<_u@a-kZ@cWoq{3)U>$q

6X>`{<7H-`sqvCoJUfd&Nyxc+{g~Ui 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

e%3Qc*1Mq9xN7xJA9 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

xhc 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 literal 0 HcmV?d00001 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json new file mode 100644 index 00000000..25de241e --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json @@ -0,0 +1,17 @@ +{ + "ModemFirmware": { + "base": "file://Disk/Browser/Modem_Firmware/", + "location": "content/Modem_Firmware/", + "execute": "client:ModemReload", + "execute_when": "atEnd", + "service_owned": true, + "files": [ + { + "file": "file://Disk/Browser/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz" + }, + { + "file": "file://Disk/Browser/Modem_Firmware/Locale/ja-JP/modem_firmware.dat.gz" + } + ] + } +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js index 6f1c0b46..0b1b075b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js @@ -90,7 +90,7 @@ if (request_headers['wtv-request-type'] == 'download') { } } var download_list = wtvdl.getDownloadList(); - console.log(download_list); + if (minisrv_config.config.show_diskmap) console.log(download_list); return download_list; } @@ -260,13 +260,13 @@ if (request_headers['wtv-request-type'] == 'download') { var errpage = doErrorPage(404, "The requested DiskMap does not exist."); headers = errpage[0]; data = errpage[1]; - if (zdebug) console.error(" # " + service_name +":/sync error", "could not find diskmap"); + if (minisrv_config.config.debug_flags.debug) console.error(" # " + service_name +":/sync error", "could not find diskmap"); } } else { var errpage = doErrorPage(400); headers = errpage[0]; data = errpage[1]; - if (zdebug) console.error(" # " + service_name + ":/sync error", "missing query arguments"); + if (minisrv_config.config.debug_flags.debug) console.error(" # " + service_name + ":/sync error", "missing query arguments"); } } else if (request_headers.query.group && request_headers.query.diskmap) { var message = request_headers.query.message || "Retrieving files..."; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/content/content-serve.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/content/content-serve.js index 9753fcc2..9687db6f 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/content/content-serve.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/content/content-serve.js @@ -14,7 +14,7 @@ if ((romtype == "bf0app" || !romtype) && (bootver == "105" || !bootver)) { } if (!ssid_sessions[socket.ssid].data_store.WTVFlashrom) { - ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); + ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); } ssid_sessions[socket.ssid].data_store.WTVFlashrom.getFlashRom(request_path, function (data, headers) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js index 642803cf..745d92ff 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/current-noflash.js @@ -22,7 +22,7 @@ if (ssid_sessions[socket.ssid].get("wtv-client-rom-type") == "bf0app" && ssid_se } if (!ssid_sessions[socket.ssid].data_store.WTVFlashrom) { - ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); + ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); } ssid_sessions[socket.ssid].data_store.WTVFlashrom.getFlashRom(request_path, function (data, headers) { 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 a2ad57e0..5815eb2b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js @@ -15,7 +15,7 @@ if ((romtype == "bf0app" || !romtype) && (bootver == "105" || !bootver)) { if (request_headers.query.raw || bf0app_update) { if (!ssid_sessions[socket.ssid].data_store.WTVFlashrom) { - ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); + ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); } ssid_sessions[socket.ssid].data_store.WTVFlashrom.getFlashRom(request_path, function (data, headers) { 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 3a4ea4fa..4a70db6d 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js @@ -8,7 +8,7 @@ if (!request_headers.query.path) { headers = errpage[0]; data = errpage[1]; } else { - var wtvflashrom = new WTVFlashrom(service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server); + var wtvflashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server); var request_path = request_headers.query.path; // read flashrom header info into array using WTVFlashrom class diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js index 03c990e9..1ee36f57 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/noflash.js @@ -22,7 +22,7 @@ if (ssid_sessions[socket.ssid].get("wtv-client-rom-type") == "bf0app" && ssid_se } if (!ssid_sessions[socket.ssid].data_store.WTVFlashrom) { - ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(service_vaults, service_name, 0, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); + ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, 0, minisrv_config.services[service_name].use_zefie_server, bf0app_update, minisrv_config.services[service_name].debug); } ssid_sessions[socket.ssid].data_store.WTVFlashrom.getFlashRom(request_path, function (data, headers) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js index 765de4e3..2ac678cf 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js @@ -32,7 +32,7 @@ const req = https.request(options, function (res) { }); res.on('error', function (e) { - if (!zquiet) console.log(" * Upstream Ultra Willies HTTP Error:", e); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Upstream Ultra Willies HTTP Error:", e); var errpage = doErrorPage(400) headers = errpage[0]; data = errpage[1]; @@ -40,7 +40,7 @@ const req = https.request(options, function (res) { }); res.on('end', function () { - if (!zquiet) console.log(" * Upstream Ultra Willies HTTP Response:", res.statusCode, res.statusMessage); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Upstream Ultra Willies HTTP Response:", res.statusCode, res.statusMessage); if (request_headers.query.clear_cache) { headers += "\nwtv-expire-all: "+service_name; } diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js index 40281814..9d6dee8c 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js @@ -2,7 +2,7 @@ var challenge_response, challenge_header = ''; var gourl; if (socket.ssid != null && !ssid_sessions[socket.ssid].get("wtvsec_login")) { - var wtvsec_login = new WTVSec(1,zdebug); + var wtvsec_login = new WTVSec(minisrv_config); wtvsec_login.IssueChallenge(); wtvsec_login.set_incarnation(request_headers["wtv-incarnation"]); ssid_sessions[socket.ssid].set("wtvsec_login", wtvsec_login); @@ -21,8 +21,8 @@ if (socket.ssid !== null) { } else { console.log(" * wtv-challenge-response FAILED for " + wtvshared.filterSSID(socket.ssid)); - if (zdebug) console.log("Response Expected:", challenge_response.toString(CryptoJS.enc.Base64)); - if (zdebug) console.log("Response Received:", client_challenge_response) + if (minisrv_config.config.debug_flags.debug) console.log("Response Expected:", challenge_response.toString(CryptoJS.enc.Base64)); + if (minisrv_config.config.debug_flags.debug) console.log("Response Received:", client_challenge_response) gourl = "wtv-head-waiter:/login?reissue_challenge=true"; } } else { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-log/log.js b/zefie_wtvp_minisrv/ServiceVault/wtv-log/log.js index 84c43d47..b3e69ae5 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-log/log.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-log/log.js @@ -22,7 +22,7 @@ Content-length: 0`; logdata_outstring_hex += request_headers.post_data.toString(CryptoJS.enc.Hex); if (minisrv_config.services[service_name].write_logs_to_disk) { fs.writeFile(fullpath, logdata_outstring_hex, "Hex", function () { - if (!zquiet) console.log(" * Wrote POST log data from", wtvshared.filterSSID(socket.ssid), "for", socket.id); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Wrote POST log data from", wtvshared.filterSSID(socket.ssid), "for", socket.id); sendToClient(socket, headers, data); }); } else { @@ -41,7 +41,7 @@ Content-length: 0`; var logdata_outstring_hex = Buffer.from(logdata_outstring, 'utf8').toString('hex'); if (minisrv_config.services[service_name].write_logs_to_disk) { fs.writeFile(fullpath, logdata_outstring_hex, "Hex", function () { - if (!zquiet) console.log(" * Wrote GET log data from", wtvshared.filterSSID(socket.ssid), "for", socket.id); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Wrote GET log data from", wtvshared.filterSSID(socket.ssid), "for", socket.id); sendToClient(socket, headers, data); }); } else { diff --git a/zefie_wtvp_minisrv/WTVClientSessionData.js b/zefie_wtvp_minisrv/WTVClientSessionData.js index 48adda55..97c01819 100644 --- a/zefie_wtvp_minisrv/WTVClientSessionData.js +++ b/zefie_wtvp_minisrv/WTVClientSessionData.js @@ -103,15 +103,6 @@ class WTVClientSessionData { return this.wtvmime.getSimpleContentType(path); } - /** - * Returns a RFC7231 compliant UTC Date String from the current time - * @param {Number} offset Offset from current time (+/-) - * @returns {string} A RFC7231 compliant UTC Date String from the current time - */ - getUTCTime(offset = 0) { - return new Date((new Date).getTime() + offset).toUTCString(); - } - /** * Returns the number of user cookies * @returns {number} Number of cookies @@ -123,7 +114,7 @@ class WTVClientSessionData { resetCookies() { this.session_store.cookies = {}; // webtv likes to have at least one cookie in the list, set a dummy cookie for zefie's site expiring in 1 year. - this.addCookie("wtv.zefie.com", "/", this.getUTCTime(365 * 86400000), "cookie_type=chocolatechip"); + this.addCookie("wtv.zefie.com", "/", this.wtvshared.getUTCTime(365 * 86400000), "cookie_type=chocolatechip"); } addCookie(domain, path = null, expires = null, data = null) { diff --git a/zefie_wtvp_minisrv/WTVDownloadList.js b/zefie_wtvp_minisrv/WTVDownloadList.js index 3dd3b1e2..712a67e5 100644 --- a/zefie_wtvp_minisrv/WTVDownloadList.js +++ b/zefie_wtvp_minisrv/WTVDownloadList.js @@ -104,6 +104,7 @@ class WTVDownloadList { * @param {string} group Group to which it belongs */ delete(path, group = null) { + path = this.wtvshared.stripGzipFromPath(path); this.download_list += "DELETE " + path + "\n"; if (group !== null) this.download_list += "group: " + group + "\n\n"; } @@ -145,13 +146,16 @@ class WTVDownloadList { * @param {string} checksum md5sum of the file * @param {string} file_permission File permissions */ - get(file, path, source, group, checksum = null, file_permission = 'r') { + get(file, path, source, group, checksum = null, uncompressed_size = null, file_permission = 'r') { + file = this.wtvshared.stripGzipFromPath(file); this.download_list += "GET " + file + "\n"; this.download_list += "group: " + group + "-UPDATE\n"; this.download_list += "location: " + source + "\n"; this.download_list += "file-permission: " + file_permission + "\n"; if (checksum != null) this.download_list += "wtv-checksum: " + checksum + "\n"; + if (uncompressed_size != null) this.download_list += "wtv-uncompressed-filesize: " + uncompressed_size + "\n"; this.download_list += "service-source-location: /webtv/content/" + source.substr(source.indexOf('-') + 1, source.indexOf(':/') - source.indexOf('-') - 1) + "d/" + source.substr(source.indexOf(':/') + 2) + "\n"; + path = this.wtvshared.stripGzipFromPath(path); this.download_list += "client-dest-location: " + path + "\n\n"; } @@ -163,6 +167,8 @@ class WTVDownloadList { * @param {string} destgroup Destination Group */ rename(srcfile, destfile, srcgroup, destgroup) { + srcfile = this.wtvshared.stripGzipFromPath(srcfile); + destfile = this.wtvshared.stripGzipFromPath(destfile); this.download_list += "RENAME " + srcfile + "\n"; this.download_list += "group: " + srcgroup + "-UPDATE\n"; this.download_list += "destination-group: " + destgroup + "\n"; diff --git a/zefie_wtvp_minisrv/WTVFlashrom.js b/zefie_wtvp_minisrv/WTVFlashrom.js index 93aba8f7..4985e54a 100644 --- a/zefie_wtvp_minisrv/WTVFlashrom.js +++ b/zefie_wtvp_minisrv/WTVFlashrom.js @@ -6,15 +6,15 @@ class WTVFlashrom { bf0app_update = false; service_vaults = new Array(); service_name = ""; - zdebug = false; + minisrv_config = []; - constructor(service_vaults, service_name, use_zefie_server = true, bf0app_update = false, debug = false) { + constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, debug = false) { this.service_vaults = service_vaults; this.service_name = service_name; this.use_zefie_server = use_zefie_server; this.bf0app_update = bf0app_update; - this.zdebug = debug; + this.minisrv_config.config.debug_flags.debug = debug; } @@ -95,31 +95,31 @@ class WTVFlashrom { if (flashrom_info.magic == flashrom_magic) flashrom_info.valid_flashrom = true; if (!flashrom_info.valid_flashrom) console.error(" * Warning! FlashROM File Magic (" + flashrom_info.magic + ") did not match expected magic (" + flashrom_magic + ")..."); - if (this.zdebug) console.log(" # FlashROM File Magic (" + flashrom_info.magic + "), expected magic (" + flashrom_magic + "), OK = " + flashrom_info.valid_flashrom + "..."); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # FlashROM File Magic (" + flashrom_info.magic + "), expected magic (" + flashrom_magic + "), OK = " + flashrom_info.valid_flashrom + "..."); flashrom_info.byte_progress = data.readUInt32BE(68); - if (this.zdebug) console.log(" # Flashrom Part Bytes Sent:", flashrom_info.byte_progress); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part Bytes Sent:", flashrom_info.byte_progress); flashrom_info.compression_type = parseInt(part_header[16], 16); - if (this.zdebug) console.log(" # Flashrom Part Compression Type:", flashrom_info.compression_type); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part Compression Type:", flashrom_info.compression_type); flashrom_info.part_data_size = data.readUInt32BE(4); - if (this.zdebug) console.log(" # Flashrom Part Data Size:", flashrom_info.part_data_size); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part Data Size:", flashrom_info.part_data_size); flashrom_info.part_total_size = flashrom_info.part_data_size + flashrom_info.header_length; - if (this.zdebug) console.log(" # Flashrom Part Total Size:", flashrom_info.part_total_size); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part Total Size:", flashrom_info.part_total_size); flashrom_info.total_parts_size = data.readUInt32BE(32); - if (this.zdebug) console.log(" # Flashrom All Parts Total Size:", flashrom_info.total_parts_size); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom All Parts Total Size:", flashrom_info.total_parts_size); // read current part number bit from part header flashrom_info.part_number = data.readUInt16BE(28); - if (this.zdebug) console.log(" # Flashrom Current Part Number:", flashrom_info.part_number); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Current Part Number:", flashrom_info.part_number); // read current part display message from part header flashrom_info.message = new Buffer.from(part_header.toString('hex').substring(36 * 2, 68 * 2), 'hex').toString('ascii').replace(/[^0-9a-z\ \.\-]/gi, ""); flashrom_info.is_last_part = ((flashrom_info.byte_progress + flashrom_info.part_total_size) == flashrom_info.total_parts_size) ? true : false; flashrom_info.rompath = `wtv-flashrom:/${path}`; - if (this.zdebug) console.log(" # Flashrom Part Bytes Sent (after this part):", flashrom_info.byte_progress + flashrom_info.part_total_size); - if (this.zdebug) console.log(" # Flashrom Part is Last Part", flashrom_info.is_last_part); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part Bytes Sent (after this part):", flashrom_info.byte_progress + flashrom_info.part_total_size); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Flashrom Part is Last Part", flashrom_info.is_last_part); if (flashrom_info.is_last_part && this.bf0app_update) { flashrom_info.next_rompath = null; @@ -179,7 +179,7 @@ class WTVFlashrom { }) res.on('end', function () { - if (this.zdebug) console.log(` * Zefie's FlashROM Server HTTP Status: ${res.statusCode} ${res.statusMessage}`) + if (this.minisrv_config.config.debug_flags.debug) console.log(` * Zefie's FlashROM Server HTTP Status: ${res.statusCode} ${res.statusMessage}`) if (res.statusCode == 200) { var data = Buffer.from(data_hex, 'hex'); } else if (res.statusCode == 206) { diff --git a/zefie_wtvp_minisrv/WTVSec.js b/zefie_wtvp_minisrv/WTVSec.js index 1d937b94..a73a5c31 100644 --- a/zefie_wtvp_minisrv/WTVSec.js +++ b/zefie_wtvp_minisrv/WTVSec.js @@ -31,19 +31,18 @@ class WTVSec { hRC4_Key1 = null; hRC4_Key2 = null; RC4Session = new Array(); - zdebug = false; - + minisrv_config = []; /** * * Initialize the WTVSec class. * * @param {Number} wtv_incarnation Sets the wtv-incarnation for this instance - * @param {Boolean} zdebug Enable debugging + * @param {Boolean} minisrv_config.config.debug_flags.debug Enable debugging * */ - constructor(wtv_incarnation = 1, zdebug = false) { - this.zdebug = zdebug; + constructor(minisrv_config, wtv_incarnation = 1) { + this.minisrv_config = minisrv_config; this.initial_shared_key = CryptoJS.enc.Base64.parse(this.initial_shared_key_b64); if (this.initial_shared_key.sigBytes === 8) { @@ -248,7 +247,7 @@ class WTVSec { * */ SecureOn(rc4session = null) { - if (this.zdebug) console.log(" # Generating RC4 sessions with wtv-incarnation: " + this.incarnation); + if (this.minisrv_config.config.debug_flags.debug) console.log(" # Generating RC4 sessions with wtv-incarnation: " + this.incarnation); var buf = new Uint8Array([0xff & this.incarnation, 0xff & (this.incarnation >> 8), 0xff & (this.incarnation >> 16), 0xff & (this.incarnation >> 24)]); endianness(buf, 4); diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/WTVShared.js index eb744aff..a53a7800 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/WTVShared.js @@ -5,6 +5,7 @@ class WTVShared { path = require('path'); + fs = require('fs'); minisrv_config = []; constructor(minisrv_config) { @@ -19,6 +20,33 @@ class WTVShared { } } + /** + * Returns the Last-Modified date in Unix Timestamp format + * @param {string} file Path to a file + */ + getFileLastModified(file) { + var stats = this.fs.lstatSync(file); + if (stats) return new Date(stats.mtimeMs); + return false; + } + + /** + * Returns the Last-Modified date in a RFC7231 compliant UTC Date String + * @param {string} file Path to a file + */ + getFileLastModifiedUTCString(file) { + return this.getFileLastModified(file).toUTCString(); + } + + /** + * Returns a RFC7231 compliant UTC Date String from the current time + * @param {Number} offset Offset from current time (+/-) + * @returns {string} A RFC7231 compliant UTC Date String from the current time + */ + getUTCTime(offset = 0) { + return new Date((new Date).getTime() + offset).toUTCString(); + } + /** * Returns a censored SSID * @param {string|Array} obj SSID String or Headers Object @@ -66,6 +94,20 @@ class WTVShared { return path; } + /** + * If the file ends with .gz, remove it + * @param {string} path + * @return {string} path without gz, or unmodified path if it isnt a gz + */ + stripGzipFromPath(path) { + var path_split = path.split('.'); + if (path_split[path_split.length - 1].toLowerCase() == "gz") { + path_split.pop(); + path = path_split.join("."); + } + return path; + } + /** * Gets the file extension from a path * @param {string} path diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 0330a54b..b7830369 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -134,7 +134,8 @@ async function processPath(socket, service_vault_file_path, request_headers = ne // file exists, read it and return it service_vault_found = true; request_is_async = true; - if (!zquiet) console.log(" * Found " + service_vault_file_path + " to handle request (Direct File Mode) [Socket " + socket.id + "]"); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + " to handle request (Direct File Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path; var contypes = wtvmime.getContentType(service_vault_file_path); headers = "200 OK\n" headers += "Content-Type: " + contypes[0] + "\n"; @@ -145,8 +146,9 @@ async function processPath(socket, service_vault_file_path, request_headers = ne } else if (fs.existsSync(service_vault_file_path + ".txt")) { // raw text format, entire payload expected (headers and content) service_vault_found = true; - if (!zquiet) console.log(" * Found " + service_vault_file_path + ".txt to handle request (Raw TXT Mode) [Socket " + socket.id + "]"); request_is_async = true; + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".txt to handle request (Raw TXT Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".txt"; fs.readFile(service_vault_file_path + ".txt", 'Utf-8', function (err, file_raw) { if (file_raw.indexOf("\n\n") > 0) { // split headers and data by newline (unix format) @@ -176,18 +178,20 @@ async function processPath(socket, service_vault_file_path, request_headers = ne // In Asynchronous mode, you are expected to call sendToClient(socket,headers,data) by the end of your script // `socket` is already defined and should be passed-through. service_vault_found = true; - if (!zquiet) console.log(" * Found " + service_vault_file_path + ".js to handle request (JS Interpreter mode) [Socket " + socket.id + "]"); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".js to handle request (JS Interpreter mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".js"; // expose var service_dir for script path to the root of the wtv-service var service_dir = service_vault_dir + path.sep + service_name; socket_sessions[socket.id].starttime = Math.floor(new Date().getTime() / 1000); var jscript_eval = fs.readFileSync(service_vault_file_path + ".js").toString(); eval(jscript_eval); - if (request_is_async && !zquiet) console.log(" * Script requested Asynchronous mode"); + if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); } else if (fs.existsSync(service_vault_file_path + ".html")) { // Standard HTML with no headers, WTV Style service_vault_found = true; - if (!zquiet) console.log(" * Found " + service_vault_file_path + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".html"; request_is_async = true; headers = "200 OK\n" headers += "Content-Type: text/html" @@ -207,12 +211,13 @@ async function processPath(socket, service_vault_file_path, request_headers = ne while (service_check_dir.join(path.sep) != service_vault_dir) { var catchall_file = service_check_dir.join(path.sep) + path.sep + minisrv_catchall_file_name; if (fs.existsSync(catchall_file)) { - if (!zquiet) console.log(" * Found catchall at " + catchall_file + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found catchall at " + catchall_file + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); + equest_headers.service_file_path = catchall_file; var jscript_eval = fs.readFileSync(catchall_file).toString(); // don't pass these vars to the script var service_check_dir, minisrv_catchall_file_name = null; eval(jscript_eval); - if (request_is_async && !zquiet) console.log(" * Script requested Asynchronous mode"); + if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); } else { service_check_dir.pop(); } @@ -269,6 +274,7 @@ async function processURL(socket, request_headers) { } else { shortURL = unescape(request_headers.request_url); } + if (request_headers['wtv-request-type']) socket_sessions[socket.id].wtv_request_type = request_headers['wtv-request-type']; if (request_headers.post_data) { var post_data_string = ''; @@ -351,7 +357,8 @@ async function processURL(socket, request_headers) { // assume webtv since there is a :/ in the GET var service_name = shortURL.split(':/')[0]; var urlToPath = service_name + path.sep + shortURL.split(':/')[1]; - if (zshowheaders) console.log(" * Incoming headers on socket ID", socket.id, (await wtvshared.filterSSID(request_headers))); + if (minisrv_config.config.debug_flags.show_headers) console.log(" * Incoming headers on socket ID", socket.id, (await wtvshared.filterSSID(request_headers))); + socket_sessions[socket.id].request_headers = request_headers; processPath(socket, urlToPath, request_headers, service_name); } else if (shortURL.indexOf('http://') >= 0 || shortURL.indexOf('https://') >= 0) { doHTTPProxy(socket, request_headers); @@ -368,7 +375,7 @@ async function processURL(socket, request_headers) { async function doHTTPProxy(socket, request_headers) { var request_type = (request_headers.request_url.substring(0, 5) == "https") ? "https" : "http"; - if (zshowheaders) console.log(request_type.toUpperCase() +" Proxy: Client Request Headers on socket ID", socket.id, (await wtvshared.filterSSID(request_headers))); + if (minisrv_config.config.debug_flags.show_headers) console.log(request_type.toUpperCase() +" Proxy: Client Request Headers on socket ID", socket.id, (await wtvshared.filterSSID(request_headers))); switch (request_type) { case "https": var proxy_agent = https; @@ -567,11 +574,32 @@ async function sendToClient(socket, headers_obj, data) { delete headers_obj["Content-type"]; } + // Add last modified if not a dynamic script + if (wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "js") { + 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 // 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); + // disk service hack before further processing :) + if (socket_sessions[socket.id].wtv_request_type == "download") { + if (headers_obj['Content-Type'] == "application/gzip") { + var gunzipped = zlib.gunzipSync(data); + headers_obj['wtv-checksum'] = CryptoJS.MD5(CryptoJS.lib.WordArray.create(gunzipped)).toString(CryptoJS.enc.Hex).toLowerCase(); + headers_obj['wtv-uncompressed-filesize'] = gunzipped.byteLength; + headers_obj['Content-Type'] = wtvmime.getSimpleContentType(wtvshared.stripGzipFromPath(socket_sessions[socket.id].request_headers.request_url)); + gunzipped = null; + } else { + headers_obj['wtv-checksum'] = CryptoJS.MD5(CryptoJS.lib.WordArray.create(data)).toString(CryptoJS.enc.Hex).toLowerCase(); + } + } + delete socket_sessions[socket.id].wtv_request_type; + delete socket_sessions[socket.id].request_headers; + // compress if needed if (compression_type > 0 && content_length > 0 && headers_obj['http_response'].substring(0,3) == "200") { var uncompressed_content_length = content_length; @@ -604,7 +632,7 @@ async function sendToClient(socket, headers_obj, data) { } var compression_ratio = (uncompressed_content_length / compressed_content_length).toFixed(2); var compression_percentage = ((1 - (compressed_content_length / uncompressed_content_length)) * 100).toFixed(1); - if (uncompressed_content_length != compressed_content_length) if (zdebug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ Ratio:", compression_ratio, "Saved:", compression_percentage.toString() + "%"); + if (uncompressed_content_length != compressed_content_length) if (minisrv_config.config.debug_flags.debug) console.log(" # Compression stats: Orig Size:", uncompressed_content_length, "~ Comp Size:", compressed_content_length, "~ Ratio:", compression_ratio, "Saved:", compression_percentage.toString() + "%"); } // encrypt if needed @@ -612,7 +640,7 @@ async function sendToClient(socket, headers_obj, data) { headers_obj["wtv-encrypted"] = 'true'; headers_obj = moveObjectElement('wtv-encrypted', 'Connection', headers_obj); if (content_length > 0 && socket_sessions[socket.id].wtvsec) { - if (!zquiet) console.log(" * Encrypting response to client ...") + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Encrypting response to client ...") var enc_data = socket_sessions[socket.id].wtvsec.Encrypt(1, data); data = enc_data; } @@ -644,7 +672,7 @@ async function sendToClient(socket, headers_obj, data) { } // header object to string - if (zshowheaders) console.log(" * Outgoing headers on socket ID", socket.id, (await wtvshared.filterSSID(headers_obj))); + if (minisrv_config.config.debug_flags.show_headers) console.log(" * Outgoing headers on socket ID", socket.id, (await wtvshared.filterSSID(headers_obj))); Object.keys(headers_obj).forEach(function (k) { if (k == "http_response") { headers += headers_obj[k] + end_of_line; @@ -665,16 +693,16 @@ async function sendToClient(socket, headers_obj, data) { toClient = headers + end_of_line + data; socket.write(toClient); } else if (typeof data == 'object') { - if (zquiet) var verbosity_mod = (headers_obj["wtv-encrypted"] == 'true') ? " encrypted response" : ""; + 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 (zquiet) verbosity_mod += " with encrypted 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); socket.write(new Uint8Array(concatArrayBuffer(enc_headers, data))); } else { socket.write(new Uint8Array(concatArrayBuffer(Buffer.from(headers + end_of_line), data))); } - if (zquiet) console.log(" * Sent" + verbosity_mod + " " + headers_obj.http_response + " to client (Content-Type:", headers_obj['Content-Type'], "~", headers_obj['Content-length'], "bytes)"); + if (minisrv_config.config.debug_flags.quiet) console.log(" * Sent" + verbosity_mod + " " + headers_obj.http_response + " to client (Content-Type:", headers_obj['Content-Type'], "~", headers_obj['Content-length'], "bytes)"); } if (socket_sessions[socket.id].expecting_post_data) delete socket_sessions[socket.id].expecting_post_data; @@ -782,7 +810,7 @@ function checkSecurity(socket) { } else { rejectSSIDConnection(socket.ssid, blacklist); } - if (ssid_access_list_ip_override && zdebug) console.log(" * Request from disallowed SSID", wtvshared.filterSSID(ssid), "was allowed due to IP address whitelist"); + if (ssid_access_list_ip_override && minisrv_config.config.debug_flags.debug) console.log(" * Request from disallowed SSID", wtvshared.filterSSID(ssid), "was allowed due to IP address whitelist"); } // process whitelist first @@ -851,8 +879,8 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq // its not a POST and it failed the isUnencryptedString test, so we think this is an encrypted blob if (socket_sessions[socket.id].secure != true) { // first time so reroll sessions - if (zdebug) console.log(" # [ UNEXPECTED BINARY BLOCK ] First sign of encryption, re-creating RC4 sessions for socket id", socket.id); - socket_sessions[socket.id].wtvsec = new WTVSec(1, zdebug); + if (minisrv_config.config.debug_flags.debug) console.log(" # [ UNEXPECTED BINARY BLOCK ] First sign of encryption, re-creating RC4 sessions for socket id", socket.id); + socket_sessions[socket.id].wtvsec = new WTVSec(minisrv_config); socket_sessions[socket.id].wtvsec.IssueChallenge(); socket_sessions[socket.id].wtvsec.SecureOn(); socket_sessions[socket.id].secure = true; @@ -926,14 +954,14 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if (ssid_sessions[socket.ssid]) { if (headers["wtv-ticket"]) { if (!ssid_sessions[socket.ssid].data_store.wtvsec_login) { - ssid_sessions[socket.ssid].data_store.wtvsec_login = new WTVSec(); + ssid_sessions[socket.ssid].data_store.wtvsec_login = new WTVSec(minisrv_config); ssid_sessions[socket.ssid].data_store.wtvsec_login.IssueChallenge(); ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(headers["wtv-incarnation"]); ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 = headers["wtv-ticket"]; ssid_sessions[socket.ssid].data_store.wtvsec_login.DecodeTicket(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64); } else { if (ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 != headers["wtv-ticket"]) { - if (zdebug) console.log(" # New ticket from client"); + if (minisrv_config.config.debug_flags.debug) console.log(" # New ticket from client"); ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 = headers["wtv-ticket"]; ssid_sessions[socket.ssid].data_store.wtvsec_login.DecodeTicket(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64); ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(headers["wtv-incarnation"]); @@ -945,11 +973,11 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if ((headers.secure === true || headers.encrypted === true) && !skipSecure) { if (!socket_sessions[socket.id].wtvsec) { - if (!zquiet) console.log(" * Starting new WTVSec instance on socket", socket.id); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Starting new WTVSec instance on socket", socket.id); if (ssid_sessions[socket.ssid].get("wtv-incarnation")) { - socket_sessions[socket.id].wtvsec = new WTVSec(ssid_sessions[socket.ssid].get("wtv-incarnation"), zdebug); + socket_sessions[socket.id].wtvsec = new WTVSec(minisrv_config, ssid_sessions[socket.ssid].get("wtv-incarnation")); } else { - socket_sessions[socket.id].wtvsec = new WTVSec(1, zdebug); + socket_sessions[socket.id].wtvsec = new WTVSec(minisrv_config); } socket_sessions[socket.id].wtvsec.DecodeTicket(headers["wtv-ticket"]); socket_sessions[socket.id].wtvsec.ticket_b64 = headers["wtv-ticket"]; @@ -957,7 +985,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq } if (socket_sessions[socket.id].secure != true) { // first time so reroll sessions - if (zdebug) console.log(" # [ SECURE ON BLOCK (" + socket.id + ") ]"); + if (minisrv_config.config.debug_flags.debug) console.log(" # [ SECURE ON BLOCK (" + socket.id + ") ]"); socket_sessions[socket.id].secure = true; } if (!headers.request_url) { @@ -991,8 +1019,8 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if (!secure_headers) return; delete socket_sessions[socket.id].secure_buffer; - if (zdebug) console.log(" # Encrypted Request (SECURE ON)", "on", socket.id); - if (zshowheaders) console.log(secure_headers); + if (minisrv_config.config.debug_flags.debug) console.log(" # Encrypted Request (SECURE ON)", "on", socket.id); + if (minisrv_config.config.debug_flags.show_headers) console.log(secure_headers); if (!secure_headers.request) { socket_sessions[socket.id].secure = false; var errpage = doErrorPage(400); @@ -1134,9 +1162,9 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq socket.setTimeout(minisrv_config.config.socket_timeout * 1000); headers.post_data = CryptoJS.enc.Hex.parse(socket_sessions[socket.id].post_data); if (socket_sessions[socket.id].secure == true) { - if (zdebug) console.log(" # Encrypted POST Content (SECURE ON)", "on", socket.id, "[", headers.post_data.sigBytes, "bytes ]"); + if (minisrv_config.config.debug_flags.debug) console.log(" # Encrypted POST Content (SECURE ON)", "on", socket.id, "[", headers.post_data.sigBytes, "bytes ]"); } else { - if (zdebug) console.log(" # Unencrypted POST Content", "on", socket.id); + if (minisrv_config.config.debug_flags.debug) console.log(" # Unencrypted POST Content", "on", socket.id); } delete socket_sessions[socket.id].headers; delete socket_sessions[socket.id].post_data; @@ -1158,7 +1186,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq } else if (!skipSecure) { if (!encryptedRequest) { if (socket_sessions[socket.id].secure != true) { - socket_sessions[socket.id].wtvsec = new WTVSec(1, zdebug); + socket_sessions[socket.id].wtvsec = new WTVSec(minisrv_config); socket_sessions[socket.id].wtvsec.IssueChallenge(); socket_sessions[socket.id].wtvsec.SecureOn(); socket_sessions[socket.id].secure = true; @@ -1222,7 +1250,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq async function cleanupSocket(socket) { try { if (socket_sessions[socket.id]) { - if (!zquiet) console.log(" * Cleaning up disconnected socket", socket.id); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Cleaning up disconnected socket", socket.id); delete socket_sessions[socket.id]; } if (socket.ssid) { @@ -1242,7 +1270,7 @@ async function cleanupSocket(socket) { // set timeout to check ssid_sessions[socket.ssid].data_store.socket_check = setTimeout(function (ssid) { if (ssid_sessions[ssid].currentConnections() === 0) { - if (!zquiet) console.log(" * WebTV SSID", wtvshared.filterSSID(ssid), " has not been seen in", (timeout / 1000), "seconds, cleaning up session data for this SSID"); + if (!minisrv_config.config.debug_flags.quiet) console.log(" * WebTV SSID", wtvshared.filterSSID(ssid), " has not been seen in", (timeout / 1000), "seconds, cleaning up session data for this SSID"); delete ssid_sessions[ssid]; } }, timeout, socket.ssid); @@ -1375,7 +1403,7 @@ try { } } } catch (e) { - if (zdebug) console.error(" * Notice: Could not find user configuration (user_config.json). Using default configuration."); + if (minisrv_config.config.debug_flags.debug) console.error(" * Notice: Could not find user configuration (user_config.json). Using default configuration."); } if (throw_me) { @@ -1457,40 +1485,41 @@ process.on('uncaughtException', function (err) { }); // defaults -var zdebug = false; -var zquiet = true; // will squash zdebug even if its true -var zshowheaders = false; +minisrv_config.config.debug_flags = []; +minisrv_config.config.debug_flags.debug = false; +minisrv_config.config.debug_flags.quiet = true; // will squash minisrv_config.config.debug_flags.debug even if its true +minisrv_config.config.debug_flags.show_headers = false; if (minisrv_config.config.verbosity) { switch (minisrv_config.config.verbosity) { case 0: - zdebug = false; - zquiet = true; - zshowheaders = false; + minisrv_config.config.debug_flags.debug = false; + minisrv_config.config.debug_flags.quiet = true; + minisrv_config.config.debug_flags.show_headers = false; console.log(" * Console Verbosity level 0 (quietest)") break; case 1: - zdebug = false; - zquiet = true; - zshowheaders = true; + minisrv_config.config.debug_flags.debug = false; + minisrv_config.config.debug_flags.quiet = true; + minisrv_config.config.debug_flags.show_headers = true; console.log(" * Console Verbosity level 1 (headers shown)") break; case 2: - zdebug = true; - zquiet = true; - zshowheaders = false; + minisrv_config.config.debug_flags.debug = true; + minisrv_config.config.debug_flags.quiet = true; + minisrv_config.config.debug_flags.show_headers = false; console.log(" * Console Verbosity level 2 (verbose without headers)") break; case 3: - zdebug = true; - zquiet = true; - zshowheaders = true; + minisrv_config.config.debug_flags.debug = true; + minisrv_config.config.debug_flags.quiet = true; + minisrv_config.config.debug_flags.show_headers = true; console.log(" * Console Verbosity level 3 (verbose with headers)") break; default: - zdebug = true; - zquiet = false; - zshowheaders = true; + minisrv_config.config.debug_flags.debug = true; + minisrv_config.config.debug_flags.quiet = false; + minisrv_config.config.debug_flags.show_headers = true; console.log(" * Console Verbosity level 4 (debug verbosity)") break; } diff --git a/zefie_wtvp_minisrv/config.json b/zefie_wtvp_minisrv/config.json index 34e80099..101339f4 100644 --- a/zefie_wtvp_minisrv/config.json +++ b/zefie_wtvp_minisrv/config.json @@ -21,6 +21,7 @@ "enable_gzip_compression": true, "pc_server_hidden_service": "http_pc", "pc_server_hidden_service_enabled": false, + "show_diskmap": false, "allow_guests": true }, "services": {