From fdd2f16f3bd70e76743e7894fbe7583c82b5d1b2 Mon Sep 17 00:00:00 2001 From: zefie Date: Mon, 16 Aug 2021 08:01:45 -0400 Subject: [PATCH] breaking change: doErrorPage moved to wtvshared.doErrorPage - but I fixed flashrom error handling.. - added a passthrough for old scripts --- .../ServiceVault/http_pc/get.js | 2 +- .../ServiceVault/wtv-1800/preregister.js | 6 +- .../ServiceVault/wtv-chat/MakeChatPage.js | 2 +- .../ServiceVault/wtv-cookie/add.js | 2 +- .../ServiceVault/wtv-cookie/get.js | 2 +- .../ServiceVault/wtv-cookie/list.js | 2 +- .../ServiceVault/wtv-cookie/reset.js | 2 +- .../ServiceVault/wtv-disk/sync.js | 6 +- .../ServiceVault/wtv-disk/userstore.js | 2 +- .../ServiceVault/wtv-flashrom/get-by-path.js | 2 +- .../ServiceVault/wtv-flashrom/get-lc2-page.js | 4 +- .../wtv-flashrom/initiate-lc2-download.js | 2 +- .../ServiceVault/wtv-flashrom/willie.js | 2 +- .../wtv-head-waiter/login-stage-two.js | 2 +- .../ServiceVault/wtv-register/BeMyGuest.js | 2 +- .../wtv-register/ValidateAccountInfo.js | 20 +++--- .../wtv-register/ValidateAgreement.js | 2 +- .../wtv-register/ValidateReviewAccountInfo.js | 4 +- .../ServiceVault/wtv-tricks/info.js | 2 +- zefie_wtvp_minisrv/WTVFlashrom.js | 40 +++-------- zefie_wtvp_minisrv/WTVShared.js | 31 ++++++++ zefie_wtvp_minisrv/app.js | 70 ++++++------------- 22 files changed, 96 insertions(+), 113 deletions(-) diff --git a/zefie_wtvp_minisrv/ServiceVault/http_pc/get.js b/zefie_wtvp_minisrv/ServiceVault/http_pc/get.js index 65bd2d4c..844beae0 100644 --- a/zefie_wtvp_minisrv/ServiceVault/http_pc/get.js +++ b/zefie_wtvp_minisrv/ServiceVault/http_pc/get.js @@ -33,7 +33,7 @@ if (request_headers.query.url) { } if (!headers) { - var errpage = doErrorPage(500) + var errpage = wtvshared.doErrorPage(500) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js index ffd68c3d..93ae204b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js @@ -35,7 +35,7 @@ if (socket.ssid) { ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(request_headers["wtv-incarnation"] || 1); } else { console.log(" * Something bad happened (we don't know the client ssid???)"); - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } @@ -179,7 +179,7 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) { request_is_async = true; fs.readFile(file_path, null, function (err, file_read_data) { if (err) { - var errmsg = doErrorPage(400); + var errmsg = wtvshared.doErrorPage(400); headers = errmsg[0]; file_read_data = errmsg[1] + "\n" + err.toString(); } @@ -187,7 +187,7 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) { }); } } else { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-chat/MakeChatPage.js b/zefie_wtvp_minisrv/ServiceVault/wtv-chat/MakeChatPage.js index 5bdb1ed8..bdecc0d2 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-chat/MakeChatPage.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-chat/MakeChatPage.js @@ -150,7 +150,7 @@ ${request_headers.query.channel} `; } else { - var errpage = doErrorPage("400 Chat requires host, port and channel arguments. Do not use the # on channels."); + var errpage = wtvshared.doErrorPage("400 Chat requires host, port and channel arguments. Do not use the # on channels."); headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/add.js b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/add.js index 2e592bbf..2c9df7f8 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/add.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/add.js @@ -11,7 +11,7 @@ if (socket.ssid) { } if (!headers) { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/get.js b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/get.js index 6c177a20..9ab5d993 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/get.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/get.js @@ -13,7 +13,7 @@ if (request_headers.post_data) { } if (!headers) { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/list.js b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/list.js index c511861b..7c2141bb 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/list.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/list.js @@ -10,7 +10,7 @@ if (socket.ssid) { } if (!headers) { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/reset.js b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/reset.js index 2244ed90..c0d6fd0d 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/reset.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-cookie/reset.js @@ -21,7 +21,7 @@ Redirecting shortly... Go Back } if (!headers) { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ 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 ba035998..c8ef1c13 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js @@ -298,20 +298,20 @@ if (request_headers['wtv-request-type'] == 'download') { headers = "200 OK\nContent-Type: wtv/download-list"; } catch (e) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; console.error(" # " + service_name+":/sync error", e); } } } else { - var errpage = doErrorPage(404, "The requested DiskMap does not exist."); + var errpage = wtvshared.doErrorPage(404, "The requested DiskMap does not exist."); headers = errpage[0]; data = errpage[1]; if (minisrv_config.config.debug_flags.debug) console.error(" # " + service_name +":/sync error", "could not find diskmap"); } } else { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; if (minisrv_config.config.debug_flags.debug) console.error(" # " + service_name + ":/sync error", "missing query arguments"); diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js index c0ed0273..be483345 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/userstore.js @@ -17,7 +17,7 @@ if (request_headers.post_data) { } if (!headers) { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file 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 eabb483a..5063b1c7 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-by-path.js @@ -30,7 +30,7 @@ if (request_headers.query.raw || bf0app_update) { headers += "Content-type: text/html" data = ''; } else { - var errpage = doErrorPage(404) + var errpage = wtvshared.doErrorPage(404) headers = errpage[0]; data = errpage[1]; } 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 62ee06b3..0882318b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/get-lc2-page.js @@ -4,7 +4,7 @@ var wtvflashrom; request_is_async = true; if (!request_headers.query.path) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { @@ -146,7 +146,7 @@ ${flashrom_info.message} `; } else { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/initiate-lc2-download.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/initiate-lc2-download.js index 0f69b193..557c32bf 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/initiate-lc2-download.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/initiate-lc2-download.js @@ -13,7 +13,7 @@ var romtype = ssid_sessions[socket.ssid].get("wtv-client-rom-type"); headers += "Content-type: text/html"; data = ''; } else { - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js index b13b17ea..b3a2fcee 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/willie.js @@ -35,7 +35,7 @@ const req = https.request(options, function (res) { res.on('error', function (e) { if (!minisrv_config.config.debug_flags.quiet) console.log(" * Upstream Ultra Willies HTTP Error:", e); - var errpage = doErrorPage(400) + var errpage = wtvshared.doErrorPage(400) headers = errpage[0]; data = errpage[1]; sendToClient(socket, headers, data); 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 54df129f..b2bda080 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 @@ -63,7 +63,7 @@ else { if (request_headers.query.skip_splash) var home_url = "wtv-home:/home?"; else var home_url = "wtv-home:/splash?"; } else if (!ssid_sessions[socket.ssid].getSessionData("registered")) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/BeMyGuest.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/BeMyGuest.js index d0ac71fa..75885f08 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/BeMyGuest.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/BeMyGuest.js @@ -22,7 +22,7 @@ wtv-reconnect-url: wtv-1800:/preregister?guest_login=true&reconnect=true wtv-boot-url: wtv-1800:/preregister?guest_login=true Location: client:relogin`; } else { - var errpage = doErrorPage(400, "Guest mode is not enabled on this service."); + var errpage = wtvshared.doErrorPage(400, "Guest mode is not enabled on this service."); headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js index 96afb568..26dff84d 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAccountInfo.js @@ -1,22 +1,22 @@ var minisrv_service_file = true; if (!request_headers.query.registering) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { const WTVRegister = require("./WTVRegister.js") var wtvr = new WTVRegister(minisrv_config, SessionStore); var errpage = null; - if (!request_headers.query.registering) errpage = doErrorPage(400); - else if (!request_headers.query.subscriber_name) errpage = doErrorPage(400, "Please enter your name. This can be your real name, or your well-known online alias."); - else if (!request_headers.query.subscriber_username) errpage = doErrorPage(400, "Please enter a username."); - else if (request_headers.query.subscriber_username.length < 5) errpage = doErrorPage(400, "Please choose a username with 5 or more characters."); - else if (request_headers.query.subscriber_username.length > 16) errpage = doErrorPage(400, "Please choose a username with 16 or less characters."); - else if (!wtvr.checkUsernameSanity(request_headers.query.subscriber_username)) errpage = doErrorPage(400, "The username you have chosen contains invalid characters. Please choose a username with only letters, numbers, _ or -. Also, please be sure your username begins with a letter."); - else if (!wtvr.checkUsernameAvailable(request_headers.query.subscriber_username, ssid_sessions)) errpage = doErrorPage(400, "The username you have selected is already in use. Please select another username."); - else if (!request_headers.query.subscriber_contact) errpage = doErrorPage(400, "Please enter your contact information."); - else if (request_headers.query.subscriber_contact_method == "") errpage = doErrorPage(400, "Please select the type of contact information you provided."); + if (!request_headers.query.registering) errpage = wtvshared.doErrorPage(400); + else if (!request_headers.query.subscriber_name) errpage = wtvshared.doErrorPage(400, "Please enter your name. This can be your real name, or your well-known online alias."); + else if (!request_headers.query.subscriber_username) errpage = wtvshared.doErrorPage(400, "Please enter a username."); + else if (request_headers.query.subscriber_username.length < 5) errpage = wtvshared.doErrorPage(400, "Please choose a username with 5 or more characters."); + else if (request_headers.query.subscriber_username.length > 16) errpage = wtvshared.doErrorPage(400, "Please choose a username with 16 or less characters."); + else if (!wtvr.checkUsernameSanity(request_headers.query.subscriber_username)) errpage = wtvshared.doErrorPage(400, "The username you have chosen contains invalid characters. Please choose a username with only letters, numbers, _ or -. Also, please be sure your username begins with a letter."); + else if (!wtvr.checkUsernameAvailable(request_headers.query.subscriber_username, ssid_sessions)) errpage = wtvshared.doErrorPage(400, "The username you have selected is already in use. Please select another username."); + else if (!request_headers.query.subscriber_contact) errpage = wtvshared.doErrorPage(400, "Please enter your contact information."); + else if (request_headers.query.subscriber_contact_method == "") errpage = wtvshared.doErrorPage(400, "Please select the type of contact information you provided."); if (errpage) { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js index 9d6f5b2c..f7498504 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateAgreement.js @@ -1,7 +1,7 @@ var minisrv_service_file = true; if (!request_headers.query.registering) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateReviewAccountInfo.js b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateReviewAccountInfo.js index 75521cfe..4e3f904b 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateReviewAccountInfo.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-register/ValidateReviewAccountInfo.js @@ -9,7 +9,7 @@ if (!request_headers.query.registering || !ssid_sessions[socket.ssid] || !socket.ssid ) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { @@ -20,7 +20,7 @@ if (!request_headers.query.registering || ssid_sessions[socket.ssid].setSessionData("subscriber_userid", '1' + Math.floor(Math.random() * 1000000000000000000)); ssid_sessions[socket.ssid].setSessionData("registered", true); if (!ssid_sessions[socket.ssid].storeSessionData(true)) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } else { diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-tricks/info.js b/zefie_wtvp_minisrv/ServiceVault/wtv-tricks/info.js index ba68beda..3e72a105 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-tricks/info.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-tricks/info.js @@ -168,7 +168,7 @@ ${wtv_system_sysconfig_str} `; } else { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/WTVFlashrom.js b/zefie_wtvp_minisrv/WTVFlashrom.js index cf8b6c9e..75fec66b 100644 --- a/zefie_wtvp_minisrv/WTVFlashrom.js +++ b/zefie_wtvp_minisrv/WTVFlashrom.js @@ -8,43 +8,20 @@ class WTVFlashrom { no_debug = false; service_name = ""; minisrv_config = []; + wtvshared = null; constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, no_debug = false) { + var { WTVShared } = require('./WTVShared.js'); this.service_vaults = service_vaults; this.service_name = service_name; this.use_zefie_server = use_zefie_server; this.bf0app_update = bf0app_update; this.no_debug = no_debug; this.minisrv_config = minisrv_config; + this.wtvshared = new WTVShared(minisrv_config); } - - doErrorPage(code, data = null) { - var headers = null; - switch (code) { - case 404: - if (data === null) data = "The service could not find the requested page."; - headers = "404 " + data + "\r\n"; - headers += "Content-Type: text/html\r\n"; - break; - case 400: - if (data === null) data = "HackTV ran into a technical problem."; - headers = "400 " + data + "\r\n"; - headers += "Content-Type: text/html\r\n"; - break; - default: - // what we send when we did not detect a wtv-url. - // e.g. when a pc browser connects - headers = "HTTP/1.1 200 OK\r\n"; - headers += "Content-Type: text/html\r\n"; - break; - } - console.error("doErrorPage Called:", code, data); - return new Array(headers, data); - } - - async doLocalFlashROM(flashrom_file_path, request_path, callback, info_only = false) { // use local flashrom files; console.log(info_only); @@ -52,7 +29,7 @@ class WTVFlashrom { try { this.fs.readFile(flashrom_file_path, null, function (err, data) { if (err) { - errpage = doErrorPage(400) + errpage = wtvshared.doErrorPage(400) var headers = errpage[0]; data = err.toString(); callback(data, headers); @@ -65,7 +42,7 @@ class WTVFlashrom { } }); } catch (e) { - var errpage = doErrorPage(404, "The service could not find the requested ROM.") + var errpage = wtvshared.doErrorPage(404, "The service could not find the requested ROM.") var headers = errpage[0]; var data = errpage[1]; callback(data, headers); @@ -193,15 +170,16 @@ class WTVFlashrom { } else if (res.statusCode == 206) { var data = self.getFlashromInfo(Buffer.from(data_hex, 'hex'), request_path); } else if (res.statusCode == 404) { - var errpage = doErrorPage(404, "The service could not find the requested ROM on zefie's server.") + console.log(request_path); + var errpage = self.wtvshared.doErrorPage(404, "The service could not find the requested ROM on zefie's server.") headers = errpage[0]; var data = errpage[1]; } else { - var errpage = doErrorPage(400) + var errpage = self.wtvshared.doErrorPage(400) headers = errpage[0]; var data = errpage[1]; } - if (res.statusCode != 206) { + if (!headers) { self.sendToClient(data, request_path, callback); } else { callback(data, headers); diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/WTVShared.js index 618ced78..d22de387 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/WTVShared.js @@ -230,6 +230,37 @@ class WTVShared { }); } + doErrorPage(code, data = null, pc_mode = false) { + var headers = null; + switch (code) { + case 404: + if (data === null) data = "The service could not find the requested page."; + if (pc_mode) headers = "404 Not Found\n"; + else headers = code + " " + data + "\n"; + headers += "Content-Type: text/html\n"; + break; + case 400: + case 500: + if (data === null) data = "HackTV ran into a technical problem."; + if (pc_mode) headers = "500 Internal Server Error\n"; + else headers = code + " " + data + "\n"; + headers += "Content-Type: text/html\n"; + break; + case 401: + if (data === null) data = "Access Denied."; + if (pc_mode) headers = "401 Access Denied\n"; + else headers = code + " " + data + "\n"; + headers += "Content-Type: text/html\n"; + break; + default: + headers = code + " " + data + "\n"; + headers += "Content-Type: text/html\n"; + break; + } + console.error(" * doErrorPage Called:", code, data); + return new Array(headers, data); + } + /** * Strips bad things from paths * @param {string} base Base path diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 3e133222..d8093c1e 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -71,35 +71,9 @@ function getServiceString(service, overrides = {}) { } } +// passthrough for old scripts function doErrorPage(code, data = null, pc_mode = false) { - var headers = null; - switch (code) { - case 404: - if (data === null) data = "The service could not find the requested page."; - if (pc_mode) headers = "404 Not Found\n"; - else headers = code + " "+ data + "\n"; - headers += "Content-Type: text/html\n"; - break; - case 400: - case 500: - if (data === null) data = "HackTV ran into a technical problem."; - if (pc_mode) headers = "500 Internal Server Error\n"; - else headers = code + " " + data + "\n"; - headers += "Content-Type: text/html\n"; - break; - case 401: - if (data === null) data = "Access Denied."; - if (pc_mode) headers = "401 Access Denied\n"; - else headers = code + " " + data + "\n"; - headers += "Content-Type: text/html\n"; - break; - default: - headers = code + " " + data + "\n"; - headers += "Content-Type: text/html\n"; - break; - } - console.error(" * doErrorPage Called:", code, data); - return new Array(headers, data); + return wtvshared.doErrorPage(code, data, pc_mode); } async function sendRawFile(socket, path) { @@ -132,7 +106,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne if (minisrv_catchall) { if (service_path_request_file == minisrv_catchall) { request_is_async = true; - var errpage = doErrorPage(401, "Access Denied"); + var errpage = wtvshared.doErrorPage(401, "Access Denied"); sendToClient(socket, errpage[0], errpage[1]); return; } @@ -159,13 +133,13 @@ async function processPath(socket, service_vault_file_path, request_headers = ne wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { if (!status) { if (line.match(/minisrv\_service\_file.*true/i)) { - var errpage = doErrorPage(403, "Access Denied"); + var errpage = wtvshared.doErrorPage(403, "Access Denied"); sendToClient(socket, errpage[0], errpage[1]); } else { sendRawFile(socket, service_vault_file_path); } } else { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); sendToClient(socket, errpage[0], errpage[1]); } }); @@ -175,17 +149,17 @@ async function processPath(socket, service_vault_file_path, request_headers = ne wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { if (!status) { if (line.match(/^#!minisrv/i)) { - var errpage = doErrorPage(403, "Access Denied"); + var errpage = wtvshared.doErrorPage(403, "Access Denied"); sendToClient(socket, errpage[0], errpage[1]); } else { sendRawFile(socket, service_vault_file_path); } } else { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); sendToClient(socket, errpage[0], errpage[1]); } }); - } + }er } else { // not a potential service file, so save to send sendRawFile(socket, service_vault_file_path); @@ -277,7 +251,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne // either `request_is_async`, or `headers` and `data` MUST be defined by this point! }); } catch (e) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1] + "

The interpreter said:
" + e.toString() + "
"; console.error(" * Scripting error:",e); @@ -285,12 +259,12 @@ async function processPath(socket, service_vault_file_path, request_headers = ne if (!request_is_async) { if (!service_vault_found) { console.error(" * Could not find a Service Vault for " + service_name + ":/" + service_path.replace(service_name + path.sep, "")); - var errpage = doErrorPage(404, null, socket.minisrv_pc_mode); + var errpage = wtvshared.doErrorPage(404, null, socket.minisrv_pc_mode); headers = errpage[0]; data = errpage[1]; } if (headers == null && !request_is_async) { - var errpage = doErrorPage(400, null, socket.minisrv_pc_mode); + var errpage = wtvshared.doErrorPage(400, null, socket.minisrv_pc_mode); headers = errpage[0]; data = errpage[1]; console.error(" * Scripting or Data error: Headers were not defined. (headers,data) as follows:") @@ -378,7 +352,7 @@ async function processURL(socket, request_headers) { } else { // minimal pc mode to send error socket.minisrv_pc_mode = true; - var errpage = doErrorPage(401, "PC services are disabled on this server", socket.minisrv_pc_mode); + var errpage = wtvshared.doErrorPage(401, "PC services are disabled on this server", socket.minisrv_pc_mode); headers = errpage[0]; data = errpage[1] socket_sessions[socket.id].close_me = true; @@ -413,7 +387,7 @@ async function processURL(socket, request_headers) { doHTTPProxy(socket, request_headers); } else { // error reading headers (no request_url provided) - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1] socket_sessions[socket.id].close_me = true; @@ -514,11 +488,11 @@ async function doHTTPProxy(socket, request_headers) { }); }).on('error', function (err) { var errpage, headers, data = null; - if (err.code == "ENOTFOUND") errpage = doErrorPage(400, `The publisher ${request_data.host} is unknown.`); - else if (err.message.indexOf("HostUnreachable") > 0) errpage = doErrorPage(400, `The publisher ${request_data.host} could not be reached.`); + if (err.code == "ENOTFOUND") errpage = wtvshared.doErrorPage(400, `The publisher ${request_data.host} is unknown.`); + else if (err.message.indexOf("HostUnreachable") > 0) errpage = wtvshared.doErrorPage(400, `The publisher ${request_data.host} could not be reached.`); else { console.log(" * Unhandled Proxy Request Error:", err); - errpage = doErrorPage(400); + errpage = wtvshared.doErrorPage(400); } headers = errpage[0]; data = errpage[1]; @@ -896,7 +870,7 @@ function checkSecurity(socket) { if (blacklist) console.log(" * Request from SSID", wtvshared.filterSSID(ssid), "(" + socket.remoteAddr + "), but that SSID is in the blacklist, rejecting."); else console.log(" * Request from SSID", wtvshared.filterSSID(socket.ssid), "(" + socket.remoteAddress + "), but that SSID is not in the whitelist, rejecting."); - var errpage = doErrorPage(401, "Access to this service is denied."); + var errpage = wtvshared.doErrorPage(401, "Access to this service is denied."); out = errpage; } @@ -1002,7 +976,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq var enc_data = CryptoJS.enc.Hex.parse(data_hex.substring(header_length * 2)); if (enc_data.sigBytes > 0) { if (!socket_sessions[socket.id].wtvsec) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; headers += "wtv-visit: client:relog\n"; data = errpage[1]; @@ -1137,7 +1111,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq 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); + var errpage = wtvshared.doErrorPage(400); headers = errpage[0]; data = errpage[1]; sendToClient(socket, headers, data); @@ -1198,7 +1172,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq processURL(socket, headers); } else if (socket_sessions[socket.id].post_data.length > (socket_sessions[socket.id].post_data_length * 2)) { // got too much data ? ... should not ever reach this code (section 2) - var errpage = doErrorPage(400, "Received too much data in POST request
Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length) + " (2)"; + var errpage = wtvshared.doErrorPage(400, "Received too much data in POST request
Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length) + " (2)"; headers = errpage[0]; data = errpage[1]; sendToClient(socket, headers, data); @@ -1280,7 +1254,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if (socket_sessions[socket.id].expecting_post_data) delete socket_sessions[socket.id].expecting_post_data; socket.setTimeout(minisrv_config.config.socket_timeout * 1000); // got too much data ? ... should not ever reach this code - var errpage = doErrorPage(400, "Received too much data in POST request
Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length); + var errpage = wtvshared.doErrorPage(400, "Received too much data in POST request
Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length); headers = errpage[0]; data = errpage[1]; sendToClient(socket, headers, data); @@ -1298,7 +1272,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq var enc_data = CryptoJS.enc.Hex.parse(data_hex); if (enc_data.sigBytes > 0) { if (!socket_sessions[socket.id].wtvsec) { - var errpage = doErrorPage(400); + var errpage = wtvshared.doErrorPage(400); var headers = errpage[0]; headers += "wtv-visit: client:relog\n"; data = errpage[1];