fix/optimize wtv-tricks, wtvchat

This commit is contained in:
zefie
2025-08-12 19:03:04 -04:00
parent d160a5138c
commit d5f41837c0
15 changed files with 87 additions and 71 deletions

View File

@@ -1,16 +1,17 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
if (wtvshared.shenanigans.checkShenanigan(wtvshared.shenanigans.shenanigans.ENABLE_TRICKS_URLACCESS)) {
// Allow URL access outside our trusted minisrv
if (request_headers.query.url) var url = request_headers.query.url;
else var url = "client:showalert?message=Please%20provide%20a%20%3Furl%3D%20with%20the%20url%20you%20would%20like%20to%20access.&buttonlabel1=Okay&buttonacction1=client:donothing"
let url;
if (request_headers.query.url) url = request_headers.query.url;
else url = "client:showalert?message=Please%20provide%20a%20%3Furl%3D%20with%20the%20url%20you%20would%20like%20to%20access.&buttonlabel1=Okay&buttonacction1=client:donothing"
headers = `300 OK
wtv-visit: ${url}
Location: ${url}
Content-type: text/html`
} else {
var err = wtvshared.doErrorPage(403, "Access Denied");
const err = wtvshared.doErrorPage(403, "Access Denied");
headers = err[0];
data = err[1];
}

View File

@@ -1,16 +1,16 @@
var minisrv_service_file = true;
var request_is_async = true;
const minisrv_service_file = true;
request_is_async = true;
function handleError(reason) {
var errpage = wtvshared.doErrorPage(400, reason);
const errpage = wtvshared.doErrorPage(400, reason);
sendToClient(socket, errpage[0], errpage[1]);
}
if (!request_headers.query.url && !request_headers.query.mediaPath) {
handleError('No URL provided');
} else {
var mediaURL = request_headers.query.url || request_headers.query.mediaPath;
var targetURL = 'wtv-author:/scrapbook-add?mediaPath=' + encodeURIComponent(mediaURL);
const mediaURL = request_headers.query.url || request_headers.query.mediaPath;
const targetURL = 'wtv-author:/scrapbook-add?mediaPath=' + encodeURIComponent(mediaURL);
sendToClient(socket, {'Status': 302, 'Location': targetURL, 'wtv-visit': targetURL}, '');
}

View File

@@ -1,5 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
headers = `200 OK
Connection: Keep-Alive
@@ -17,22 +16,22 @@ data = `<html>
<br>
<h1>${minisrv_config.config.service_name} Tricks</h1>`;
var start_time = parseInt(session_data.getTicketData("benchmark_starttime"));
const start_time = parseInt(session_data.getTicketData("benchmark_starttime"));
if (isNaN(start_time)) {
data += "Invalid data, please try your benchmark again";
} else {
var end_time = Math.floor(new Date().getTime());
let end_time = Math.floor(new Date().getTime());
if (!session_data.getTicketData("benchmark_endtime")) {
session_data.setTicketData("benchmark_endtime", end_time);
} else {
end_time = session_data.getTicketData("benchmark_endtime");
}
var download_time = end_time - start_time;
var image_filename = wtvshared.getServiceDep("/wtv-tricks/benchmark.jpg", true);
var image_size = fs.statSync(image_filename).size
var image_size_kb = parseFloat(image_size / 1024).toFixed(3);
var throughput = parseFloat((image_size / download_time) * 1024).toFixed(0);
var throughput_bps = parseInt(throughput * 8)
const download_time = end_time - start_time;
const image_filename = wtvshared.getServiceDep("/wtv-tricks/benchmark.jpg", true);
const image_size = fs.statSync(image_filename).size
const image_size_kb = parseFloat(image_size / 1024).toFixed(3);
const throughput = parseFloat((image_size / download_time) * 1024).toFixed(0);
const throughput_bps = parseInt(throughput * 8)
data += `
<table>
<tr>
@@ -58,11 +57,11 @@ if (isNaN(start_time)) {
<tr>
<td valign=top align=right><shadow>Start Time:</shadow>
<td width=10>
<td valign=top>${new Date(start_time).toISOString().replace('T', ' ').substr(0, 19)}
<td valign=top>${new Date(start_time).toISOString().replace('T', ' ').slice(0, 19)}
<tr>
<td valign=top align=right><shadow>End Time:</shadow>
<td width=10>
<td valign=top>${new Date(end_time).toISOString().replace('T', ' ').substr(0, 19)}
<td valign=top>${new Date(end_time).toISOString().replace('T', ' ').slice(0, 19)}
<tr>
<td valign=top align=right><shadow>Total Time:</shadow>
<td width=10>

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
headers = `200 OK
Connection: Keep-Alive
@@ -28,7 +28,7 @@ Content-type: text/html`
</BODY>
</HTML>`;
} else {
var start_time = Math.floor(new Date().getTime());
const start_time = Math.floor(new Date().getTime());
session_data.setTicketData("benchmark_starttime", start_time);
headers += "wtv-expire-all: wtv-tricks:/benchmark\nContent-type: image/jpg"
data = wtvshared.getServiceDep("/wtv-tricks/benchmark.jpg", false);

View File

@@ -1,11 +1,11 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
headers = `200 OK
wtv-expire-all: wtv-
wtv-expire-all: http
Content-type: text/html`
var visit_url = null;
let visit_url = null;
if (request_headers.Referer) visit_url = request_headers.Referer;
else if (request_headers.query.return_to) visit_url = request_headers.query.return_to;

View File

@@ -1,6 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
if (request_headers.query.machine && request_headers.query.port) {
headers = `200 OK

View File

@@ -1,11 +1,11 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
var num_per_line = 4
var legend_every = 6;
const num_per_line = 4
const legend_every = 6;
function getLegend() {
d = "<tr>\n";
for (var i = 0; i < num_per_line; i++) {
let d = "<tr>\n";
for (let i = 0; i < num_per_line; i++) {
d += "<td><b>Code</b>\n<td><b>Char</b>\n";
}
d += "<tr>\n";
@@ -30,7 +30,7 @@ data = `<html>
<table border=1>`;
for (var i = 0; i <= 255; i++) {
for (let i = 0; i <= 255; i++) {
if (i % num_per_line === 0) {
if (i % (num_per_line * legend_every) === 0) {
data += getLegend();

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
headers = `200 OK
wtv-noback-all: wtv-
@@ -9,7 +9,7 @@ wtv-service: reset
// HackTV Homepage is default
var url="file://Disk/Browser/Games/Games.html";
let url="file://Disk/Browser/Games/Games.html";
if (request_headers.query.url) {
url = request_headers.query.url;

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
headers = `300 OK
wtv-visit: wtv-home:/home

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
let client_caps = null;
@@ -71,6 +71,7 @@ const boardRev = (sysConfigHex & 0xf00) >> 8;
const boardRevB = (sysConfigHex & 0xf0) >> 4;
// determine box ASIC type
let chip;
switch (chipVersionStr >> 0x18) {
case 1:
chip = "FIDO1";
@@ -88,30 +89,37 @@ switch (chipVersionStr >> 0x18) {
// ========================= LC2 SYSCONFIG DECODE START =========================
// determine box video type
let video;
if ((sysConfigHex & 8) == 0) video = "NTSC";
else video = "PAL";
// determine box storage type
let storage;
if ((sysConfigHex & 4) == 0) storage = "disk";
else storage = "flash";
// determine box CPU endianness
let endianness;
if ((sysConfigHex & 0x80000) == 0) endianness = "little";
else endianness = "big";
// determine box CPU type
let cpu;
if ((sysConfigHex & 0x100000) == 0) cpu = 5230;
else cpu = 4640;
// determine box CPU clock multiplier
let cpuMult;
if ((sysConfigHex & 0x20000) == 0) cpuMult = 3;
else cpuMult = 2;
// determine smartcard 0 support
let sc0;
if ((sysConfigHex & 0x400000) == 0) sc0 = "supported";
else sc0 = "not supported";
//determine smartcard 1 support
let sc1;
if ((sysConfigHex & 0x200000) == 0) sc1 = "supported";
else sc1 = "not supported";
@@ -121,12 +129,13 @@ else sc1 = "not supported";
-Bruce Leak, Thursday, October 12, 1995 1:53:28 AM */
// determine box CPU output bufs
let outputBufs;
if ((sysConfigHex & 0x2000) == 0) outputBufs = 100;
else outputBufs = 50;
// determine box SGRAM speed
function getSGSpeed() {
let SGRAMand = sysConfigHex & 0xc00000;
const SGRAMand = sysConfigHex & 0xc00000;
if (SGRAMand == 0x400000) return 66;
else if (0x400000 < SGRAMand)
if (SGRAMand == 0x800000) return 77;
@@ -135,16 +144,18 @@ function getSGSpeed() {
}
// determine box audio chip type
let audio;
if ((sysConfigHex & 0xc0000) == 0xc0000) audio = "AKM4310/4309";
else audio = "Unknown";
// determine box audio clock source
let audioClk;
if ((sysConfigHex & 0x20000) == 0) audioClk = "SPOT";
else audioClk = "External";
// determine box video chip
function getVideoChip() {
let videoChipAnd = sysConfigHex & 0x600;
const videoChipAnd = sysConfigHex & 0x600;
if (videoChipAnd == 0x200) return "Bt851";
else if (videoChipAnd < 0x201 && videoChipAnd !== 0) return "Unknown";
@@ -153,14 +164,17 @@ function getVideoChip() {
}
// determine box video type
let videoB;
if ((sysConfigHex & 0x800) == 0) videoB = "PAL";
else videoB = "NTSC";
// determine box video clock source
let videoClk;
if ((sysConfigHex & 0x10000) == 0) videoClk = "External";
else videoClk = "SPOT";
// determine box board type
let boardTypeB;
switch (sysConfigHex & 0xc) {
case 8:
boardTypeB = "Trial";
@@ -173,18 +187,22 @@ switch (sysConfigHex & 0xc) {
}
// determine bank 0 type
let bank0Type;
if (sysConfigHex < 0) bank0Type = "Mask";
else bank0Type = "Flash";
// determine bank 0 mode
let bank0Mode;
if ((sysConfigHex & 0x40000000) == 0) bank0Mode = "Normal";
else bank0Mode = "PageMode";
// determine bank 1 type
let bank1Type;
if ((sysConfigHex & 0x8000000) == 0) bank1Type = "Flash";
else bank1Type = "Mask";
// determine bank 1 mode
let bank1Mode;
if ((sysConfigHex & 0x40000000) == 0) bank1Mode = "Normal";
else bank1Mode = "PageMode";

View File

@@ -1,11 +1,12 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
let redirect, message;
headers = `200 OK
Content-Type: text/html`;
if (session_data.getSessionData("registered")) {
var redirect = [10, "client:goback?"];
var message = "Error: Your box is already registered. If you would like to re-register, you must first unregister.";
redirect = [10, "client:goback?"];
message = "Error: Your box is already registered. If you would like to re-register, you must first unregister.";
} else if (request_headers.query.confirm_register) {
headers += `
wtv-noback-all: wtv-
@@ -13,8 +14,8 @@ wtv-expire-all: wtv-
wtv-relogin-url: wtv-1800:/preregister?relogin=true
wtv-reconnect-url: wtv-1800:/preregister?reconnect=true
wtv-boot-url: wtv-1800:/preregister?relogin=true`;
var redirect = [3, "client:relog?"];
var message = "You will now be be redirected to registration.<br><br>";
redirect = [3, "client:relog?"];
message = "You will now be be redirected to registration.<br><br>";
message += `<a href="${redirect[1]}">Click here if you are not automatically redirected.</a>`;
} else {
message = `Are you ready to register your box with ${minisrv_config.config.service_name}?

View File

@@ -1,7 +1,5 @@
var minisrv_service_file = true;
var notAdminAlert = new clientShowAlert({
const minisrv_service_file = true;
const notAdminAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "Sorry, you are not configured as an admin on this server.<br><br>If you are the server operator, please<br> see <strong>user_config.example.json</strong><br> for an example on how to configure yourself as an administrator.",
'buttonlabel1': "Ugh, fine.",
@@ -12,7 +10,7 @@ var notAdminAlert = new clientShowAlert({
headers = `200 OK
Content-Type: text/html`
tricks = [
const tricks = [
["wtv-tricks:/info", minisrv_config.config.service_name + " info"],
["wtv-cookie:list", "List Cookies"],
["wtv-cookie:reset", "Clear Cookies"],
@@ -45,7 +43,7 @@ data = `<html>
<table cellspacing=0 cellpadding=0><tr><td abswidth=10>&nbsp;<td colspan=3>
<table><tc><td>&nbsp;</td></tc><tc><td><table>`;
for (i = 0; i < tricks.length; i += 2) {
for (let i = 0; i < tricks.length; i += 2) {
data += `<tr>
<td colspan=3 height=6>
<tr>

View File

@@ -1,4 +1,5 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
let redirect, message;
headers = `200 OK
Content-Type: text/html`;
@@ -6,23 +7,23 @@ Content-Type: text/html`;
if (!session_data.getSessionData("registered")) {
headers += "\nwtv-noback-all: wtv-";
headers += "\nwtv-expire-all: wtv-";
var redirect = [5, "client:relogin?"];
var message = "Error: Your box is not registered. You are accessing " + minisrv_config.config.service_name + " in Guest Mode. There is nothing to delete!";
redirect = [5, "client:relogin?"];
message = "Error: Your box is not registered. You are accessing " + minisrv_config.config.service_name + " in Guest Mode. There is nothing to delete!";
} else if (session_data.user_id !== 0) {
headers += "\nwtv-noback-all: wtv-";
headers += "\nwtv-expire-all: wtv-";
var redirect = [5, "client:relogin?"];
var message = "Error: You must be the primary user to unregister this box.";
redirect = [5, "client:relogin?"];
message = "Error: You must be the primary user to unregister this box.";
} else if (request_headers.query.confirm_unregister) {
if (session_data.unregisterBox()) {
headers += "\nwtv-noback-all: wtv-";
headers += "\nwtv-expire-all: wtv-";
var redirect = [3, "client:relog?"];
var message = "Your account data has been successfully removed. You will now be be redirected to registration.<br><br>";
redirect = [3, "client:relog?"];
message = "Your account data has been successfully removed. You will now be be redirected to registration.<br><br>";
message += `<a href="${redirect[1]}">Click here if you are not automatically redirected.</a>`;
} else {
var redirect = [10, "client:goback?"];
var message = "There was an error deleting your account data. Please try again later. If the problem persists, please contact " + minisrv_config.config.service_owner + " to request manual deletion.";
redirect = [10, "client:goback?"];
message = "There was an error deleting your account data. Please try again later. If the problem persists, please contact " + minisrv_config.config.service_owner + " to request manual deletion.";
message += "SSID verifcation may be required to perform a manual deletion.<br><br>Returning from whence you came...<br><br>";
message += `<a href="${redirect[1]}">Click here if you are not automatically redirected.</a>`;
}

View File

@@ -1,8 +1,8 @@
var minisrv_service_file = true;
var request_is_async = true;
const minisrv_service_file = true;
request_is_async = true;
function handleError(reason) {
var errpage = wtvshared.doErrorPage(400, reason);
const errpage = wtvshared.doErrorPage(400, reason);
sendToClient(socket, errpage[0], errpage[1]);
}

View File

@@ -1,21 +1,21 @@
var minisrv_service_file = true;
const minisrv_service_file = true;
var urldata = request_headers.request_url.split(":");
let urldata = request_headers.request_url.split(":");
delete urldata[0];
urldata = urldata.join(":").substring(1);
urldata = urldata.join(":").slice(1);
console.log(urldata);
while (urldata.substring(0, 1) == "/") urldata = urldata.substring(1);
while (urldata.slice(0, 1) == "/") urldata = urldata.slice(1);
var server = urldata.split('/')[0];
var port = 6667;
let server = urldata.split('/')[0];
let port = 6667;
if (server.indexOf(":") > 0) {
port = server.split(":")[1];
server = server.split(":")[0];
}
channel = urldata.split('/')[1]
const channel = urldata.split('/')[1]
var dest_url = "wtv-chat:/MakeChatPage?host=" + server + "&port=" + port + "&channel=" + channel;
const dest_url = "wtv-chat:/MakeChatPage?host=" + server + "&port=" + port + "&channel=" + channel;
headers = `300 Moved
Location: ${dest_url}`