- BREAKING CHANGE from v0.9.35 and eariler: Move accounts into subfolder of SessionStore
 - viewergen and viewer updates from @GraspYonOx
 - new homepage theme inspired by @GraspYonOx
 - connect setup also mostly by @GraspYonOx
 - numerous bug fixes
 - nntp-server-zefie is now on npmjs
 - implement proper nodejs debugging
   - will start to phase out using console.log for actual debugging
   - existing "debug" (verbose) messages will stay as is
   - future code debugging will use debug() to debug WIP, therefore not showing to most users if it is accidently left in
This commit is contained in:
zefie
2022-10-16 18:58:30 -04:00
parent b89e0e932c
commit c2a3081afd
91 changed files with 1653 additions and 1694 deletions

View File

@@ -18,7 +18,8 @@ var logos = {
}
var disksets = {
0: null
0: null,
98: "HackTV_min.zip"
}
var viewer_stock_md5s = {
@@ -26,7 +27,7 @@ var viewer_stock_md5s = {
"WebTVIntel--1.1.exe": "ce7b6d1734b5e3d1cbd5f068609223d1",
"WebTVIntel--2.5.exe": "4c5754bb8b69739b6f414c2d159051da",
"WebTVIntel--1.0-HE.exe": "391f303fd70034e69d3a50583de72c89",
"WebTVIntel--2.5-HE.exe": "f0207865693a45ba76b9057dcb8ea672"
"WebTVIntel--2.5-HE.exe": "64edab977ec19a663c5842176bec306a"
}
@@ -334,6 +335,8 @@ if (request_headers.query.viewer &&
client_ssid = generateSSID();
var viewer_file = viewers[request_headers.query.viewer];
var needs_hacktv_mini = (viewer_file === "WebTVIntel--2.5-HE.exe") ? true : false
console.log('needs_hacktv_mini', needs_hacktv_mini)
if (!viewer_file) {
errpage = wtvshared.doErrorPage("500", null, socket.minisrv_pc_mode)
headers = errpage[0];
@@ -378,7 +381,7 @@ Content-Disposition: attachment; filename="${viewer_file.replace(".exe", ".zip")
var zip = new AdmZip();
zip.addZipComment("Viewer SSID: " + client_ssid);
zip.addFile(viewer_file, patched_file);
zip.addFile(viewer_file.replace("--", "-" + client_ssid + "-"), patched_file);
if (!request_headers.query.viewer_only) {
var romset_zip = new AdmZip(viewergen_resource_dir + viewer_file.replace(".exe", "").replace("WebTVIntel", "AppData") + ".zip");
var zipEntries = romset_zip.getEntries();
@@ -396,8 +399,10 @@ Content-Disposition: attachment; filename="${viewer_file.replace(".exe", ".zip")
zip.addFile(zipEntry.entryName, zipEntry.getData());
}
});
if (request_headers.query.diskset) {
var diskset_file = disksets[parseInt(request_headers.query.diskset) || 0];
if (request_headers.query.diskset || needs_hacktv_mini) {
var diskset_file = 0;
if (needs_hacktv_mini) diskset_file = disksets[98];
else diskset_file = disksets[parseInt(request_headers.query.diskset) || 0];
if (diskset_file) {
var diskset_zip = new AdmZip(viewergen_resource_dir + diskset_file);
var zipEntries = diskset_zip.getEntries();

View File

@@ -2,7 +2,8 @@ var minisrv_service_file = true;
var gourl = "wtv-head-waiter:/login?";
if (socket.ssid) {
if (session_data) {
if (session_data.loadSessionData() == true) {
console.log(" * Loaded session data from disk for", wtvshared.filterSSID(socket.ssid))
session_data.setSessionData("registered", (session_data.getSessionData("registered") == true) ? true : false);
@@ -58,10 +59,12 @@ if (session_data.data_store.wtvsec_login) {
var file_path = null;
var bf0app_update = false;
var romtype = session_data.get("wtv-client-rom-type");
var send_tellyscript = (minisrv_config.services[service_name].send_tellyscripts && !request_headers.query.relogin && !request_headers.query.guest_login);
var bootrom = parseInt(session_data.get("wtv-client-bootrom-version"));
var send_tellyscript = (minisrv_config.services[service_name].send_tellyscripts && !request_headers.query.relogin && !request_headers.query.guest_login && !bootrom !== 0);
var wtv_script_id = parseInt(session_data.get("wtv-script-id"));
var bootrom = session_data.get("wtv-client-bootrom-version");
var wtv_script_mod = parseInt(session_data.get("wtv-script-mod"));
if ((request_headers.query.reconnect || request_headers.query.relogin) && wtv_script_id != 0) send_tellyscript = false;
if (wtv_script_id !== 0 && wtv_script_mod !== 0) send_tellyscript = false;
if (send_tellyscript) {
if (minisrv_config.services[service_name].send_tellyscript_ssid_whitelist) {
var send_telly_to_ssid = (minisrv_config.services[service_name].send_tellyscript_ssid_whitelist.findIndex(element => element == socket.ssid) != -1)

View File

@@ -7,7 +7,6 @@ var auth = wtva.isAuthorized();
function generateFormField(type, confvar, options = null) {
if (confvar.indexOf('.') > 0) {
var confvar_split = confvar.split('.');
console.log(confvar_split)
// not operater error resistant, be mindful if you modify this page
if (user_config.config[confvar_split[0]])
var confvar_value = user_config.config[confvar_split[0]][confvar_split[1]] || minisrv_config.config[confvar_split[0]][confvar_split[1]]
@@ -125,9 +124,9 @@ contact the server operator (eg. email, Discord, Twitter, etc...)
<tr><td absheight=60 valign=top>
<font size=-1><b>service_name</b><br>The name of the service (eg. WebTV)
<tr><td absheight=90 valign=top>
<font size=-1><b>service_logo</b><br>The logo for the service. Filename only. Must exist in the SharedROMCache service vault.
<tr><td absheight=70 valign=top>
<font size=-1><b>service_splash_logo</b><br>The splash page logo for the service. Absolute path. Can be file:// or wtv url.
<font size=-1><b>service_logo</b><br>The logo for the service. Absolute URL, or file name in the Shared ROMCache.
<tr><td absheight=90 valign=top>
<font size=-1><b>service_splash_logo</b><br>The splash page logo for the service. Absolute URL, or file name in the Shared ROMCache.
<tr><td absheight=60 valign=top>
<font size=-1><b>show_detailed_splash</b><br>Show service information and client connection speed on the splash page.
<tr><td absheight=60 valign=top>
@@ -163,7 +162,7 @@ When disabled, accounts will not be able to use passwords, if they had a passwor
The size of the field on the login password page
</table>
<TD WIDTH=15>
<TD WIDTH=198 absheight=1620 VALIGN=top ALIGN=left colspan=2>
<TD WIDTH=198 absheight=1640 VALIGN=top ALIGN=left colspan=2>
<form action="wtv-admin:/validate-operator-tweaks">
<input type=hidden name=autosubmit value=true autosubmit=onleave>
<table cellspacing=0 cellpadding=5>
@@ -182,13 +181,13 @@ ${generateFormField('input', 'service_owner_contact')}
<td absheight=90 valign=top>
${generateFormField('input', 'service_owner_contact_method')}
<tr>
<td absheight=60 valign=top>
<td absheight=55 valign=top>
${generateFormField('input', 'service_name')}
<tr>
<td absheight=90 valign=top>
<td absheight=85 valign=top>
${generateFormField('input', 'service_logo')}
<tr>
<td absheight=70 valign=top>
<td absheight=90 valign=top>
${generateFormField('input', 'service_splash_logo')}
<tr>
<td absheight=60 valign=top>
@@ -197,7 +196,7 @@ ${generateFormField('checkbox', 'show_detailed_splash')}
<td absheight=60 valign=top>
${generateFormField('checkbox', 'hide_ssid_in_logs')}
<tr>
<td absheight=70 valign=top>
<td absheight=80 valign=top>
${generateFormField('checkbox', 'filter_passwords_in_logs')}
<tr>
<td absheight=50 valign=top>

View File

@@ -18,9 +18,18 @@ if (auth === true) {
Object.keys(request_headers.query).forEach((k) => {
if (k === "autosubmit") return;
var v = request_headers.query[k];
if (!isNaN(parseInt(v))) v = parseInt(v);
// enable_multi_query may send ["false", "on"] for checkboxes due to webtvism
if (isArray(v)) v = v[(v.length - 1)];
// convert numbers back to int before writing to config
if (!isNaN(parseInt(v))) v = parseInt(v);
// convert string back to boolean before writing to config
if (v === "on" || v === "true" || v === "false") v = wtvshared.parseBool(v);
if (k.indexOf("-") > 0) {
// handle sub-config items
var s = k.split("-");
if (!user_config.config[s[0]]) user_config.config[s[0]] = {}
user_config.config[s[0]][s[1]] = v;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -14,17 +14,17 @@ if (foldername)
{
if (folder_array.length < minisrv_config.services[service_name].max_folders)
{
//if (session_data.favstore.checkFolderName(foldername) == true)
//{
if (session_data.favstore.checkFolderName(foldername) == true)
{
session_data.favstore.createFolder(foldername);
headers = `300 OK
Connection: Keep-Alive
Content-Type: text/html
Location: wtv-favorite:/favorite
wtv-expire-all: wtv-favorite:`
//} else {
// headers = `400 That folder name is not valid. Choose a different name and try again.`
//}
} else {
headers = `400 That folder name is not valid. Choose a different name and try again.`
}
} else {
headers = `400 You can only have ${minisrv_config.services[service_name].max_folders} folders at one time. Delete some folders and try again.`
}

View File

@@ -26,30 +26,28 @@ data = `<html><head>
<title>
Favorite folders
</title>
</head><body fontsize="large" vspace="0" hspace="0" vlink="189cd6" text="44cc55" link="189cd6" bgcolor="191919"><display ${(minisrv_config.services[service_name].max_folders <= 14) ? "noscroll" : ""}>
<display ${(minisrv_config.services[service_name].max_folders <= 14) ? "noscroll" : ""}>
</head><body fontsize="large" vspace="0" hspace="0" vlink="189cd6" text="44cc55" link="189cd6" bgcolor="191919">
<sidebar width="109" height="384">
<table cellspacing="0" cellpadding="0" bgcolor="284a52">
<tbody><tr><td absheight="196" valign="top">
<tr><td absheight="196" valign="top">
<table absheight="196" cellspacing="0" cellpadding="0">
<tbody><tr>
<tr>
<td width="100%" valign="top" height="50%">
<table cellspacing="0" cellpadding="0">
<tbody><tr>
<tr>
<td colspan="3" absheight="1" width="100%">
</td></tr><tr>
<td abswidth="6">
</td><td absheight="79" width="100%" align="center">
<table href="wtv-home:/home" absheight="79" width="100%" cellspacing="0" cellpadding="0">
<tbody><tr>
<tr>
<td width="100%" align="center">
<img src="wtv-home:/ROMCache/WebTVLogoJewel.gif" width="87" height="67">
</td></tr></tbody></table>
</td></tr></table>
</td><td abswidth="5">
</td></tr><tr><td colspan="3" absheight="2" width="100%" bgcolor="1f3136">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
@@ -57,98 +55,99 @@ Favorite folders
</td></tr><tr><td colspan="3" absheight="2" width="100%" bgcolor="436f79">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1"> </td></tr><tr><td absheight="32" colspan="3" width="100%">
<table cellspacing="0" cellpadding="0">
<tbody><tr><td abswidth="5" absheight="26">
<tr><td abswidth="5" absheight="26">
</td><td width="100%">
<table href="wtv-favorite:/serve-add-folder-page?favorite_folder_name=Personal" width="100%" cellspacing="0" cellpadding="0">
<tbody><tr><td>
<tr><td>
<table cellspacing="0" cellpadding="0">
<tbody><tr><td><shadow><font size="-1" color="E7CE4A">
<tr><td><shadow><font size="-1" color="E7CE4A">
Add folder&nbsp;&nbsp;
</font></shadow></td></tr></tbody></table>
</td></tr></tbody></table>
</font></shadow></td></tr></table>
</td></tr></table>
</td><td abswidth="5">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="1f3136">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr><tr><td absheight="1">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="436f79">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
</td></tr></table>
</td></tr><tr><td absheight="32" colspan="3" width="100%">
<table cellspacing="0" cellpadding="0">
<tbody><tr><td abswidth="5" absheight="26">
<tr><td abswidth="5" absheight="26">
</td><td width="100%">
<table href="wtv-favorite:/serve-discard-folders?favorite_folder_name=Personal" width="100%" cellspacing="0" cellpadding="0">
<tbody><tr><td>
<tr><td>
<table cellspacing="0" cellpadding="0">
<tbody><tr><td><shadow><font size="-1" color="E7CE4A">
<tr><td><shadow><font size="-1" color="E7CE4A">
Remove&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font></shadow></td></tr></tbody></table>
</td></tr></tbody></table>
</font></shadow></td></tr></table>
</td></tr></table>
</td><td abswidth="5">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="1f3136">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr><tr><td absheight="1">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="436f79">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
</td></tr></table>
</td></tr><tr><td absheight="32" colspan="3" width="100%">
<table cellspacing="0" cellpadding="0">
<tbody><tr><td abswidth="5" absheight="26">
<tr><td abswidth="5" absheight="26">
</td><td width="100%">
<table href="wtv-home:/throwerror" width="100%" cellspacing="0" cellpadding="0">
<tbody><tr><td>
<tr><td>
<table cellspacing="0" cellpadding="0">
<tbody><tr><td><shadow><font size="-1" color="E7CE4A">
<tr><td><shadow><font size="-1" color="E7CE4A">
Help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font></shadow></td></tr></tbody></table>
</td></tr></tbody></table>
</font></shadow></td></tr></table>
</td></tr></table>
</td><td abswidth="5">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="1f3136">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr><tr><td absheight="1">
</td></tr><tr><td colspan="3" absheight="2" width="104" bgcolor="436f79">
<img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></table>
</td></tr></table>
</td></tr></table>
</td><td abswidth="5" background="ROMCache/Shadow.gif"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr><tr><td absheight="188" valign="top">
<table absheight="188" cellspacing="0" cellpadding="0">
<tbody><tr><td width="100%"><img src="wtv-home:/ROMCache/Spacer.gif" width="100%" height="1">
<tr><td width="100%"><img src="wtv-home:/ROMCache/Spacer.gif" width="100%" height="1">
</td><td valign="bottom" align="right"><img src="ROMCache/FavoritesBanner.gif" width="50" height="188">
</td></tr></tbody></table>
</td></tr></table>
</td><td abswidth="5" background="ROMCache/Shadow.gif"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
</td></tr></table>
</sidebar>
<table width="451" cellspacing="0" cellpadding="0" bgcolor="2b2b2b">
<tbody><tr>
<tr>
<td width="4" height="16"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr><tr>
<td width="16"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td><td><table cellspacing="0" cellpadding="0">
<tbody><tr><td align="left">
<tr><td align="left">
<shadow><blackface><font color="e7ce4a">
Favorite folders
for ${session_data.getSessionData("subscriber_username") || "You"}
</font><blackface><shadow>
</shadow></blackface></blackface></shadow></td></tr></tbody></table>
</shadow></blackface></blackface></shadow></td></tr></table>
</td></tr><tr>
<td width="4" height="14"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
</td></tr></table>
<table cellspacing="0" cellpadding="0">
<tbody><tr><td valign="top" align="left">
<tr><td valign="top" align="left">
<table width="225" cellspacing="0" cellpadding="0">
<tbody><tr><td width="225" valign="middle" height="42" background="ROMCache/LeftTop.gif" align="center">
<tr><td width="225" valign="middle" height="42" background="ROMCache/LeftTop.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="40" height="20">
<tr><td width="40" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
<a href="wtv-favorite:/serve-browser?favorite_folder_name=${folder_array[0]}" selected="">
<font size="-1">
<limittext value="${folder_array[0]}" width="140"></limittext></font></a><font size="-1">
</font>
</td><td width="20">
</td></tr></tbody></table>`
</td></tr></table>`
var kval = 0;
// process evens
Object.keys(folder_array).forEach(function (k) {
@@ -158,14 +157,14 @@ for ${session_data.getSessionData("subscriber_username") || "You"}
// Left Middle
data += `</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/LeftMiddle.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="40" height="20">
<tr><td width="40" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
<a href="wtv-favorite:/serve-browser?favorite_folder_name=${folder_array[k]}">
<font size="-1">
<limittext value="${folder_array[k]}" width="140"></limittext></font></a><font size="-1">
</font>
</td><td width="20">
</td></tr></tbody></table>`;
</td></tr></table>`;
kval = k;
}
});
@@ -175,10 +174,10 @@ for ${session_data.getSessionData("subscriber_username") || "You"}
if (folder_array.length % 2 == 0) {
data += `</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/LeftBottom.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="40" height="20">
<tr><td width="40" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
</td><td width="20">
</td></tr></tbody></table>`;
</td></tr></table>`;
}
}
@@ -186,40 +185,40 @@ for ${session_data.getSessionData("subscriber_username") || "You"}
if (folder_array.length == 1) {
// no folder 2
data += `<tr><td><table cellspacing="0" cellpadding="0">
<tbody><tr><td width="6" height="12"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
<tr><td width="6" height="12"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td><td width="20">
</td></tr></tbody></table>
</tr><td></td></tr></tbody></table>
</td></tr></table>
</tr><td></td></tr></table>
</td><td valign="top" align="left">
<table width="225" cellspacing="0" cellpadding="0">
<tbody><tr><td absheight="20" bgcolor="2b2b2b">
<tr><td absheight="20" bgcolor="2b2b2b">
</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/RightTopEdgeOnly.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="5" height="20">
<tr><td width="5" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
</font>
</td><td width="20">
</td></tr></tbody></table>`
</td></tr></table>`
} else {
// process folder 2 (id 1)
data += `<tr><td><table cellspacing="0" cellpadding="0">
<tbody><tr><td width="6" height="12"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
<tr><td width="6" height="12"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td><td width="20">
</td></tr></tbody></table>
</tr><td></td></tr></tbody></table>
</td></tr></table>
</tr><td></td></tr></table>
</td><td valign="top" align="left">
<table width="225" cellspacing="0" cellpadding="0">
<tbody><tr><td absheight="21" bgcolor="2b2b2b">
<tr><td absheight="21" bgcolor="2b2b2b">
</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/RightTop.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="5" height="20">
<tr><td width="5" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
<a href="wtv-favorite:/serve-browser?favorite_folder_name=${folder_array[1]}">
<font size="-1">
<limittext value="${folder_array[1]}" width="140"></limittext></font></a><font size="-1">
</font>
</td><td width="20">
</td></tr></tbody></table>`;
</td></tr></table>`;
}
// process odds
@@ -230,14 +229,14 @@ for ${session_data.getSessionData("subscriber_username") || "You"}
// Right Middle
data += `</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/RightMiddle.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="5" height="20">
<tr><td width="5" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
<a href="wtv-favorite:/serve-browser?favorite_folder_name=${folder_array[k]}">
<font size="-1">
<limittext value="${folder_array[k]}" width="140"></limittext></font></a><font size="-1">
</font>
</td><td width="20">
</td></tr></tbody></table>`;
</td></tr></table>`;
}
});
@@ -246,20 +245,19 @@ for ${session_data.getSessionData("subscriber_username") || "You"}
if (folder_array.length % 2 != 0) {
data += `</td></tr><tr><td width="225" valign="middle" height="42" background="ROMCache/RightBottom.gif" align="center">
<table width="50%" cellspacing="0" cellpadding="0">
<tbody><tr><td width="5" height="20">
<tr><td width="5" height="20">
</td><td maxlines="1" width="140" height="20" align="center">
</td><td width="20">
</td></tr></tbody></table>`;
</td></tr></table>`;
}
}
data += `
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></table>
</td></tr></table>
<table cellspacing="0" cellpadding="0">
<tbody><tr><td width="451" height="2" background="ROMCache/FoldersCoverBorder.gif"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></tbody></table>
<tr><td width="451" height="2" background="ROMCache/FoldersCoverBorder.gif"><img src="wtv-home:/ROMCache/Spacer.gif" width="1" height="1">
</td></tr></table>
</display></body></html>

View File

@@ -1,5 +1,6 @@
var minisrv_service_file = true;
request_is_async = true;
var request_is_async = true;
var bf0app_update = false;
var request_path = request_headers.request_url.replace(service_name + ":/", "");

View File

@@ -1,6 +1,5 @@
var minisrv_service_file = true;
const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true;
// this build can be local or on zefie's server

View File

@@ -1,6 +1,5 @@
var minisrv_service_file = true;
const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true;
var bf0app_update = false;

View File

@@ -1,7 +1,5 @@
var minisrv_service_file = true;
const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
var wtvflashrom;
request_is_async = true;
if (!request_headers.query.path) {
@@ -13,15 +11,23 @@ if (!request_headers.query.path) {
var request_path = request_headers.query.path;
// read flashrom header info into array using WTVFlashrom class
wtvflashrom.getFlashromMeta(request_path, function (data) {
processLC2DownloadPage(request_headers.query.path, data, (request_headers.query.numparts ? request_headers.query.numparts : null));
wtvflashrom.getFlashromMeta(request_path, function (data, headers) {
processLC2DownloadPage(data, headers, (request_headers.query.numparts ? request_headers.query.numparts : null));
});
}
async function processLC2DownloadPage(path, flashrom_info, numparts = null) {
async function processLC2DownloadPage(flashrom_info, headers, numparts = null) {
if (typeof flashrom_info === 'string') {
// zefie_flashrom_server error
data = flashrom_info;
headers += "\nminisrv-no-mail-count: true";
headers += "\nwtv-expire-all: wtv-flashrom:/get-lc2-page?";
headers += "\nwtv-expire-all: wtv-flashrom:/content";
sendToClient(socket, headers, data);
return false;
}
if (numparts != null) flashrom_info.part_count = parseInt(numparts);
if (!flashrom_info.part_count) flashrom_info.part_count = parseInt(flashrom_info.message.substring(flashrom_info.message.length - 4).replace(/\D/g, ''));
console.log(flashrom_info);
if (parseInt(flashrom_info.part_number) >= 0 && flashrom_info.rompath && flashrom_info.next_rompath) {
if (!flashrom_info.message && flashrom_info.is_bootrom) {
flashrom_info.message = "BootRom Part " + (flashrom_info.part_number + 1) + " of " + flashrom_info.part_count;
@@ -31,7 +37,8 @@ async function processLC2DownloadPage(path, flashrom_info, numparts = null) {
}
headers = `200 OK
Content-type: text/html`
Content-type: text/html
minisrv-no-mail-count: true`
data = `<html>
<head>
@@ -97,16 +104,10 @@ data += `
<upgradeblock width=250 height=15
nexturl="${flashrom_info.next_rompath}"
errorurl="${service_name}:/lc2-download-failed?"
blockurl="${flashrom_info.rompath}"`;
data += `
blockurl="${flashrom_info.rompath}"
lastblock="${flashrom_info.is_last_part}"
curblock="` + (flashrom_info.part_number + 1) + `"
`;
if (flashrom_info.part_count) {
data += `totalblocks="${flashrom_info.part_count}"`;
}
data += `>
curblock="${(flashrom_info.part_number + 1)}"${(flashrom_info.part_count) ? `
totalblocks="${flashrom_info.part_count}">` : `>`}
<font size="-1" color="#D6DFD0">
<br>
<img src="${service_name}:/ROMCache/Spacer.gif" width=2 height=10><br>
@@ -150,6 +151,9 @@ ${flashrom_info.message}
} else {
var errpage = wtvshared.doErrorPage(400)
headers = errpage[0];
headers += "\nminisrv-no-mail-count: true";
headers += "\nwtv-expire-all: wtv-flashrom:/get-lc2-page?";
headers += "\nwtv-expire-all: wtv-flashrom:/content";
data = errpage[1];
}
sendToClient(socket, headers, data);

View File

@@ -10,6 +10,7 @@ var romtype = session_data.get("wtv-client-rom-type");
if (request_headers.query.numparts) url += "&numparts=" + request_headers.query.numparts;
}
headers = "300 OK\n";
headers += "minisrv-no-mail-count: true\n";
headers += "wtv-visit: " + url + "\n";
headers += "Location: " + url + "\n";
headers += "Content-type: text/html";

View File

@@ -1,7 +1,8 @@
var minisrv_service_file = true;
headers = `200 OK
Content-type: text/html`
Content-type: text/html
minisrv-no-mail-count: true`
data = `<html>

View File

@@ -1,6 +1,5 @@
var minisrv_service_file = true;
const WTVFlashrom = require(classPath + "/WTVFlashrom.js");
request_is_async = true;
// this build can be local or on zefie's server

View File

@@ -86,7 +86,7 @@ minisrv-no-mail-count: true
Content-Type: text/html`;
if (client_challenge_response) {
headers += `
wtv-encrypted: true`;
wtv-encrypted: ${(request_headers['wtv-encrypted']) ? wtvshared.parseBool(request_headers['wtv-encrypted']) : true}`;
if (wtvsec_login) session_data.data_store.wtvsec_login.update_ticket = true;
}
if (limitedLoginRegistered && session_data.getUserPasswordEnabled()) gourl = "wtv-head-waiter:/password?";

View File

@@ -1,17 +1,19 @@
var minisrv_service_file = true;
var gourl = null;
var bootrom = parseInt(session_data.get("wtv-client-bootrom-version"));
if (!session_data.isRegistered() && (!request_headers.query.guest_login || !minisrv_config.config.allow_guests)) gourl = "wtv-register:/splash?";
var home_url = "wtv-home:/home?";
if (gourl) {
headers = `200 OK
wtv-open-isp-disabled: false
`;
headers = "200 OK\n";
if (bootrom !== 0) headers += "wtv-open-isp-disabled: false\n";
if (!session_data.isRegistered() && (!request_headers.query.guest_login || !minisrv_config.config.allow_guests)) {
// fake logged in for reg
session_data.setUserLoggedIn(true);
headers += `wtv-encrypted: true
headers += `wtv-encrypted: ${(request_headers['wtv-encrypted']) ? wtvshared.parseBool(request_headers['wtv-encrypted']) : true}
${getServiceString('wtv-register')}
${getServiceString('wtv-head-waiter')}
${getServiceString('wtv-star')}
@@ -91,13 +93,16 @@ wtv-client-date: `+ strftime("%a, %d %b %Y %H:%M:%S", new Date(new Date().toUTCS
wtv-country: US
wtv-language-header: en-US,en
wtv-noback-all: wtv-
wtv-visit: client:closeallpanels
wtv-expire-all: client:closeallpanels
wtv-transition-override: off
wtv-smartcard-inserted-message: Contacting service
wtv-ssl-timeout: 240
wtv-login-timeout: 7200
`;
if (bootrom !== 0) {
headers += `wtv-visit: client:closeallpanels
wtv-expire-all: client:closeallpanels
`;
}
if (!limitedLogin && !limitedLoginRegistered) {
session_data.assignMailStore();
headers += getServiceString('all', { "exceptions": ["wtv-register"] });
@@ -175,11 +180,11 @@ wtv-inactive-timeout: 1440
wtv-show-time-enabled: true
wtv-allow-dsc: true
wtv-tourist-enabled: true
wtv-open-isp-disabled: false
wtv-offline-mail-enable: false
wtv-demo-mode: 0
wtv-wink-deferrer-retries: 3
wtv-name-server: 8.8.8.8`;
if (bootrom !== 0) { headers += "\nwtv-open-isp-disabled: false" }
}
}
if (!request_headers.query.reconnect) headers += "\nwtv-visit: " + gourl;

View File

@@ -9,7 +9,8 @@ if (request_headers.query.relogin) gourl += "relogin=true";
else if (request_headers.query.reconnect) gourl += "reconnect=true";
else gourl += "initial_login=true"
if (request_headers.query.guest_login) {
var bootrom = parseInt(session_data.get("wtv-client-bootrom-version"));
if (request_headers.query.guest_login || bootrom === 0) {
if (gourl.substr(-1) != "?") gourl += "&";
gourl += "guest_login=true";
if (request_headers.query.skip_splash) gourl += "&skip_splash=true";

View File

@@ -1,392 +1,302 @@
var minisrv_service_file = true;
if (request_headers.query.url) {
headers = `300 OK
Location: ${request_headers.query.url}`;
} else {
headers = `200 OK
headers =`200 OK
Connection: Keep-Alive
wtv-expire-all: wtv-home:/splash
wtv-expire-all: wtv-flashrom:
Content-type: text/html`
var cryptstatus = (wtv_encrypted ? "Encrypted" : "Not Encrypted")
var comp_type = wtvmime.shouldWeCompress(session_data, 'text/html');
var compstatus = "uncompressed";
switch (comp_type) {
case 1:
compstatus = "wtv-lzpf";
break;
case 2:
compstatus = "gzip (level 9)";
break;
}
var cryptstatus = (wtv_encrypted ? "Encrypted" : "Not Encrypted")
var comp_type = wtvmime.shouldWeCompress(socket.ssid,'text/html');
var compstatus = "uncompressed";
switch (comp_type) {
case 1:
compstatus = "wtv-lzpf";
break;
case 2:
compstatus = "gzip (level 9)";
break;
}
var unread_mailcount = session_data.mailstore.countUnreadMessages(0)
var mailbox_gif_num = 0; // no messages
if (unread_mailcount > 0) {
if (unread_mailcount == 1) mailbox_gif_num = 1;
else mailbox_gif_num = 2;
}
var wtv_system_sysconfig = session_data.get("wtv-system-sysconfig");
var wtv_client_bootrom_version = session_data.get("wtv-client-bootrom-version");
var wtv_system_chipversion_str = session_data.get("wtv-system-chipversion");
var notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "This feature is not available.",
'buttonlabel1': "Okay",
'buttonaction1': "client:donothing",
'noback': true,
}).getURL();
data = `<HTML>
<HEAD>
var 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.",
'buttonaction1': "client:donothing",
'noback': true,
}).getURL();
<TITLE>Home for ${session_data.getSessionData("subscriber_username") || "minisrv"}</TITLE>
<DISPLAY noscroll fontsize="medium">
</HEAD>
var ownMinisrv = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "To run your own minisrv, please visit the following link on your PC:<br><br><strong>https://zef.pw/minisrv</strong>",
'buttonlabel1': "Okay",
'buttonaction1': "client:donothing",
'noback': true,
}).getURL();
<body background="wtv-home:/images/BackgroundGradient_dark.gif" text="44cc55" link="36d5ff" vlink="36d5ff" hspace=0 vspace=0 >
var supportZefieAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "If you would like to support zefie or minisrv, please visit the following link on your PC:<br><br><font size=-1><strong>https://zef.pw/helpminisrv</strong></font>",
'buttonlabel1': "Okay",
'buttonaction1': "client:donothing",
'noback': true,
}).getURL();
<sidebar width=138>
<table cellspacing=0 cellpadding=0 bgcolor="202020" gradcolor=080808>
<!-- BEGIN LOGO SPAN -->
<tr>
<td width=138 absheight=112 valign=top align=center>
<img src="file://rom/Images/Spacer.gif" width=1 height=9><br>
data =`\0<html>
<head>
<display hspace=0 vspace=0 fontsize=small noscroll showwhencomplete>
<title>
Home for ${session_data.getSessionData("subscriber_username") || "minisrv"}
</title>
</head>
<body bgcolor="#3C2F47" link=#BBAEC8 text="ffffff" vlink=AA9DB7>
<table border=0 cellspacing=0 cellpadding=0 width="100%" height="60" >
<tr>
<td>
<td align="left"><img src="images/proto3/HomeTopLeftEdge.gif"></td>
<td valign="top">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td colspan=4 valign="top"><img src="images/proto3/HomeTopEdge.gif">
</tr>
<tr><td height=5 colspan=4>
</tr>
<tr><td></TD>
</tr>
<tr><td height=3 colspan=4>
</tr>
<tr>
<a HREF="client:showservices">
<img src="file://rom/Images/Spacer.gif" width=1 height=2>
<img src="${minisrv_config.config.service_logo}"" width=127 height=98>
</A>
<td align="left">
<font color=#EEEEEE>&nbsp;<b>WebTV URL, FILE, and CLIENT Access:</b></font>
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td width="380">
<form name="urlaccess">
&nbsp;<input type="text" name="visitsite" value="wtv-" border="1" bgcolor="#BBAEC8" text="#423852" cursor="#423852" align="center" width="314" executeurl autoactivate>
<input type="submit" value="Go" width=20>
</form>
</td>
</tr>
</table>
<!-- BEGIN SEPARATOR -->
<tr>
<td absheight=5>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=138 absheight=2 valign=middle align=center bgcolor="000000">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
<tr>
<td abswidth=138 absheight=1 valign=top align=left>
<tr>
<td abswidth=138 absheight=2 valign=top align=left bgcolor="181818">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
</table>
<!-- END LOGO SPAN -->
<td>
<td width=5>
<!-- BEGIN SPAN -->
<tr>
<td absheight=25>
<table cellspacing=0 cellpadding=0>
<tr>
<td height=2>
<tr>
<td abswidth=7>
<td abswidth=125>
<table cellspacing=0 cellpadding=0 href="client:relogin">
<tr>
<td>
<table cellspacing=0 cellpadding=0>
<tr>
<td>
<shadow><font size=3 color=e7ce4a>Login</font></shadow>
</table>
</table>
<td abswidth=6>
</table>
</tr>
</table>
</td>
</tr>
</table>
<table background="images/proto3/HomeTaskBar.gif" bgcolor="#9486A1" border=0 width="" height="25">
<tr>
<td abswidth=1><spacer type=block height=3 width=1>
<td abswidth=50 bgcolor="#3C2F47" href="wtv-mail:/listmail" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Mail</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=86 bgcolor="#3C2F47" href="wtv-favorite:/favorite" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Favorites</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=70 bgcolor="#3C2F47" href="wtv-setup:/sound" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Music</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=74 bgcolor="#3C2F47" href="http://frogfind.com" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Search</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=60 bgcolor="#3C2F47" href="wtv-flashrom:/willie" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>ROMs</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=86 bgcolor="#3C2F47" href="wtv-setup:/setup" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Settings</b></font>
<td abswidth=2><img src="images/proto3/HomeTaskBarDividers.gif">
<td abswidth=50 bgcolor="#3C2F47" href="wtv-guide:/help?topic=Index&subtopic=Glossary" align="center"><spacer type=block height=3 width=100%><font color="#EEEEEE"><b>Help</b></font>
</table>
<!-- BEGIN SEPARATOR -->
<tr>
<td absheight=5>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=138 absheight=2 valign=middle align=center bgcolor="000000">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
<tr>
<td abswidth=138 absheight=1 valign=top align=left>
<tr>
<td abswidth=138 absheight=2 valign=top align=left bgcolor="181818">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
</table>
<!-- END SPAN -->
<!-- BEGIN SPAN -->
<tr>
<td absheight=25>
<table cellspacing=0 cellpadding=0>
<tr>
<td height=2>
<tr>
<td abswidth=7>
<td abswidth=125>
<table cellspacing=0 cellpadding=0 href="wtv-setup:/setup">
<tr>
<td>
<table cellspacing=0 cellpadding=0>
<tr>
<td>
<shadow><font size=3 color=e7ce4a>Setup</font></shadow>
</table>
</table>
<td abswidth=6>
</table>
<!-- BEGIN SEPARATOR -->
<tr>
<td absheight=5>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=138 absheight=2 valign=middle align=center bgcolor="000000">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
<tr>
<td abswidth=138 absheight=1 valign=top align=left>
<tr>
<td abswidth=138 absheight=2 valign=top align=left bgcolor="181818">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
</table>
<!-- END SPAN -->
<!-- BEGIN SPAN -->
<tr>
<td absheight=25>
<table cellspacing=0 cellpadding=0>
<tr>
<td height=2>
<tr>
<td abswidth=7>
<td abswidth=125>
<table cellspacing=0 cellpadding=0 href="wtv-news:/lobby">
<tr>
<td>
<table cellspacing=0 cellpadding=0>
<tr>
<td>
<shadow><font size=3 color=e7ce4a>Discuss</font></shadow>
</table>
</table>
<td abswidth=6>
</table>
<!-- BEGIN SEPARATOR -->
<!-- BEGIN SEPARATOR -->
<tr>
<td absheight=5>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=138 absheight=2 valign=middle align=center bgcolor="000000">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
<tr>
<td abswidth=138 absheight=1 valign=top align=left>
<tr>
<td abswidth=138 absheight=2 valign=top align=left bgcolor="181818">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
</table>
<!-- END SPAN -->
<table border=0 bgcolor="#3C2F47">
<tr>
<td valign="top">
<table border=0>
<tr>
<td colspan=3>
<table bgcolor="#BBAEC8" border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td abswidth=125 colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="26"><font size=2 color="#EEEEEE"><b>&#187; Community &#171;</b></font>
<tr>
<td colspan=3 height=7>
<tr>
<td abswidth="6">
<td href="wtv-chat:/home" height="18" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Chat</font>
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-news:/lobby" height="18" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Discuss</font>
<td abswidth="15">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-setup:/messenger" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Messenger</font>
<td abswidth="15">
<tr>
<td absheight="5">
</table>
<tr>
<td valign="top" colspan=3>
<table bgcolor="#BBAEC8" border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td abswidth=125 colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="26" valign="top"><font size=2 color="#EEEEEE"><b>&#187; Account &#171;</b></font>
<tr>
<td colspan=3 height=7>
<tr>
<td abswidth="6">
<td href="client:relogin" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Relogin</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-setup:/serve-billing-overview" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Configure</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-setup:/edit-password" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Password</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-setup:/accounts" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Add User</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
`;
data += `
<!-- BEGIN SPAN -->
<tr>
<td absheight=25>
<table cellspacing=0 cellpadding=0>
<tr>
<td height=2>
<tr>
<td abswidth=7>
<td abswidth=125>
<table cellspacing=0 cellpadding=0 href="wtv-guide:/help?topic=Index&subtopic=Glossary">
<tr>
<td>
<table cellspacing=0 cellpadding=0>
<tr>
<td>
<shadow><font size=3 color=e7ce4a>Help</font> <font size=-2 color=e7ce4a><sup>(WIP)</sup></font></shadow>
</table>
</table>
<td abswidth=6>
</table>
<!-- BEGIN SEPARATOR -->
<tr>
<td absheight=5>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=138 absheight=2 valign=middle align=center bgcolor="000000">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
<tr>
<td abswidth=138 absheight=1 valign=top align=left>
<tr>
<td abswidth=138 absheight=2 valign=top align=left bgcolor="181818">
<img src="file://rom/Images/Spacer.gif" width=1 height=1>
</table>
<!-- END SPAN -->
<!-- ADJUST ME FOR HOME TEXT HEIGHT -->
<tr>
<td absheight=28>
<tr>
<td align=right>
<img src="wtv-home:/images/HomeBanner_dark.gif" width=48 height=126>
<tr>
<td absheight=5>
</table>
</sidebar>
<table cellspacing=0 cellpadding=0 width=100% height=383>
<tr>
<td rowspan=10 background="wtv-home:/images/BackgroundGradientEdge_dark.gif" width=6 height=100%>
<tr>
<td valign=top absheight=113>
<table cellspacing=0 cellpadding=0 width=100%>
<tr>
<!-- BEGIN ICON #1 -->
<td width=9%>
<td absheight=113 width=18%>
<LINK REL=next HREF="wtv-mail:/listmail">
<table cellspacing=0 cellpadding=0 border=0 href="wtv-mail:/listmail" selected nocolor width=100%>
<tr>
<td height=10>
<tr>
<td align=center>
<img src="file://ROMCache/OpenMailbox${mailbox_gif_num}.gif" border=0 width=61 height=52>
<tr>
<td height=4>
<tr>
<td valign=bottom>
<table cellspacing=0 cellpadding=0 width=100%>
<tr>
<td align=center>
<font size=3 color=#36d5ff>Mail</font>
</table>
</table>
<!-- BEGIN ICON #2 -->
<td width=6%>
<td absheight=113 width=22%>
<table cellspacing=0 cellpadding=0 border=0 href="wtv-favorite:/favorite" nocolor>
<tr>
<td height=12>
<tr>
<td align=center>
<img src="file://ROMCache/TreasureChest1.gif" border=0 width=92 height=52>
<tr>
<td height=2>
<tr>
<td valign=bottom>
<table cellspacing=0 cellpadding=0 width=100%>
<tr>
<td align=center>
<font size=3 color=#36d5ff>Favorites</font>
</table>
</table>
<!-- BEGIN ICON #3 -->
<td width=5%>
<td absheight=113 width=19%>
<table cellspacing=0 cellpadding=0 border=0 href="wtv-flashrom:/willie" nocolor>
<tr>
<td height=5>
<tr>
<td align=center>
<img src="wtv-home:/images/rom.gif" border=0 width=68 height=59>
<tr>
<td height=2>
<tr>
<td valign=bottom>
<table cellspacing=0 cellpadding=0 width=100%>
<tr>
<td align=center>
<font size=3 color=#36d5ff>Flashroms</font>
</table>
</table>
<!-- BEGIN ICON #4 -->
<td absheight=113 width=3%>
<td absheight=113 width=20%>
<table cellspacing=0 cellpadding=0 border=0 href="http://duckduckgo.com/lite/" nocolor>
<tr>
<td height=12>
<tr>
<td align=center>
<img src="file://ROMCache/Binoculars0.gif" border=0 width=80 height=51>
<tr>
<td height=2>
<tr>
<td valign=bottom>
<table cellspacing=0 cellpadding=0 width=100%>
<tr>
<td align=center>
<font size=3 color=#36d5ff>Search</font>
</table>
</table>
<td width=9%>
</table>
<tr>
<td valign=middle align=center>
<!-- BEGIN MAIN SUB-CONTENT AREA -->
<table cellspacing=0 cellpadding=0 width=480>
<tr>
<td abswidth=100% absheight=18 align=center>
<font size="2"><b>Welcome to ${minisrv_config.config.service_name}`;
if (session_data.getSessionData("registered")) data += ", " + session_data.getSessionData("subscriber_username") + "!";
data += `</font></b>
if (session_data.getSessionData("registered")) data += `<td href="wtv-tricks:/unregister" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Unregister</font>`;
else data += `<td href="wtv-tricks:/register" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Register</font>`
data += `
<td abswidth="6">
<tr>
<td width=100% align=center absheight=2 bgcolor="000000">
<tr>
<td abswidth=100% absheight=16 valign=middle align=center>
<font size="small"><b>Status</b>: ${cryptstatus} (${compstatus})</font>
<tr>
<td width=100% align=center absheight=2 bgcolor="000000">
<tr>
<td abswidth=100% absheight=150 valign=top align=left>
<br>
<h4>&nbsp; Main Menu</h4>
<ul>
<font size="2"><li><a href="wtv-admin:/admin">wtv-admin</a> <sup>new!</sup></li>
`;
if (session_data.hasCap("client-can-do-chat")) {
data += "<li><a href=\"wtv-chat:/home\">IRC Chat Test</a></li>\n"
}
if (session_data.hasCap("client-has-disk")) {
// only show disk stuff if client has disk
data += "<li><a href=\"client:diskhax\">DiskHax</a> ~ <a href=\"client:vfathax\">VFatHax</a></li>\n";
if (session_data.hasCap("client-can-do-macromedia-flash2")) {
// only show demo if client can do flash2
data += "<li>Old DealerDemo: <a href=\"wtv-disk:/sync?group=DealerDemo&diskmap=DealerDemo\">Download</a> ~ <a href=\"file://Disk/Demo/index.html\">Access</a></li>\n";
}
}
data += `</ul></font>`;
// for development
if (fs.existsSync(service_vaults[0] + "/" + service_name + "/home.zefie.html")) {
data += fs.readFileSync(service_vaults[0] + "/" + service_name + "/home.zefie.html", { 'encoding': 'utf8' });
}
data += `</table>
<tr>
<td width=100% absheight=28>
<tr>
<td width=100% align=center absheight=2 bgcolor="000000">
<tr>
<td width=100% align=center absheight=22>
<font size="-4"><b>Connection Speed</b>: &rate;</font>
<tr>
<td width=100% align=center absheight=2 bgcolor="000000">
<tr>
<td width=100% align=right absheight=20>
<font size="-4"><i>minisrv v${minisrv_config.version}${(minisrv_config.config.git_commit) ? ' git-' + minisrv_config.config.git_commit : ''}, hosted by ${minisrv_config.config.service_owner}</i></small></font> &nbsp; <br>
<tr>
<td width=100% align=center absheight=2 bgcolor="000000">
<td absheight="3">
</table>
</table>
</body>
</html>`
}
<td valign="top">
<table border=0 width=100%>
<tr>
<td align="left" colspan=4>
<table border=0 cellspacing=0 cellpadding=0 width="100%">
<tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="24"><font color="#EEEEEE"><spacer type=block height=3 width=100%><b> &#128; Welcome to zefie's minisrv ${minisrv_version_string.split(" ")[3]}</b></font>
<tr>
<td absheight="6">
<tr>
<td valign="top" colspan=3 absheight=63>
This server is operated by ${minisrv_config.config.service_owner}.
</table>
<tr>
<td align="left" colspan=4>
<table border=0 cellspacing=0 cellpadding=0 width="100%">
<tr>
<td height=6> <tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="24"><font color="#EEEEEE"><spacer type=block height=3 width=100%><b> &#128; minisrv Latest Updates</b></font>
<tr>
<td absheight="6">
<tr>
<td valign="top" colspan=4 absheight=80 >
&#149;&nbsp; Added a <a href="wtv-tricks:/charmap">WebTV Character Map</a><br>
&#149;&nbsp; Redesigned homepage based on MattMan69's HackTV<br>
&#149;&nbsp; Added a new minisrv logo<br>
</table>
</table>
<td valign="top">
<table border=0 width=160>
<tr>
<td valign="top" colspan=3>
<table bgcolor="#BBAEC8" border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td abswidth=125 colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="24" valign="top"><font size=2 color="#EEEEEE"><b>&#187; Tools &#171;</b></font>
<tr>
<td colspan=3 height=6>
<tr>
<td abswidth="6">
<td href="wtv-tricks:/tricks" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">WTV Tricks</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="${(wtvshared.isAdmin(session_data)) ? "wtv-admin:/admin" : notAdminAlert}" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">WTV Admin</font>
<td abswidth="6">
<tr>
<td absheight="3">
<tr>
<td abswidth="6">
<td href="wtv-tricks:/blastbacklist?return_to=wtv-home:/home" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Clear Cache</font>
<td abswidth="6">
<tr>
<td absheight="3">
</table>
<tr>
<td valign="top" colspan=3>
<table bgcolor="#BBAEC8" border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/proto3/HomeColumn3Header.gif" abswidth="6">
<td abswidth=125 colspan=2 background="images/proto3/HomeColumn3Header.gif" valign="middle" absheight="24" valign="top"><font size=2 color="#EEEEEE"><b>&#187; More Stuff &#171;</b></font>
<tr>
<td colspan=3 height=7>
<tr>
<td abswidth="6">
<td href="wtv-tricks:/cSetup" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Switch<br>&nbsp;&nbsp; server</font>
<td abswidth="6">
<tr>
<td absheight="5">
<tr>
<td abswidth="6">
<td href="${ownMinisrv}" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Run your<br>&nbsp;&nbsp; own server</font>
<td abswidth="6">
<tr>
<td absheight="5">
<tr>
<td abswidth="6">
<td href="http://archive.midnightchannel.net/zefie/media/" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Midnight<br>&nbsp;&nbsp; Archives</font>
<td abswidth="15">
<tr>
<td absheight="4">
<tr>
<td abswidth="6">
<td href="${supportZefieAlert}" height="21" valign="middle" bgcolor="#BBAEC8"><font color="#454C73">&#128;&nbsp;</font><font color="#000000">Help zefie</font>
<td abswidth="15">
<tr>
<td absheight="3">
</table>
</table>
</table>
`
data += "</body>\n</html>";

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

View File

@@ -20,9 +20,14 @@ if (request_headers.query.sanitize) {
if (data.indexOf("<html>") >= 0) {
data = wtvshared.sanitizeSignature(data).replace("<html>", `<html><body bgcolor=${message_colors.bgcolor} text=${message_colors.text} link=${message_colors.link} vlink=${message_colors.vlink} vspace=0 hspace=0>`);
} else {
data = `<body bgcolor=${message_colors.bgcolor} text=${message_colors.text} link=${message_colors.link} vlink=${message_colors.vlink} vspace=0 hspace=0>\n${data}`;
data = `<body bgcolor=${message_colors.bgcolor} text=${message_colors.text} link=${message_colors.link} vlink=${message_colors.vlink} vspace=0 hspace=0>\n${wtvshared.sanitizeSignature(data)}`;
}
if (request_headers.query.showdemotext) {
data += `<br>
<hr>This is a preview of your signature. The text below the line will not appear in your outgoing messages.
It is provided to demonstrate what a message composed with this signature may look like.
<a href="client:donothing">This is what a link looks like</a>`;
}
if (request_headers.query.demotext) data += "<br>" + request_headers.query.demotext;
}
if (!errpage) {
headers = `200 OK

View File

@@ -302,7 +302,7 @@ ${message_font_close}
<td abswidth=5>
<td abswidth=225 maxlines=1>
${message_font_open}
${(message.subject) ? message.subject : "(No Subject)"}
${(message.subject) ? wtvshared.htmlEntitize(message.subject) : "(No Subject)"}
${message_font_close}
<td abswidth=5>
<td abswidth=47 maxlines=1>

View File

@@ -274,7 +274,7 @@ ${(message.subject) ? wtvshared.htmlEntitize(message.subject) : '(No subject)'}
if (typeof message.body === "object" && message.body) {
message.body = wtvshared.decodeBufferText(message.body);
}
message.body = message.body.replace(/\n/g, "<br><br>");
if (message.body) message.body = message.body.replace(/\n/g, "<br><br>");
data += `${(message.allow_html) ? message.body : wtvshared.htmlEntitize(message.body, true)}
<br>
<br>`;

View File

@@ -6,6 +6,7 @@ var intro_seen = session_data.mailstore.checkMailIntroSeen();
if (!intro_seen && !request_headers.query.intro_seen) {
// user is trying to bypass the intro screen
headers = "300 OK\nLocation: wtv-mail:/DiplomaMail?came-from=" + encodeURIComponent(request_headers.request_url);
} else if (request_headers.query.clear == "true") {
} else if (request_headers.query.clear == "true") {
if (request_headers.Referer)
gourl = request_headers.Referer.replace(/[\?\&]clear\=true/, '');
@@ -62,8 +63,8 @@ Location: ${gourl}`;
reply_message = session_data.mailstore.getMessageByID(request_headers.query.message_reply_id);
if (reply_message) {
msg_subject = "Re: " + reply_message.subject;
to_addr = reply_message.to_addr;
to_name = reply_message.to_name;
to_addr = reply_message.from_addr;
to_name = reply_message.from_name;
}
}
}
@@ -125,7 +126,7 @@ Content-Type: audio/wav`;
var username = session_data.getSessionData("subscriber_username");
var userdisplayname = wtvshared.htmlEntitize(session_data.getSessionData("subscriber_name"));
var address = username + "@" + minisrv_config.config.domain_name
var address = username + "@" + minisrv_config.config.service_name //minisrv_config.config.domain_name
var notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "This feature is not available.",

View File

@@ -252,7 +252,6 @@ ${page_start}-${page_end}
<td height=6>
</TABLE>`
if (NGCount > 0) {
Object.keys(messages).forEach(function (k) {
var message = messages[k].article;
var has_relation = (messages[k].relation !== null) ? true : false;
@@ -267,7 +266,7 @@ ${page_start}-${page_end}
<tr>
${(has_relation) ? `<td abswidth=20 rowspan=2 valign=top><font size="+2">&#149;` : ''}
<td abswidth=426 maxlines=1>
<font color=1bb0f1>${(message.headers.SUBJECT) ? message.headers.SUBJECT : "(No Subject)"}
<font color=1bb0f1>${(message.headers.SUBJECT) ? wtvshared.htmlEntitize(message.headers.SUBJECT) : "(No Subject)"}
<tr>
<td maxlines=1>
<font size="-1" color=544f53><b>
@@ -335,6 +334,7 @@ wtv-expire-all: wtv-news:/news?group=${group}&article=`;
var message_body = message.text;
var attachments = null;
var signature_index = null;
wtvnews.debug(message);
if (message.attachments) attachments = message.attachments;
if (attachments) {
if (Object.keys(attachments).length > 0) {
@@ -345,7 +345,7 @@ wtv-expire-all: wtv-news:/news?group=${group}&article=`;
return false;
}
});
attachments.splice(signature_index, 1);
if (signature_index) attachments.splice(signature_index, 1);
}
}
if (signature) message_colors = session_data.mailstore.getSignatureColors(signature);

View File

@@ -1,4 +1,5 @@
var minisrv_service_file = true;
session_data.data_store.wtvsec_login.PrepareTicket();
headers = `300 Moved
Connection: Close

View File

@@ -1,5 +1,6 @@
var minisrv_service_file = true;
if (!request_headers.query.registering ||
!request_headers.query.subscriber_name ||
!request_headers.query.subscriber_username ||
@@ -8,40 +9,52 @@ if (!request_headers.query.registering ||
!session_data.session_store ||
!session_data ||
!socket.ssid
) {
) {
var errpage = wtvshared.doErrorPage(400);
headers = errpage[0];
data = errpage[1];
} else {
session_data.setSessionData("subscriber_name", request_headers.query.subscriber_name);
session_data.setSessionData("subscriber_username", request_headers.query.subscriber_username);
session_data.setSessionData("subscriber_contact", request_headers.query.subscriber_contact);
session_data.setSessionData("subscriber_contact_method", request_headers.query.subscriber_contact_method);
session_data.setSessionData("subscriber_userid", 0);
session_data.setSessionData("registered", true);
var mailstore_exists = session_data.mailstore.mailstoreExists();
var mailbox_exists = false;
if (!mailstore_exists) mailstore_exists = session_data.mailstore.createMailstore();
if (mailstore_exists) {
if (!session_data.mailstore.mailboxExists(0)) {
// mailbox does not yet exist, create it
mailbox_exists = session_data.mailstore.createMailbox(0);
}
if (mailbox_exists) {
// Just created Inbox for the first time, so create the welcome message
session_data.mailstore.createWelcomeMessage();
}
}
if (!session_data.saveSessionData(true, true)) {
var errpage = wtvshared.doErrorPage(400);
var errpage = null;
const WTVRegister = require(classPath + "/WTVRegister.js")
var wtvr = new WTVRegister(minisrv_config, SessionStore);
if (!request_headers.query.subscriber_username) errpage = wtvshared.doErrorPage(400, "Please enter a username.");
else if (request_headers.query.subscriber_username.length < minisrv_config.config.user_accounts.min_username_length) errpage = wtvshared.doErrorPage(400, "Please choose a username with <b>" + minisrv_config.config.user_accounts.min_username_length + "</b> or more characters.");
else if (request_headers.query.subscriber_username.length > minisrv_config.config.user_accounts.max_username_length) errpage = wtvshared.doErrorPage(400, "Please choose a username with <b>" + minisrv_config.config.user_accounts.max_username_length + "</b> 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 <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)) errpage = wtvshared.doErrorPage(400, "The username you have selected is already in use. Please select another username.");
if (errpage) {
headers = errpage[0];
data = errpage[1];
} else {
session_data.setSessionData("subscriber_name", request_headers.query.subscriber_name);
session_data.setSessionData("subscriber_username", request_headers.query.subscriber_username);
session_data.setSessionData("subscriber_contact", request_headers.query.subscriber_contact);
session_data.setSessionData("subscriber_contact_method", request_headers.query.subscriber_contact_method);
session_data.setSessionData("subscriber_userid", 0);
session_data.setSessionData("registered", true);
var mailstore_exists = session_data.mailstore.mailstoreExists();
var mailbox_exists = false;
if (!mailstore_exists) mailstore_exists = session_data.mailstore.createMailstore();
if (mailstore_exists) {
if (!session_data.mailstore.mailboxExists(0)) {
// mailbox does not yet exist, create it
mailbox_exists = session_data.mailstore.createMailbox(0);
}
if (mailbox_exists) {
// Just created Inbox for the first time, so create the welcome message
session_data.mailstore.createWelcomeMessage();
}
}
if (!session_data.saveSessionData(true, true)) {
var errpage = wtvshared.doErrorPage(400);
headers = errpage[0];
data = errpage[1];
} else {
headers = `200 OK
headers = `200 OK
Content-Type: text/html`;
data = `<html>
data = `<html>
<head>
<title>
Finished signing up
@@ -110,5 +123,6 @@ connect to the Internet by choosing
</body>
</html>
`;
}
}
}

View File

@@ -1,7 +1,6 @@
var minisrv_service_file = true;
var errpage = null;
const WTVRegister = require(classPath + "/WTVRegister.js")
const wtvr = new WTVRegister(minisrv_config, SessionStore);
if (session_data.user_id != 0) errpage = wtvshared.doErrorPage(400, "You are not authorized to add users to this account.");

View File

@@ -19,7 +19,9 @@ if (session_data.user_id != 0 && session_data.user_id != request_headers.query.u
if (user_id != null) {
headers = `200 OK
Connection: Keep-Alive
Content-Type: text/html`
Content-Type: text/html
wtv-expire-all: wtv-setup:/edit-user
wtv-noback-all: wtv-setup:/edit-user`
var userSession = null;
if (session_data.user_id == request_headers.query.user_id) userSession = session_data;
else {
@@ -83,7 +85,7 @@ ${(user_id == 0) ? 'Subscriber' : 'User'} information
<td>
<td absheight=244 valign=top align=left>
<form
action="wtv-setup:/serve-billing-overview"
action="client:goback"
>
<P>
<table cellspacing=0 cellpadding=0 border=0>

View File

@@ -117,7 +117,7 @@ ${(request_headers.query.preview) ? "<tr><td><td colspan=3><b>Signature Preview:
<tr>
<TD>
<td colspan=3 valign=top align=left bgcolor="${(request_headers.query.preview) ? message_colors.bgcolor : "0D0D0D"}">
${(request_headers.query.preview) ? `<embed src="wtv-mail:/get-signature?sanitize=true&demotext=${encodeURIComponent(`<hr>This is a preview of your signature. The text below the line will not appear in your outgoing messages. It is provided to demonstrate what a message composed with this signature may look like. <a href="client:donothing">This is what a link looks like</a>.`)}" height=40></embed><br><br>` : ''}
${(request_headers.query.preview) ? `<embed src="wtv-mail:/get-signature?sanitize=true&showdemotext=true" height=40></embed><br><br>` : ''}
<tr>
<td>
<td colspan=3 height=2 valign=top align=left>

View File

@@ -83,7 +83,7 @@ setTimeout("clearAllLists();", 2*1000);
<tr>
<td width=5 height=26>
<td width=93>
<table width=93 cellspacing=0 cellpadding=0 href=wtv-guide:/help?topic=Messenger&subtopic=Index>
<table width=93 cellspacing=0 cellpadding=0 href=wtv-guide:/help?topic=Index&subtopic=Glossary>
<tr>
<td>
<table cellspacing=0 cellpadding=0>

View File

@@ -26,7 +26,7 @@ function ShowMessengerPanel()
<tr>
<td abswidth=6>
<td abswidth=92 absheight=76>
<table absheight=76 cellspacing=0 cellpadding=0>
<table href="wtv-home:/home" absheight=76 cellspacing=0 cellpadding=0>
<tr>
<td align=right>
<img src="${minisrv_config.config.service_logo}" width=87 height=67>

View File

@@ -76,31 +76,62 @@ Music
if (canDoMuzac) {
data += `<p>Turn on background music
to have songs play continually in
the background.
<p>Remember to adjust the
the background.<p>Remember to adjust the
volume on your TV so you can
hear the music.`;
} else {
data += `Your client reports it does
not support background music.
<p>However, you can still browse,
and listen to the music in the foreground.`;
}
data += `
hear the music.
<TD WIDTH=20>
<TD WIDTH=198 VALIGN=top ALIGN=left>
<spacer type=block height=20 width=1>
<form action="client:ConfirmPhoneSetup">
<spacer type=block height=16 width=1>
<form>
<table cellspacing=0 cellpadding=0>
<tr>
<td valign=top>
Background music<p>
<input type=hidden name=autosubmit value=true autosubmit=onleave>
<INPUT TYPE="checkbox" NAME="setup-play-bgm" VALUE="1"
action="client:SetSetupValue" selected &wtv-muzac-on;${canDoMuzac ? '' : 'disabled'}>
<td abswidth=4>
<td valign=top>
<font size=-1>Background<br>music</font>
<tr><td absheight=10>
<INPUT TYPE="hidden" NAME="current_volume" ID="current_volume" value="&vol;">
<tr><td absheight=38>
<tr>
<td>
<p>
BGM Volume
<p>
<INPUT TYPE="radio" ID="vol_soft" NAME="setup-bgm-volume" VALUE="soft" action="client:SetSetupValue">&nbsp;Soft<br>
<INPUT TYPE="radio" ID="vol_medium" NAME="setup-bgm-volume" VALUE="medium" action="client:SetSetupValue">&nbsp;Medium<br>
<INPUT TYPE="radio" ID="vol_loud" NAME="setup-bgm-volume" VALUE="loud" action="client:SetSetupValue">&nbsp;Loud
<script type="text/javascript">
var volume=document.forms[0].current_volume.value
var radio = null;
if (volume == "soft") {
radio = document.forms[0]['setup-bgm-volume'][0];
} else if (volume == "medium") {
radio = document.forms[0]['setup-bgm-volume'][1];
} else if (volume == "loud") {
radio = document.forms[0]['setup-bgm-volume'][2];
}
if (radio) {
radio.checked = true;
}
</script>
</td>
`;
} else {
data += `<p>Your client reports it does
not support background music.
<p>However, you can still browse,
and listen to the music in the foreground.
<TD WIDTH=20>
<TD WIDTH=198 VALIGN=top ALIGN=left>
<spacer type=block height=16 width=1>
<form>
<table cellspacing=0 cellpadding=0>
`;
}
data += `
<tr>
<td valign=top>
</table>

View File

@@ -16,9 +16,17 @@ if (!errpage) {
}
if (!errpage) {
var wtvr = new WTVRegister(minisrv_config, SessionStore);
if (session_data.getNumberOfUserAccounts() > minisrv_config.config.user_accounts.max_users_per_account) errpage = wtvshared.doErrorPage(400, "You are not authorized to add more than " + minisrv_config.config.user_accounts.max_users_per_account + ` account${minisrv_config.config.user_accounts.max_users_per_account > 1 ? 's' : ''}.`);
if (!request_headers.query.user_name) errpage = wtvshared.doErrorPage(400, "Please enter a username.");
else if (request_headers.query.user_name.length < minisrv_config.config.user_accounts.min_username_length) errpage = wtvshared.doErrorPage(400, "Please choose a username with <b>" + minisrv_config.config.user_accounts.min_username_length + "</b> or more characters.");
else if (request_headers.query.user_name.length > minisrv_config.config.user_accounts.max_username_length) errpage = wtvshared.doErrorPage(400, "Please choose a username with <b>" + minisrv_config.config.user_accounts.max_username_length + "</b> or less characters.");
else if (!wtvr.checkUsernameSanity(request_headers.query.user_name)) 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.user_name)) errpage = wtvshared.doErrorPage(400, "The username you have selected is already in use. Please select another username.");
}
if (errpage) {
headers = errpage[0];
data = errpage[1];

View File

@@ -1,5 +1,7 @@
var minisrv_service_file = true;
const wtvbgm = new WTVBGMusic(minisrv_config, session_data);
if (request_headers.query && session_data) {
if (request_headers.request_url.indexOf('?') >= 0) {

View File

@@ -0,0 +1,211 @@
var minisrv_service_file = true;
if (request_headers.query.machine && request_headers.query.port) {
headers = `200 OK
Content-Type: text/html
Connection: close
wtv-connection-close: true
wtv-service: reset
wtv-service: name=wtv-1800 host=${request_headers.query.machine} port=${request_headers.query.port} flags=0x00000004 connections=1
wtv-boot-url: wtv-1800:/preregister
`
data = `<html>
<head>
<title>Connect Setup v2.2-minisrv</title>
<DISPLAY noscroll allowoffline notvaudio nooptions switchtowebmode noreconnectalert>
</head>
<body bgcolor="#3C2F47" text="#cbcbcb" link="#aaaaaa"
hspace="0" vspace="0" fontsize="large" noscroll hideoptions onload="load()">
<h2>Connecting...</h2>
Please wait while we connect you to ${request_headers.query.machine}:${request_headers.query.port} ...
<script>
function activ() {
location.href = "client:activ";
}
function load() {
location.href = "client:hangup";
setTimeout(activ, 1000);
}
</script>
</body>
</html>
`;
} else {
headers = `200 OK
Content-Type: text/html`
data = `<html>
<head>
<title>Connect Setup v2.2-minisrv</title>
<DISPLAY noscroll notvaudio switchtowebmode>
</head>
<body bgcolor="#3C2F47" text="#cbcbcb" link="#aaaaaa"
hspace="0" vspace="0" fontsize="large" noscroll>
<table cellspacing="0" cellpadding="0" cellborder="0">
<tr>
<td width="104" height="80" valign="top" align="left"><spacer type="block" WIDTH="11" HEIGHT="11"><br>
<spacer type="block" WIDTH="10" HEIGHT="1"> <a href="wtv-home:/home"><img src="${minisrv_config.config.service_logo}" width="87"
height="67"></a>
</td>
<td width="456" height="80" valign="middle" align="center">
<br><h2>
&nbsp;Connection Setup v2.2-minisrv
</h2>
</td>
</tr>
<tr><td colspan=4><hr>
<tr><td absheight=6>
</table>
<script>
function doConnect() {
// if (document.connect.machine.value == "${minisrv_config.services['wtv-1800'].host}" && document.connect.port.value == "${minisrv_config.services['wtv-1800'].port}") {
// alert("You are already here!");
// } else {
document.connect.submit();
// }
}
function setOther() {
count = document.connect.preset.length;
document.connect.preset.selectedIndex = count - 1;
setTimeout(updateService,10);
}
function updateService() {
srv = document.connect.preset[document.connect.preset.selectedIndex].value;
switch (srv) {
case "mattman69":
document.connect.machine.value="74.76.120.18"
document.connect.port.value="1615"
document.message.msg.value="This is MattMan69's Public HackTV minisrv, all are welcome to connect and enjoy the wonders of WebTV. Offers a custom experience."
break;
case "zefie":
document.connect.machine.value="51.222.164.146"
document.connect.port.value="1615"
document.message.msg.value="This is zefie's public minisrv, for those who want the vanilla minisrv experience."
break;
case "local":
document.connect.machine.value="127.0.0.1"
document.connect.port.value="1615"
document.message.msg.value='Connect to your server via localhost. This option is for users running their own server, and connecting with the Viewer.'
break;
case "wni-prod":
document.connect.machine.value="10.0.0.1"
document.connect.port.value="1615"
document.message.msg.value='Default WebTV Production IP/Port. Can be used to check your routing setup.'
break;
case "wni-int":
document.connect.machine.value="192.168.11.8"
document.connect.port.value="1615"
document.message.msg.value='Default WebTV Internal IP/Port. Can be used to check your routing setup.'
break;
case "jarhead":
document.message.msg.value="Jarhead\'s public minisrv, offers the most production-like WebTV service, to simulate how it was like back then."
alert("Coming soon!")
document.connect.preset.selectedIndex = document.connect.preset.selectedIndex - 1;
setTimeout(updateService,10);
case "other":
document.message.msg.value="Your custom service."
}
}
</script>
<form name="connect" action="wtv-tricks:/cSetup">
<table width=100% cellspacing=1 cellpadding=0>
<tr>
<td colspan=3>
&nbsp;<font color=#4489a8>Presets:</font>
</td>
<td><spacer W=24 type=block>
<select width="440" name="preset" onchange="updateService()" selected>
<option value="mattman69" selected>MattMan69's HackTV minisrv</option>
<option value="zefie">zefie's minisrv</option>
<option value="jarhead">JarHead's WebTV Recreation Server</option>
<option value="local">Your local minisrv</option>
<option value="wni-prod">WebTV Production Default</option>
<option value="wni-int">WebTV Internal Default</option>
<option value="other">Other</option>
</select>
<tr><td absheight=6>
</table>
<hr>
<table width=100% cellspacing=1 cellpadding=0>
<tr>
<td height=6>
<tr>
<td colspan=3>
&nbsp;<font color=#4489a8>Service:</font>
<tr>
<td width=15></td>
<td height=2>
<tr>
<td height=2>
<tr>
<td>
<td>
<input name=serviceType type=radio bgcolor=#444444 value=custom checked>
<td>
&nbsp;Custom:&nbsp;&nbsp;&nbsp;
<td>
Address:
<input size=16 ASCIIONLY name=machine bgcolor=#444444 text=#cbcbcb cursor=#cc9933 value="74.76.120.18" onkeypress="setOther()">
&nbsp;&nbsp;&nbsp;Port:
<input size=5 ASCIIONLY NUMBERS name=port bgcolor=#444444 text=#cbcbcb cursor=#cc9933 value="1615" onkeypress="setOther()">
</table>
<spacer type=block height="8">
<hr>
<table cellspacing=1 cellpadding=0>
<tr>
<td height=8>
<tr>
<td colspan=3>
&nbsp;<font color=#4489a8>Description:</font><br><br>
<tr>
<td width=20>
<td width=390 align=left valign=top>
<form name=message>
<textarea rows=4 size=46 text=#cbcbcb id=msg name=msg border="0" bgcolor=#3C2F47 value='This is the public HackTV minisrv, all are welcome to connect and enjoy the wonders of WebTV. Custom experience!' nohighlight noselect>
</textarea>
</form>
<td>
<td width=100% align=right valign=top>
<form action="client:GoToPhoneSetup">
<font color="#E7CE4A" size=-2><shadow>&nbsp;
<input
type=submit
borderimage="file://ROM/tvimages/TVButtonBorder.bif"
value="Phone Settings"
name="Phone Settings"
usestyle
width=170> &nbsp;
</shadow></font>
</form>
<spacer type=block height="60">
<font color="#E7CE4A" size=-2><shadow>&nbsp;
<input type=hidden name=useEncryption value=true checked>
<input
type=button
borderimage="file://ROM/tvimages/TVButtonBorder.bif"
value="Connect"
name="Connect"
onclick="doConnect()"
usestyle
width=170> &nbsp;
</shadow></font>
</table>
</form>
</body>
</html>`;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

View File

@@ -0,0 +1,49 @@
var minisrv_service_file = true;
var num_per_line = 4
var legend_every = 6;
function getLegend() {
d = "<tr>\n";
for (var i = 0; i < num_per_line; i++) {
d += "<td><b><font color=44cc55>Code</font></b>\n<td><b><font color=44cc55>Char</font></b>\n";
}
d += "<tr>\n";
return d;
}
headers = `200 OK
Content-Type: text/html`;
data = `<html>
<body>
<display nosave nosend>
<title>WebTV Character Map</title>
<sidebar width=20%>
<img src="wtv-tricks:/images/Favorites_bg2.jpg">
</sidebar>
<body bgcolor="#191919" text="#33bb44" link="36d5ff" vlink="36d5ff" vspace=0>
<br>
<br>
<font color=44cc55><h1>WebTV Character Map</h1></font>
<br>
<table border=1>`;
for (var i = 0; i <= 255; i++) {
if (i % num_per_line === 0) {
if (i % (num_per_line * legend_every) === 0) {
data += getLegend();
} else {
data += "<tr>"
}
}
data += "<td>&amp;#" + i + ";\n";
data += "<td>&#" + i + ";\n";
}
data += `</table>
</body>
</html>
`

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB