- Rename project
 - Add GPL3 License (RETROACTIVE)
 - Fill out package.json
 - Switch crc16 module to hopefully improve Windows end-user experience
 - Update README
 - http proxy support (with support for external proxies such as WebOne)
 - fix: properly handle proxy dns error
 - fix:  proxy binary data
 - begin initial work on wtv-flashrom (not yet ready)
 - fix: typo in zefie.html
 - add config.service_name variable for future use
 - Sync servicevault files into vs project (nsjproj) file
This commit is contained in:
zefie
2021-07-17 09:23:00 -04:00
parent 4731ba1975
commit ccc7951e34
51 changed files with 1024 additions and 144 deletions

View File

@@ -0,0 +1,10 @@
GROUP name=Browser version=!VERS! root=file://Disk/Browser/Games/
display Updating HackTV Files...
sync Games.html content/htvupdate/Games/Games.html
sync cSetup.html content/htvupdate/Games/cSetup.html
END-GROUP
GROUP name=Browser version=!VERS! root=file://Disk/Browser/MattMan/
display Updating HackTV Files...
sync Tricks/tricks.html content/htvupdate/MattMan/Tricks/tricks.html
END-GROUP

View File

@@ -0,0 +1,122 @@
<html>
<head>
<title>HackTV Home</title>
<DISPLAY notvaudio allowoffline options hideoptions switchtowebmode>
<script>
if (document.images) {
pic1 = new Image();
pic1.src = 'mame.jpg';
pic2 = new Image();
pic2.src = 'doom.jpg';
pic3 = new Image();
pic3.src = 'checkers.jpg';
pic4 = new Image();
pic4.src = 'music.jpg';
pic5 = new Image();
pic5.src = 'file1.jpg';
pic6 = new Image();
pic6.src = 'tricks.jpg';
pic7 = new Image();
pic7.src = 'wtvcity2.gif';
pic8 = new Image();
pic8.src = 'tic.jpg';
pic9 = new Image();
pic9.src = 'html.jpg';
pic10 = new Image();
pic10.src = 'cSetup.jpg';
pic11 = new Image();
pic11.src = 'msn.jpg';
pic12 = new Image();
pic12.src = 'wtvcity.gif';
pic13 = new Image();
pic13.src = 'tvh.jpg';
pic14 = new Image();
pic14.src = 'cross.jpg';
pic15 = new Image();
pic15.src = 'ydkj.jpg';
} else {
pic1 = pic2 = pic3 = pic4 = pic5 = pic6 = pic7 = pic8 = pic9 = pic10 = pic11 = pic12 = pic13 = pic14 = document.r1 = "";
}
</script>
</head>
<body bgcolor="#281f26" background="Pattern_Games.gif" text="#cbcbcb" alink="#4489a8" vlink="#4489a8" link="#4489a8" hspace="0" vspace="0" fontsize="large">
<table cellspacing="0" cellpadding="0" cellborder="0">
<tr>
<td background="GamesShadowLogo.gif" 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="client:showalert?message=Credits:<br><br>eMac<br>MattMan69<br>Outa<br><br>Oct.%202014" onmouseover="document.r1.src=pic7.src;"><img src="file://disk/browser/Games/hacktv4.gif" width="90" height="69"></a></td>
<td width="456" height="80" valign="top" align="center"><img src="GamesBanner.gif" width="456" height="50"><br>
<img src="file://rom/tvimages/Shadow_Horizontal.gif" width="456" height="6"></td></tr></table>
<table cellspacing="0" cellpadding="0">
<tr>
<td colspan="3" height="6"></td>
</tr>
<tr>
<td abswidth="40">&nbsp;</td>
<td>
<table>
<td abswidth="200"><font size="1" color="#ffcf69"><shadow>Play Games</shadow></font></td>
<tr>
<td width="150" height="40" valign="top" align="left"><font size="1" color="#989898">
<li><a href="file://disk/browser/Games/mame.html" onmouseover="document.r1.src=pic1.src;">M.A.M.E.</a>
<li><a href="file://disk/browser/Games/doom.html" onmouseover="document.r1.src=pic2.src;">Doom</a>
<!--li><a href="client:boota?partition=JackROM&size=5242880&source=file://disk/Doom/jackWebTVplus.o">YDKJ</a-->
<li><a href="file://disk/browser/Games/Checkers/index.html" onmouseover="document.r1.src=pic3.src;">Checkers</a>
<li><a href="file://disk/browser/Games/crossword/general/index.html" onmouseover="document.r1.src=pic14.src;">Crosswords</a>
<li><a href="file://disk/browser/Games/tictac/index.html" onmouseover="document.r1.src=pic8.src;">TicTacToe</a></td></tr>
<tr>
<td><font size="1" color="#ffcf69"><shadow>Play Music</shadow></font></td>
<tr>
<td width="200" height="35" valign="top" align="left"><font size="1" color="#989898">
<li><a href="file://disk/Music/index.html" onmouseover="document.r1.src=pic4.src;">WebTV Music</a>
<li><a href="file://disk/Music/Rock/index.html" onmouseover="document.r1.src=pic4.src;">Rock Music</a></td></tr>
<tr>
<td><font size="1" color="#ffcf69"><shadow>Tech Area</shadow></font></td>
<tr>
<td width="150" height="60" valign="top" align="left"><font size="1" color="#989898">
<li><a href="file://disk/Browser/MattMan/techinfo.html" onmouseover="document.r1.src=pic5.src;">Tech Info</a>
<li><a href="file://disk/Browser/MattMan/html/index.html" onmouseover="document.r1.src=pic9.src;">HTML Viewer</a>
<li><a href="file://disk/Browser/MattMan/Tricks/tricks.html" onmouseover="document.r1.src=pic6.src;">HackTV Tricks</a>
<li><a href="file://disk/Browser/Games/cSetup.html" onmouseover="document.r1.src=pic10.src;">Connect Setup</a>
<li><font size="-1"><sup>NEW!</sup</font><a href="client:ConfirmConnectSetup?machine=192.168.11.8&port=1615&ServiceType=custom&useEncryption=true&useDirectConnection=true&Connect=Connect"> Check for Updates</a>
<!--li>Boot <a href="client:boota?NA" onmouseover="document.r1.src=pic11.src;">2.9</a> - <a href="client:boota?NA" onmouseover="document.r1.src=pic12.src;" onmouseout="document.r1.src=pic13.src;">2.1</a-->
</td></tr>
</table>
</td>
<td valign="top">
<table>
<td valign="top">
<center><font size="2" color="#ffcf69"><shadow>
<a href="file://rom/InternalOnly/SetClock.html" onmouseover="document.r1.src=pic7.src;">&date;</a></shadow></font></center><br>
<img src="wtvcity2.gif"
width="260" height="193"
border="2" name="r1"
alt="wtv" />
</td></tr>
</td>
</tr>
</table>
<table>
<tr>
<td align="right" width="252">
<FORM action="client:gototvhome">
<FONT COLOR="#E7CE4A" SIZE=-1><SHADOW>
<INPUT TYPE=BUTTON onclick="location.href='client:activ'" BORDERIMAGE="file://ROM/tvimages/TVButtonBorder.bif" VALUE="Connect" USESTYLE WIDTH=120 onmouseover="document.r1.src=pic7.src;">
</SHADOW></FONT>
<FONT COLOR="#E7CE4A" SIZE=-1><SHADOW>
<INPUT TYPE=SUBMIT BORDERIMAGE="file://ROM/tvimages/TVButtonBorder.bif" VALUE="TV Home" USESTYLE onmouseover="document.r1.src=pic13.src;" WIDTH=120>
</SHADOW></FONT></FORM>
</span>
</td>
</tr>
</table>
</td>
</table>
</body>
</html>

View File

@@ -0,0 +1,143 @@
<html>
<head>
<title>Connect Setup v2.1</title>
<DISPLAY noscroll allowoffline hideoptions notvaudio switchtowebmode>
</head>
<body bgcolor="#281f26" background="Pattern_Games.gif" text="#ffcf69" link="#4489a8"
hspace="0" vspace="0" fontsize="large" noscroll hideoptions>
<table cellspacing="0" cellpadding="0" cellborder="0">
<tr>
<td background="cSetupShadowLogo.gif" 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="file://disk/Browser/Games/Games.html"><img src="hacktv4.gif" width="87"
height="67"></a> </td>
<td width="456" height="80" valign="top" align="center"><img src="cSetup.GIF"
width="456" height="50"><br>
<img src="file://rom/tvimages/Shadow_Horizontal.gif" width="456" height="6"> </td>
</tr>
</table>
<h2>
&nbsp;Connection Setup v2.1
<hr>
</h2>
<script>
function updateService() {
srv = document.connect.preset[document.connect.preset.selectedIndex].value;
switch (srv) {
case "hacktv":
document.connect.machine.value="192.168.1.3"
break;
case "wni-prod":
document.forms[0].machine.value="10.0.0.1"
break;
case "wni-int":
document.forms[0].machine.value="10.0.128.1"
break;
case "zefie":
document.forms[0].machine.value="home.zef.pw"
break;
case "mattman":
document.forms[0].machine.value="turdinc.kicks-ass.net"
break;
}
}
</script>
<form name="connect" action="client:ConfirmConnectSetup">
<table width=100% cellspacing=1 cellpadding=0>
<tr>
<td colspan=3>
&nbsp;<font color=#4489a8>Presets:</font>
</td>
<td>
<select name="preset" onchange="updateService()" selected>
<option value="hacktv">HackTV Default</option>
<option value="wni-prod">WNI ANI Production Default</option>
<option value="wni-int">WNI ANI Internal Default</option>
<option value="zefie">zefie's Server</option>
<option value="mattman">MattMan's Server</option>
</select>
<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=#4489a8 cursor=#cc9933 value="192.168.1.3">
&nbsp;&nbsp;&nbsp;Port:
<input size=5 ASCIIONLY NUMBERS name=port bgcolor=#444444 text=#4489a8 cursor=#cc9933 value="1615">
</table>
<table cellspacing=1 cellpadding=0>
<tr>
<td height=6>
<tr>
<td colspan=3>
&nbsp;<font color=#4489a8>Service options:</font><br><br>
<tr>
<td width=15>
<td>
<input type=checkbox name=forceSignup value=true>
<td>
&nbsp;Force signup
<td width=390 align=right>
<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>
<tr>
<td height=2>
<tr>
<td width=15>
<td>
<input type=checkbox name=useEncryption value=true checked>
<td>
&nbsp;Use encryption
<tr>
<td height=2>
<tr>
<td width=15>
<td>
<input type=checkbox name=useDirectConnection value=true>
<td width=300>
&nbsp;Use direct connection
<td width=390 align=right>
<font color="#E7CE4A" size=-2><shadow>&nbsp;
<input
type=submit
borderimage="file://ROM/tvimages/TVButtonBorder.bif"
value="Connect"
name="Connect"
usestyle
width=170> &nbsp;
</shadow></font>
</table>
<br><br>
<table width=100%>
<tr>
<td align=left width=100% height=70>
<td align=right width=100% height=70>
</table>
</form>
</body>
</html>

View File

@@ -0,0 +1,52 @@
<html>
<head>
<title>HackTV Tricks</title>
<SCRIPT language="JavaScript">
function checkWord(e) {
//e.preventDefault();
var readersEntry = document.pform.pword.value;
if (readersEntry.toLowerCase() == "seqret1") {
window.location.href="file://disk/Browser/MattMan/Tricks/tricks2.html" ;
} else {
document.pform.pword.value="";
alert ("Bad password, access denied!!!");
}
return false;
}
</SCRIPT>
</head>
<body bgcolor="#191919" text="#44cc55" link="36d5ff" vlink="36d5ff" vspace=0>
<sidebar width=20%>
<img src="tricksside.jpg">
</sidebar>
<br>
<br>
<br>
<h1>HackTV Tricks</h1>
<br>
<br>
Hello, citizen! You have reached the "tricks" page. This is meant
for use by 1337 hackers of WebTV networks. If you remember the
right "tricks" you know the password and may enter the access password now.
Otherwise hit the "back" button on your keyboard / remote now!
<p>
Pages beyond this area could cause bodily harm or may render your WebTV useless!
<p>
Remember, the computer is your friend.
<p>
<FORM name="pform" onsubmit="checkWord(e);">
<input name="pword" id="password" bgcolor=#444444 text=#ffdd33 cursor=#cc9933 type="password" size="16">&nbsp;
<input name="button1" value="Enter" onclick="checkWord()" type="button">
</FORM>
</body>
</html>

View File

@@ -0,0 +1,39 @@
var content_dir = service_dir + '/content/';
var diskmap_dir = content_dir + '/diskmaps/';
if (initial_headers['post_data']) {
console.log(initial_headers['post_data'].toString('CryptoJS.enc.Latin1'))
}
if (query['diskmap']) {
if (fs.lstatSync(diskmap_dir + query['diskmap'] + ".txt")) {
var diskmap_data = fs.readFileSync(diskmap_dir + query['diskmap'] + ".txt").toString();
// try to parse diskmap and get an accurate timestamp for webtv versioning
// check all files in the diskmap and return the timestamp of the most recently modified
data = '';
var latest_file_ts = 0;
diskmap_data.split("\n").forEach(function (v) {
if (v.indexOf(" sync ") != -1) {
v = v.trim();
var vcon = v.substring(v.indexOf("content/"));
vcon = vcon.replace("content/", content_dir)
var vconstat = Math.floor(fs.lstatSync(vcon).mtimeMs / 1000);
if (vconstat > latest_file_ts) {
latest_file_ts = vconstat
}
// todo read client post and only give whats needed
// instead of all that is available
// vconstat has the mtime of each file, we need to parse the post_data
data += v + "\n";
} else {
data += v + "\n";
}
});
//data = diskmap_data.replace("!VERS!", latest_file_ts);
}
}
headers = `200 OK
Content-type: text/download-list`

View File

@@ -0,0 +1,48 @@
<html>
<head>
<meta
http-equiv=refresh
content="0;url=client:Fetch?group=Browser&source=wtv-update:/sync%3Fdiskmap%3Dhtvupdate&message=Downloading%20updates..."
>
<display downloadsuccess="client:ShowAlert?message=HackTV%20Update%20was%20successful%21&buttonlabel2=Go%20to%20HackTV&action2=wtv-tricks:/go-offline%3Ftitle%3DHackTV%20Home&buttonlabel1=Okay&buttonaction1=client:goback&image=file://disk/browser/Games/hacktv2.gif&noback=true" downloadfail="client:ShowAlert?message=HackTV%20Update%20failed...&buttonlabel1=Okay...&buttonaction1=client:goback&image=file://disk/browser/Games/hacktv2.gif&noback=true">
<title>HackTV Updater</title>
</head>
<body bgcolor=#0 text=#42CC55 fontsize=large hspace=0 vspace=0>
<table cellspacing=0 cellpadding=0>
<tr>
<td width=104 height=74 valign=middle align=center bgcolor=3B3A4D>
<img src="file://Disk/Browser/Games/hacktv4.gif" width=86 height=64>
<td width=20 valign=top align=left bgcolor=3B3A4D>
<spacer>
<td colspan=2 width=436 valign=middle align=left bgcolor=3B3A4D>
<font color=D6DFD0 size=+2><blackface><shadow>
<spacer type=block width=1 height=4>
<br>
Download HackTV Updates
</shadow>
</blackface>
</font>
<tr>
<td width=104 height=20>
<td width=20>
<td width=416>
<td width=20>
<tr>
<td colspan=2>
<td>
<font size=+1>
Your HackTV Unit is downloading updates.
<p>This may take a while.
</font>
<tr>
<td colspan=2>
<td>
<br><br>
<font color=white>
<progressindicator name="downloadprogress"
message="Preparing..."
height=40 width=250>
</font>
</table>
</body>
</html>

View File

@@ -0,0 +1,4 @@
200 OK
Content-Type: text/url
client:ShowAlert?message=HackTV%20Update%20was%20successful%21&buttonlabel2=Go%20to%20HackTV&action2=file%3A%2F%2FDisk%2FBrowser%2FGames%2FGames.html&buttonlabel1=Okay&buttonaction1=client:goback&image=file://disk/browser/Games/hacktv2.gif&noback=true