breaking change: doErrorPage moved to wtvshared.doErrorPage

- but I fixed flashrom error handling..
- added a passthrough for old scripts
This commit is contained in:
zefie
2021-08-16 08:01:45 -04:00
parent 1967c076a9
commit fdd2f16f3b
22 changed files with 96 additions and 113 deletions

View File

@@ -33,7 +33,7 @@ if (request_headers.query.url) {
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(500) var errpage = wtvshared.doErrorPage(500)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -35,7 +35,7 @@ if (socket.ssid) {
ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(request_headers["wtv-incarnation"] || 1); ssid_sessions[socket.ssid].data_store.wtvsec_login.set_incarnation(request_headers["wtv-incarnation"] || 1);
} else { } else {
console.log(" * Something bad happened (we don't know the client ssid???)"); console.log(" * Something bad happened (we don't know the client ssid???)");
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }
@@ -179,7 +179,7 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) {
request_is_async = true; request_is_async = true;
fs.readFile(file_path, null, function (err, file_read_data) { fs.readFile(file_path, null, function (err, file_read_data) {
if (err) { if (err) {
var errmsg = doErrorPage(400); var errmsg = wtvshared.doErrorPage(400);
headers = errmsg[0]; headers = errmsg[0];
file_read_data = errmsg[1] + "\n" + err.toString(); file_read_data = errmsg[1] + "\n" + err.toString();
} }
@@ -187,7 +187,7 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) {
}); });
} }
} else { } else {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -150,7 +150,7 @@ ${request_headers.query.channel}
</body> </body>
</html>`; </html>`;
} else { } 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]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -11,7 +11,7 @@ if (socket.ssid) {
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -13,7 +13,7 @@ if (request_headers.post_data) {
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -10,7 +10,7 @@ if (socket.ssid) {
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -21,7 +21,7 @@ Redirecting shortly... <a href="client:goback">Go Back</a>
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -298,20 +298,20 @@ if (request_headers['wtv-request-type'] == 'download') {
headers = "200 OK\nContent-Type: wtv/download-list"; headers = "200 OK\nContent-Type: wtv/download-list";
} catch (e) { } catch (e) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
console.error(" # " + service_name+":/sync error", e); console.error(" # " + service_name+":/sync error", e);
} }
} }
} else { } 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]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
if (minisrv_config.config.debug_flags.debug) 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 { } else {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
if (minisrv_config.config.debug_flags.debug) 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");

View File

@@ -17,7 +17,7 @@ if (request_headers.post_data) {
} }
if (!headers) { if (!headers) {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -30,7 +30,7 @@ if (request_headers.query.raw || bf0app_update) {
headers += "Content-type: text/html" headers += "Content-type: text/html"
data = ''; data = '';
} else { } else {
var errpage = doErrorPage(404) var errpage = wtvshared.doErrorPage(404)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -4,7 +4,7 @@ var wtvflashrom;
request_is_async = true; request_is_async = true;
if (!request_headers.query.path) { if (!request_headers.query.path) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {
@@ -146,7 +146,7 @@ ${flashrom_info.message}
</body> </body>
</html>`; </html>`;
} else { } else {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -13,7 +13,7 @@ var romtype = ssid_sessions[socket.ssid].get("wtv-client-rom-type");
headers += "Content-type: text/html"; headers += "Content-type: text/html";
data = ''; data = '';
} else { } else {
var errpage = doErrorPage(400) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -35,7 +35,7 @@ const req = https.request(options, function (res) {
res.on('error', function (e) { res.on('error', function (e) {
if (!minisrv_config.config.debug_flags.quiet) 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) var errpage = wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
sendToClient(socket, headers, data); sendToClient(socket, headers, data);

View File

@@ -63,7 +63,7 @@ else {
if (request_headers.query.skip_splash) var home_url = "wtv-home:/home?"; if (request_headers.query.skip_splash) var home_url = "wtv-home:/home?";
else var home_url = "wtv-home:/splash?"; else var home_url = "wtv-home:/splash?";
} else if (!ssid_sessions[socket.ssid].getSessionData("registered")) { } else if (!ssid_sessions[socket.ssid].getSessionData("registered")) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {

View File

@@ -22,7 +22,7 @@ wtv-reconnect-url: wtv-1800:/preregister?guest_login=true&reconnect=true
wtv-boot-url: wtv-1800:/preregister?guest_login=true wtv-boot-url: wtv-1800:/preregister?guest_login=true
Location: client:relogin`; Location: client:relogin`;
} else { } 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]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -1,22 +1,22 @@
var minisrv_service_file = true; var minisrv_service_file = true;
if (!request_headers.query.registering) { if (!request_headers.query.registering) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {
const WTVRegister = require("./WTVRegister.js") const WTVRegister = require("./WTVRegister.js")
var wtvr = new WTVRegister(minisrv_config, SessionStore); var wtvr = new WTVRegister(minisrv_config, SessionStore);
var errpage = null; var errpage = null;
if (!request_headers.query.registering) errpage = doErrorPage(400); if (!request_headers.query.registering) errpage = wtvshared.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_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 = doErrorPage(400, "Please enter a username."); 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 = doErrorPage(400, "Please choose a username with 5 or more characters."); 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 = doErrorPage(400, "Please choose a username with 16 or less 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 = doErrorPage(400, "The username you have chosen contains invalid characters. Please choose a username with only <b>letters</b>, <b>numbers</b>, <b>_</b> or <b>-</b>. Also, please be sure your username begins with a letter."); 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 <b>letters</b>, <b>numbers</b>, <b>_</b> or <b>-</b>. 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 (!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 = doErrorPage(400, "Please enter your contact information."); 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 = doErrorPage(400, "Please select the type of contact information you provided."); else if (request_headers.query.subscriber_contact_method == "") errpage = wtvshared.doErrorPage(400, "Please select the type of contact information you provided.");
if (errpage) { if (errpage) {

View File

@@ -1,7 +1,7 @@
var minisrv_service_file = true; var minisrv_service_file = true;
if (!request_headers.query.registering) { if (!request_headers.query.registering) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {

View File

@@ -9,7 +9,7 @@ if (!request_headers.query.registering ||
!ssid_sessions[socket.ssid] || !ssid_sessions[socket.ssid] ||
!socket.ssid !socket.ssid
) { ) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } 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("subscriber_userid", '1' + Math.floor(Math.random() * 1000000000000000000));
ssid_sessions[socket.ssid].setSessionData("registered", true); ssid_sessions[socket.ssid].setSessionData("registered", true);
if (!ssid_sessions[socket.ssid].storeSessionData(true)) { if (!ssid_sessions[socket.ssid].storeSessionData(true)) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {

View File

@@ -168,7 +168,7 @@ ${wtv_system_sysconfig_str}
</body> </html>`; </body> </html>`;
} else { } else {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }

View File

@@ -8,43 +8,20 @@ class WTVFlashrom {
no_debug = false; no_debug = false;
service_name = ""; service_name = "";
minisrv_config = []; minisrv_config = [];
wtvshared = null;
constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, no_debug = false) { constructor(minisrv_config, service_vaults, service_name, use_zefie_server = true, bf0app_update = false, no_debug = false) {
var { WTVShared } = require('./WTVShared.js');
this.service_vaults = service_vaults; this.service_vaults = service_vaults;
this.service_name = service_name; this.service_name = service_name;
this.use_zefie_server = use_zefie_server; this.use_zefie_server = use_zefie_server;
this.bf0app_update = bf0app_update; this.bf0app_update = bf0app_update;
this.no_debug = no_debug; this.no_debug = no_debug;
this.minisrv_config = minisrv_config; 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) { async doLocalFlashROM(flashrom_file_path, request_path, callback, info_only = false) {
// use local flashrom files; // use local flashrom files;
console.log(info_only); console.log(info_only);
@@ -52,7 +29,7 @@ class WTVFlashrom {
try { try {
this.fs.readFile(flashrom_file_path, null, function (err, data) { this.fs.readFile(flashrom_file_path, null, function (err, data) {
if (err) { if (err) {
errpage = doErrorPage(400) errpage = wtvshared.doErrorPage(400)
var headers = errpage[0]; var headers = errpage[0];
data = err.toString(); data = err.toString();
callback(data, headers); callback(data, headers);
@@ -65,7 +42,7 @@ class WTVFlashrom {
} }
}); });
} catch (e) { } 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 headers = errpage[0];
var data = errpage[1]; var data = errpage[1];
callback(data, headers); callback(data, headers);
@@ -193,15 +170,16 @@ class WTVFlashrom {
} else if (res.statusCode == 206) { } else if (res.statusCode == 206) {
var data = self.getFlashromInfo(Buffer.from(data_hex, 'hex'), request_path); var data = self.getFlashromInfo(Buffer.from(data_hex, 'hex'), request_path);
} else if (res.statusCode == 404) { } 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]; headers = errpage[0];
var data = errpage[1]; var data = errpage[1];
} else { } else {
var errpage = doErrorPage(400) var errpage = self.wtvshared.doErrorPage(400)
headers = errpage[0]; headers = errpage[0];
var data = errpage[1]; var data = errpage[1];
} }
if (res.statusCode != 206) { if (!headers) {
self.sendToClient(data, request_path, callback); self.sendToClient(data, request_path, callback);
} else { } else {
callback(data, headers); callback(data, headers);

View File

@@ -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 * Strips bad things from paths
* @param {string} base Base path * @param {string} base Base path

View File

@@ -71,35 +71,9 @@ function getServiceString(service, overrides = {}) {
} }
} }
// passthrough for old scripts
function doErrorPage(code, data = null, pc_mode = false) { function doErrorPage(code, data = null, pc_mode = false) {
var headers = null; return wtvshared.doErrorPage(code, data, pc_mode);
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);
} }
async function sendRawFile(socket, path) { async function sendRawFile(socket, path) {
@@ -132,7 +106,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne
if (minisrv_catchall) { if (minisrv_catchall) {
if (service_path_request_file == minisrv_catchall) { if (service_path_request_file == minisrv_catchall) {
request_is_async = true; request_is_async = true;
var errpage = doErrorPage(401, "Access Denied"); var errpage = wtvshared.doErrorPage(401, "Access Denied");
sendToClient(socket, errpage[0], errpage[1]); sendToClient(socket, errpage[0], errpage[1]);
return; 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) { wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) {
if (!status) { if (!status) {
if (line.match(/minisrv\_service\_file.*true/i)) { 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]); sendToClient(socket, errpage[0], errpage[1]);
} else { } else {
sendRawFile(socket, service_vault_file_path); sendRawFile(socket, service_vault_file_path);
} }
} else { } else {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
sendToClient(socket, errpage[0], errpage[1]); 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) { wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) {
if (!status) { if (!status) {
if (line.match(/^#!minisrv/i)) { if (line.match(/^#!minisrv/i)) {
var errpage = doErrorPage(403, "Access Denied"); var errpage = wtvshared.doErrorPage(403, "Access Denied");
sendToClient(socket, errpage[0], errpage[1]); sendToClient(socket, errpage[0], errpage[1]);
} else { } else {
sendRawFile(socket, service_vault_file_path); sendRawFile(socket, service_vault_file_path);
} }
} else { } else {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
sendToClient(socket, errpage[0], errpage[1]); sendToClient(socket, errpage[0], errpage[1]);
} }
}); });
} }er
} else { } else {
// not a potential service file, so save to send // not a potential service file, so save to send
sendRawFile(socket, service_vault_file_path); 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! // either `request_is_async`, or `headers` and `data` MUST be defined by this point!
}); });
} catch (e) { } catch (e) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1] + "<br><br>The interpreter said:<br><pre>" + e.toString() + "</pre>"; data = errpage[1] + "<br><br>The interpreter said:<br><pre>" + e.toString() + "</pre>";
console.error(" * Scripting error:",e); 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 (!request_is_async) {
if (!service_vault_found) { if (!service_vault_found) {
console.error(" * Could not find a Service Vault for " + service_name + ":/" + service_path.replace(service_name + path.sep, "")); 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]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }
if (headers == null && !request_is_async) { 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]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
console.error(" * Scripting or Data error: Headers were not defined. (headers,data) as follows:") 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 { } else {
// minimal pc mode to send error // minimal pc mode to send error
socket.minisrv_pc_mode = true; 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]; headers = errpage[0];
data = errpage[1] data = errpage[1]
socket_sessions[socket.id].close_me = true; socket_sessions[socket.id].close_me = true;
@@ -413,7 +387,7 @@ async function processURL(socket, request_headers) {
doHTTPProxy(socket, request_headers); doHTTPProxy(socket, request_headers);
} else { } else {
// error reading headers (no request_url provided) // error reading headers (no request_url provided)
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1] data = errpage[1]
socket_sessions[socket.id].close_me = true; socket_sessions[socket.id].close_me = true;
@@ -514,11 +488,11 @@ async function doHTTPProxy(socket, request_headers) {
}); });
}).on('error', function (err) { }).on('error', function (err) {
var errpage, headers, data = null; var errpage, headers, data = null;
if (err.code == "ENOTFOUND") errpage = doErrorPage(400, `The publisher ${request_data.host} is unknown.`); if (err.code == "ENOTFOUND") errpage = wtvshared.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.`); else if (err.message.indexOf("HostUnreachable") > 0) errpage = wtvshared.doErrorPage(400, `The publisher ${request_data.host} could not be reached.`);
else { else {
console.log(" * Unhandled Proxy Request Error:", err); console.log(" * Unhandled Proxy Request Error:", err);
errpage = doErrorPage(400); errpage = wtvshared.doErrorPage(400);
} }
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; 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."); 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."); 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; 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)); var enc_data = CryptoJS.enc.Hex.parse(data_hex.substring(header_length * 2));
if (enc_data.sigBytes > 0) { if (enc_data.sigBytes > 0) {
if (!socket_sessions[socket.id].wtvsec) { if (!socket_sessions[socket.id].wtvsec) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
headers += "wtv-visit: client:relog\n"; headers += "wtv-visit: client:relog\n";
data = errpage[1]; 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 (minisrv_config.config.debug_flags.show_headers) console.log(secure_headers);
if (!secure_headers.request) { if (!secure_headers.request) {
socket_sessions[socket.id].secure = false; socket_sessions[socket.id].secure = false;
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
sendToClient(socket, headers, data); sendToClient(socket, headers, data);
@@ -1198,7 +1172,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq
processURL(socket, headers); processURL(socket, headers);
} else if (socket_sessions[socket.id].post_data.length > (socket_sessions[socket.id].post_data_length * 2)) { } 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) // got too much data ? ... should not ever reach this code (section 2)
var errpage = doErrorPage(400, "Received too much data in POST request<br>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<br>Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length) + " (2)";
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
sendToClient(socket, headers, data); 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; if (socket_sessions[socket.id].expecting_post_data) delete socket_sessions[socket.id].expecting_post_data;
socket.setTimeout(minisrv_config.config.socket_timeout * 1000); socket.setTimeout(minisrv_config.config.socket_timeout * 1000);
// got too much data ? ... should not ever reach this code // got too much data ? ... should not ever reach this code
var errpage = doErrorPage(400, "Received too much data in POST request<br>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<br>Got " + (socket_sessions[socket.id].post_data.length / 2) + ", expected " + socket_sessions[socket.id].post_data_length);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
sendToClient(socket, headers, data); 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); var enc_data = CryptoJS.enc.Hex.parse(data_hex);
if (enc_data.sigBytes > 0) { if (enc_data.sigBytes > 0) {
if (!socket_sessions[socket.id].wtvsec) { if (!socket_sessions[socket.id].wtvsec) {
var errpage = doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
var headers = errpage[0]; var headers = errpage[0];
headers += "wtv-visit: client:relog\n"; headers += "wtv-visit: client:relog\n";
data = errpage[1]; data = errpage[1];