From d64e9a0e9400aafe4c06531f94bc2cfa1455a53c Mon Sep 17 00:00:00 2001 From: zefie Date: Thu, 15 Jul 2021 02:09:37 -0400 Subject: [PATCH] fix file loading issues, v0.6.1 --- hacktv_updsrv/.gitignore | 4 +++ .../ServiceVault/wtv-1800/finish-prereg.js | 22 ++++++------- .../wtv-head-waiter/login-stage-two.js | 1 + hacktv_updsrv/ServiceVault/wtv-home/home.js | 11 +++++-- hacktv_updsrv/ServiceVault/wtv-update/sync.js | 3 ++ hacktv_updsrv/app.js | 31 +++++++++++-------- hacktv_updsrv/package.json | 2 +- hacktv_updsrv/services.json | 5 +++ 8 files changed, 51 insertions(+), 28 deletions(-) diff --git a/hacktv_updsrv/.gitignore b/hacktv_updsrv/.gitignore index 9e06e212..6d6f8150 100644 --- a/hacktv_updsrv/.gitignore +++ b/hacktv_updsrv/.gitignore @@ -6,6 +6,10 @@ # ServiceLogPost Posted Logs ServiceLogPost/*_* +# Large files not pertaining to the service code +ServiceVault/wtv-flashrom/content/* +ServiceVault/wtv-music/content/* + # User-specific files *.rsuser *.suo diff --git a/hacktv_updsrv/ServiceVault/wtv-1800/finish-prereg.js b/hacktv_updsrv/ServiceVault/wtv-1800/finish-prereg.js index 325faf39..4f51374d 100644 --- a/hacktv_updsrv/ServiceVault/wtv-1800/finish-prereg.js +++ b/hacktv_updsrv/ServiceVault/wtv-1800/finish-prereg.js @@ -6,8 +6,7 @@ if (socket_session_data[socket.id].ssid != null && !sec_session[socket_session_d var contype = "text/tellyscript"; -// skip telly for now -var notelly = true; +var skip_tellyscript = false; // if relogin, skip tellyscript if (query['relogin']) { @@ -31,16 +30,17 @@ wtv-client-time-dst-rule: GMT wtv-client-date: `+strftime("%a, %d %b %Y %H:%M:%S", new Date(new Date().toUTCString()))+` GMT`; // if relogin, skip tellyscript -if (query['relogin'] == false || notelly == false) { +var romtype = null; +if (!query['relogin'] && skip_tellyscript == false) { var romtype = getSessionData(socket_session_data[socket.id].ssid, 'wtv-client-rom-type'); +} - switch (romtype) { - case "US-LC2-disk-0MB-8MB": - data = getFile("LC2/LC2_OISP_5555732_56k.tok", true); - break; +switch (romtype) { + case "US-LC2-disk-0MB-8MB": + data = getFile("LC2/LC2_OISP_5555732_56k.tok", true); + break; - default: - data = ''; - break; - } + default: + data = ''; + break; } \ No newline at end of file diff --git a/hacktv_updsrv/ServiceVault/wtv-head-waiter/login-stage-two.js b/hacktv_updsrv/ServiceVault/wtv-head-waiter/login-stage-two.js index 27d81232..5174ebae 100644 --- a/hacktv_updsrv/ServiceVault/wtv-head-waiter/login-stage-two.js +++ b/hacktv_updsrv/ServiceVault/wtv-head-waiter/login-stage-two.js @@ -89,6 +89,7 @@ wtv-log-url: wtv-log:/log wtv-demo-mode: 0 wtv-wink-deferrer-retries: 3 wtv-offline-mail-enable: false +wtv-name-server: 8.8.8.8 wtv-visit: wtv-home:/splash? Content-Type: text/html`; } \ No newline at end of file diff --git a/hacktv_updsrv/ServiceVault/wtv-home/home.js b/hacktv_updsrv/ServiceVault/wtv-home/home.js index 42cc642e..dfc5acae 100644 --- a/hacktv_updsrv/ServiceVault/wtv-home/home.js +++ b/hacktv_updsrv/ServiceVault/wtv-home/home.js @@ -1,7 +1,6 @@ headers =`200 OK Connection: Keep-Alive wtv-expire-all: wtv-home:/splash -wtv-expire-all: htv- Content-type: text/html` if (getSessionData(socket_session_data[socket.id].ssid, 'box-does-psuedo-encryption')) { @@ -30,11 +29,17 @@ if (socket_session_data[socket.id].secure) { data += 'Encryption Key (Server): ' + sec_session[socket.id].session_key2.toString(CryptoJS.enc.Hex)+'
'; data += 'Encryption Key (Client): ' + sec_session[socket.id].session_key1.toString(CryptoJS.enc.Hex)+'


'; } -data += `client:relog (direct)
+data += `

Working stuff

+client:relog (direct)
Clear Cache
+ +

zefie's server only

+Music Collection
+ +

Test Stuff (probably broken)

HackTV Updater Test
Ultra Willies
-Disconnect and go to HackTV Home
+Disconnect and go to HackTV Home
diff --git a/hacktv_updsrv/ServiceVault/wtv-update/sync.js b/hacktv_updsrv/ServiceVault/wtv-update/sync.js index 55195a58..8be14f6b 100644 --- a/hacktv_updsrv/ServiceVault/wtv-update/sync.js +++ b/hacktv_updsrv/ServiceVault/wtv-update/sync.js @@ -1,6 +1,9 @@ var content_dir = service_dir + '/content/'; var diskmap_dir = content_dir + '/diskmaps/'; +if (initial_headers['post_data']) { + console.log(initial_headers['post_data'].toString('CryptoJS.enc.Latin1')) +} if (query['diskmap']) { if (fs.lstatSync(diskmap_dir + query['diskmap'] + ".txt")) { diff --git a/hacktv_updsrv/app.js b/hacktv_updsrv/app.js index f4cfc40c..b85c1d27 100644 --- a/hacktv_updsrv/app.js +++ b/hacktv_updsrv/app.js @@ -10,7 +10,7 @@ const mime = require('mime-types'); const crc16 = require('node-crc16'); var WTVSec = require('./wtvsec.js'); -var zdebug = false; +var zdebug = true; var ports = []; @@ -140,7 +140,7 @@ async function processPath(socket, path, request_headers = new Array(), query = // file exists, read it and return it console.log(" * Found " + path + " to handle request (Direct File Mode) [Socket " + socket.id +"]"); var contype = getConType(path); - data = fs.readFileSync(path).buffer; + data = new Uint8Array(fs.readFileSync(path)).buffer; headers = "200 OK\n" headers += "Content-Type: " + contype; } else if (fs.existsSync(path + ".txt")) { @@ -204,13 +204,6 @@ async function processPath(socket, path, request_headers = new Array(), query = data = errpage[1] + "

The interpreter said:
" + e.toString() + "
"; console.log(e); } - if (headers.toLowerCase().indexOf("content-length") === -1) { - if (typeof data.length !== 'undefined') { - headers += "\nContent-Length: " + data.length; - } else if (typeof data.byteLength !== 'undefined') { - headers += "\nContent-Length: " + data.byteLength; - } - } return new Array(headers, data); } @@ -284,7 +277,8 @@ async function processURL(socket, request_headers) { // error reading headers (no request_url provided) var errpage = doErrorPage(400); headers = errpage[0]; - data = errpage[1]; + data = errpage[1] + socket_session_data[socket.id].close_me = true; } // headers to object @@ -337,14 +331,26 @@ async function processURL(socket, request_headers) { headers_obj = moveObjectElement('wtv-encrypted', 'Connection', headers_obj); if (clen > 0) { console.log(" * Encrypting response to client ...") + var data_type = typeof (data); if (typeof (data) === 'string') { data = CryptoJS.enc.Utf8.parse(data); } + if (data.constructor === ArrayBuffer) { + data = CryptoJS.lib.WordArray.create(data); + } var enc_data = sec_session[socket.id].Encrypt(1,data); data = enc_data; } } + if (!headers_obj["Content-length"] && !headers_obj["Content-length"]) { + if (typeof data.length !== 'undefined') { + headers_obj['Content-Length'] = data.length; + } else if (typeof data.byteLength !== 'undefined') { + headers_obj['Content-Length'] = data.byteLength; + } + } + headers = ""; console.log(headers_obj); Object.keys(headers_obj).forEach(function (k) { @@ -624,13 +630,12 @@ async function handleSocket(socket) { socket.setTimeout(0); var phead = await processHeaders(this, socket_buffer[socket.id].toString(CryptoJS.enc.Hex)); processURL(this, phead); + if (socket_session_data[socket.id].close_me) socket.end(); socket_buffer[socket.id] = null; }); socket.on('error', (err) => { - console.log(" * Client disconnected unexpectedly"); - cleanupSocket(socket); - + socket.end(); }); socket.on('end', function () { diff --git a/hacktv_updsrv/package.json b/hacktv_updsrv/package.json index 621ec144..3be989a9 100644 --- a/hacktv_updsrv/package.json +++ b/hacktv_updsrv/package.json @@ -1,6 +1,6 @@ { "name": "hacktv_updsrv", - "version": "0.6.0", + "version": "0.6.1", "description": "hacktv_updsrv", "main": "app.js", "author": { diff --git a/hacktv_updsrv/services.json b/hacktv_updsrv/services.json index ca27d2a5..e2b3db09 100644 --- a/hacktv_updsrv/services.json +++ b/hacktv_updsrv/services.json @@ -37,6 +37,11 @@ "wtv-flashrom": { "port": 1618, "flags": "0x00000040" + }, + "wtv-music": { + "port": 1656, + "flags": "0x04", + "connections": 3 } } }