somewhat guest login

This commit is contained in:
zefie
2026-05-02 10:15:24 -04:00
parent 4f20c08ed0
commit 92958e4c64
18 changed files with 155 additions and 281 deletions

View File

@@ -1,36 +1,29 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIGSTCCBTGgAwIBAgIQlHjGEAhkTTLRsnsDQ/FBODANBgkqhkiG9w0BAQUFADBw MIIFCzCCA/OgAwIBAgIQdCYWD0et5QHOJ3OYuF0r2TANBgkqhkiG9w0BAQUFADBw
MQswCQYDVQQGEwJVUzELMAkGA1UECAwCT0gxEzARBgNVBAcMCkJ1dHQgQ3JhY2sx MQswCQYDVQQGEwJVUzELMAkGA1UECAwCT0gxEzARBgNVBAcMCkJ1dHQgQ3JhY2sx
IDAeBgNVBAoMF1VuZGVyd2VhciBJbnNwZWN0b3IgIzEyMR0wGwYDVQQLDBRUaGlu IDAeBgNVBAoMF1VuZGVyd2VhciBJbnNwZWN0b3IgIzEyMR0wGwYDVQQLDBRUaGlu
ZyBMb29rZXIgRXhwZXJ0czAeFw0yNjA0MzAxMjI0MzFaFw00MTA0MjcxMjI0MzFa ZyBMb29rZXIgRXhwZXJ0czAeFw0yNjA1MDEwMjMzMDhaFw00MTA0MjgwMjMzMDha
MD4xFjAUBgNVBAMTDWVwaXgueGJveC5jb20xFzAVBgNVBAoTDlplZmllIE5ldHdv MFExKTAnBgNVBAMTIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24uY29tMRcw
cmtzMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB FQYDVQQKEw5aZWZpZSBOZXR3b3JrczELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3
ALcVrQ2E2OiR8JJ2WFZVvrN1hrM2vusykN/59GZ5DuIQEQlDC3UZw0Utu/gnTwqh DQEBAQUAA4IBDwAwggEKAoIBAQCpSe+Vpv9qwb5aDgMNfWRTeXAGvTzhP+olLX+J
GScJ2xkCrW2znTl/Dnst2sppy+PghIJBORM/M5CViKuSezpekribgUBFUbF9udSF 2WczAXr4FUSLE4LPyD43se26u4GBvGmKD9512/GZKCtMbKPmfBdIqeq/CF2gx8xh
WqfdEnxwd51v/hVS753hL2pT+BbzMgalAmxGFLREf1Hu4loQu9bo8I8hhwFRCTd1 e55qF8OuOdxMukOLXsTmvf4slwp3/N6gyze/PMmX+ku/gbotwPL0sv/9Vf1+PVTY
JMqQ8QMxG5l+tV6u52SwDWAkMdSL9Tqh0mun38hhZWUCkGCCSpjUmL2PzWfdH7K1 6Fje2EU0ra6xJADeL9gazdl6QBxiJ+py+49SiZMS8N4MICOfklykENmjDoM211W6
GXw+VtA48gidkjahChlNuuMu7w2fJdbfZtSITYimd5yQ19sStlr5lZ/tNyHOvokL mIRgRZebxijNiZNFeWeXzjxzAAWi701TDs8ksNHSRBG2pajDZ+XgB8D1T+yXWbPz
xBZ4HUSk9xePKyVe2s1nEU0CAwEAAaOCAw8wggMLMAkGA1UdEwQCMAAwCwYDVR0P zylePg6HlG8n+asd43wakF8aER26eCT5hyCb4+SkkRClRXLHAgMBAAGjggG+MIIB
BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMIIC2gYDVR0RBIIC0TCCAs2CDWVw ujAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATCC
aXgueGJveC5jb22CEXhlYXMueGJveGxpdmUuY29tgg14ZWFzLnhib3guY29tghJ4 AYkGA1UdEQSCAYAwggF8giBoZWFkd2FpdGVyLnRydXN0ZWQubXNudHYubXNuLmNv
ZXRncy54Ym94bGl2ZS5jb22CD2FzLnhib3hsaXZlLmNvbYIUYXMucGFydC54Ym94 bYIZc2cxLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2cyLnRydXN0ZWQubXNudHYu
bGl2ZS5jb22CEHRncy54Ym94bGl2ZS5jb22CFXRncy5wYXJ0Lnhib3hsaXZlLmNv bXNuLmNvbYIZc2czLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2c0LnRydXN0ZWQu
bYITeGVtYWNzLnhib3hsaXZlLmNvbYIRbWFuaWZlc3QueGJveC5jb22CEW1hY3Mu bXNudHYubXNuLmNvbYINbXNudHYubXNuLmNvbYIWbWFpbC5zZXJ2aWNlcy5saXZl
eGJveGxpdmUuY29tghZtYWNzLnBhcnQueGJveGxpdmUuY29tghdwaWZsYy5wYXJ0 LmNvbYIec3luYy1zZzEudHJ1c3RlZC5tc250di5tc24uY29tgg5sb2dpbi5saXZl
Lnhib3hsaXZlLmNvbYIQZXBsaXN0cy54Ym94LmNvbYIScGlmbGMueGJveGxpdmUu LmNvbYIRcG9wdGltaXplLm1zbi5jb22CEWZhdm9yaXRlcy5tc24uY29tghFtZXNz
Y29tghBiZWFjb25zLnhib3guY29tghlzZzQudHJ1c3RlZC5tc250di5tc24uY29t ZW5nZXIubXNuLmNvbYIRbGl2ZWZpbGVzdG9yZS5jb22CFnVzZXJzLnN0b3JhZ2Uu
ghlzZzMudHJ1c3RlZC5tc250di5tc24uY29tghlzZzIudHJ1c3RlZC5tc250di5t bGl2ZS5jb22CCWcubXNuLmNvbYIXbXNuaWFsb2dpbi5wYXNzcG9ydC5jb22CDW1p
c24uY29tghlzZzEudHJ1c3RlZC5tc250di5tc24uY29tgg1tc250di5tc24uY29t bmlzcnYubG9jYWwwDQYJKoZIhvcNAQEFBQADggEBAD9O6j8bWtsX9OGf0kT3u1dy
ghZtYWlsLnNlcnZpY2VzLmxpdmUuY29tgiBoZWFkd2FpdGVyLnRydXN0ZWQubXNu n6F+MQWX+vI4C9131Nso7cf7/+FyPcg17ewKw1MJ33ZpzCqhupAnN1lZPikGnl+t
dHYubXNuLmNvbYIec3luYy1zZzEudHJ1c3RlZC5tc250di5tc24uY29tgg5sb2dp VacegsqI2mX1ycD11s1EleobHLc28uEQHDd79Dwn6fA2/EOijyqsILJHB6kzLjH6
bi5saXZlLmNvbYIRcG9wdGltaXplLm1zbi5jb22CEWZhdm9yaXRlcy5tc24uY29t DV/sapv4JtNMlKDjfHDhtiI2jtpYTfkoZqjs7WsNmaJBcJ/NgTtl3hFSMiN/MLQ0
ghFtZXNzZW5nZXIubXNuLmNvbYIRbGl2ZWZpbGVzdG9yZS5jb22CFnVzZXJzLnN0 O9wyrvNheINIJ01trpcgLDpmwCG0lYoa8AOdRZccl0KR7IsdVBcV1ANFguepQXI5
b3JhZ2UubGl2ZS5jb22CCWcubXNuLmNvbYIXbXNuaWFsb2dpbi5wYXNzcG9ydC5j dc/VJcFWsYs0puGdhPPZHgiZV4pzmfU+rCM/AoNxDdRBrVSal6Um5YyhlmFtobA=
b22CEGNsb3VkLnJlZml2ZS5kZXaCE3Byb2Qucm9zLnJlZml2ZS5kZXYwDQYJKoZI
hvcNAQEFBQADggEBACKaL3Pl9893HrDj6mAM5Ac3qoD0wCfxws8H7oiabzHr4PgA
rZKoV8NS5qwoi1B1Tr/EZJct0gtjBdp+x8GRZ3j+UgkPhTEi32kXG8HLDRaaXIhW
i7LpjMs3zk6uATXNuPfjuFs6yh66H8Qj44MXgYT66xLLVKYsrm2CSjDiajfhpr5x
HL2oEJUJfqoGTxaxz8zAdiDCVjTkJ0zxyv6vGsVo0TgVggOEfJiYMSqBlJ/j7wBj
+mfRsB8d735QhJOMdABMDLj0DIG6HoMM2gvR2ayeuTtSf1x36doyadDmNYDXyIqI
Vica5k3jkRJ/4IIBf8Ghakh1e+4r6hI692sxePA=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAtxWtDYTY6JHwknZYVlW+s3WGsza+6zKQ3/n0ZnkO4hARCUML MIIEowIBAAKCAQEAqUnvlab/asG+Wg4DDX1kU3lwBr084T/qJS1/idlnMwF6+BVE
dRnDRS27+CdPCqEZJwnbGQKtbbOdOX8Oey3aymnL4+CEgkE5Ez8zkJWIq5J7Ol6S ixOCz8g+N7HturuBgbxpig/eddvxmSgrTGyj5nwXSKnqvwhdoMfMYXueahfDrjnc
uJuBQEVRsX251IVap90SfHB3nW/+FVLvneEvalP4FvMyBqUCbEYUtER/Ue7iWhC7 TLpDi17E5r3+LJcKd/zeoMs3vzzJl/pLv4G6LcDy9LL//VX9fj1U2OhY3thFNK2u
1ujwjyGHAVEJN3UkypDxAzEbmX61Xq7nZLANYCQx1Iv1OqHSa6ffyGFlZQKQYIJK sSQA3i/YGs3ZekAcYifqcvuPUomTEvDeDCAjn5JcpBDZow6DNtdVupiEYEWXm8Yo
mNSYvY/NZ90fsrUZfD5W0DjyCJ2SNqEKGU264y7vDZ8l1t9m1IhNiKZ3nJDX2xK2 zYmTRXlnl848cwAFou9NUw7PJLDR0kQRtqWow2fl4AfA9U/sl1mz888pXj4Oh5Rv
WvmVn+03Ic6+iQvEFngdRKT3F48rJV7azWcRTQIDAQABAoIBAAueAf2WHOdg/0lj J/mrHeN8GpBfGhEdungk+Ycgm+PkpJEQpUVyxwIDAQABAoIBAAeA8Rr4Irs/wtqU
3gYYacHcZsAvbJzi+ANmSmZILzQT/ei/CtaS3Gui08cSw3ayszRhcTgcjeGkoIjZ 17BXv20LyGXG+74z3oKu/iTFKfyYnAUfDaouqB+z0z4tG+yo/B3XIK0BC8sY3NpD
8ZLKXZQzc18Ry4ayWctJWt3FR0dPw6b4AkpZf7GS1HS1PBnqnk6Bfh9MSaLBTPeQ EKPkkfi19B0qD0xnUON5LA//j0l4lI3dtrHpaSJ9nRCvatuANa2sOPzqIiZDVYLB
bCjx9X7DNj5KjzWRud4h8kVgBU4vBTAU1Pu+j5yiepMnmasT/O4JQ6OZ0roc3Mr4 Y8qCkP+yLqn71HSY81dUl4Zgsznr7w0VGXLzJd3nUKYL/FRVpsBPy7uHsUemB8YO
1MiEfNk33Qi88xsIeKcfqVS43vJzowUj6yF+zADTMSWr/Ij5xhHCdqSR0CFyX42Q mgGIVg7l7SpVX/tzZFnoQyPeiABv3hHTWoquxQfT9fqGQEm66cmzQP8yefaVvw1l
GrNFfcWQ9veFcL9b9+tTp575F8HNFa50ULCrk9wjMPsGk1aMztfF5EZamGyDvf/0 Eiikx/QWX2SsXfqXdMmiQUI/y+1WV2XL955e9BFzlH6HrePaj9CIrP3+HLtw1fMZ
m2OGmjcCgYEA7eS8J76LDI8YS6Ijccu4FJRz9a+fPDOxkVmzbQKb2ErEpTWXdQX8 It20WqECgYEA6FWcM2auqqVWrbee8oaoUT/XlQH8TZndlbWGSsFcQZptVTyB+ZMf
s2sk3W4EnMfMEZ9IJ0rm+LhaZZbKmiCL6lCJSIAhsQBdpHMJ/EUX1gDmv3I3/Ie7 DyDBAAh18ix7XVEtm6+2pioBZtou5Vp/RjWM1OI3f0mvVgVi2zFIIy52WrWxTHiv
pa9cMnxNQG2plWvKXorjP87ho1X2WmXtmaJc/oWR5x07Rtm/McZpCi8CgYEAxQUD OSZpAv3NZEoiq/K3InrF3RolVklfQFv9TJBLmfNfTVtuEd47eBiLZckCgYEAuohW
AbMBIKf3zB+bHmmTBFQkkt3GnCWGyF2nH85REX0e5SOOyAxJicXq3WSZkHtRjYMl n0pPQhnBb1OiDv82GfyUVORVX4zcjvFGnTbqHiyH1l3+KNBtWQ2Wy5TsBifhXk5h
nxuy/ReyEU0zgWr9Qgl6PZ7EoJbS74W+IPth0KB9ZzJ6gXIP4k7n5lBMXbIpEaU9 TbGydO4RePeCaUBf4QFtABFsGH+et7Ci5ALvZBTLbCouvZRcDINnKsF0Wd1ZP9TW
n2DE43w2I6Zxl98F0z91Bsi/WoViDMJl/M2eSUMCgYAKDR0KDNnxKOac43fd6f6Y F7ToN6q3vkhbHIpY59Il96Ije7F6CwV7SQR0nA8CgYBcgzpffVOvv4Z0RdmU2OnM
GAGiQs5Wi9SX0JNtKqwNAnO2i0If9qXLqt4+4NQfD64GnJU+28JQhfGD01AyHOfs 8I73VoMQo2QIaO/AdJ43wTYn6qAWsO59J52yVawhcnTtA5YVmDIymCdWvSpPSWnE
eYSjZI6H3P0X4qhsWTr9lsIpGplU+SMrh/I8S9Yzv65nmstNHU8mtgYAkbQ784yL my4o1qsilEStDBgBD+6Zk7atCAxBVwzuxMyr1EQk2yBTN6KUqC6BjBex9CVpizeh
bjnBo0Eb47dKcg7K+pgbjwKBgHMDM/gf+T6JD30XzkP4uZxDSn55/OFWftIk6dUF dROlibM5Kl753nPvrlZTgQKBgQC0fi6LbgUpafChv6RlrI/2L1B8oID3tz7IVjFE
agndktWM5mMd2SgWY78OZR8U/kywDJxPXTOmS4sSGEkqneGZCsVCE+LzaPvuhUlX +RkrX12FkWfYqG3WqO6MSark/fv2HBPNcS/EM4TWr3ESVUcxWwbU9QbK4dp71kCY
tohFyC8gJqe+YEtqaLHomkvwH01vuwN5SDbMYgZ5ucJArXPejYCCXEKJru1n5oWn LzrjdbetD1gw+3jiZtgSKCVku2mb+V+8isHU861eQ3deM4R5tQAmEU8SZpY4SfKU
uwllAoGAD2W5Ims1iR/qWEzQoiSBOvDJdsQWLJwGWlZ1/bUZ5FK3VlhhNMuJv5PC oeoQAwKBgDhaHQinuYCa1w9Mzy6/AagSmS9yhXX1zR4OSgvF2lU0hT18CAR6LgOR
wJhSSW3GECt0SxS+z4QtjFATPMO5hdoo9H6WN+Kx14vAjJbX+8jLBS3EhVZkv6b3 gHOc6OscxDxheS38dHSIyRqD7F5hu1mO0KsGSCdmWIEKMkge8/yjrg4E4CPB5ICZ
aAjJgd9LMbAh9H+CAiYf9QjKfSL7ueIjzf4CHfovj8bk5PPlVSA= RcKZRL/rSQZIsdeVJM9i5FiDUaJUX+cvLJQAC1XLfRrBxCHsY0E1
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@@ -1,26 +1,10 @@
epix.xbox.com headwaiter.trusted.msntv.msn.com
xeas.xboxlive.com
xeas.xbox.com
xetgs.xboxlive.com
as.xboxlive.com
as.part.xboxlive.com
tgs.xboxlive.com
tgs.part.xboxlive.com
xemacs.xboxlive.com
manifest.xbox.com
macs.xboxlive.com
macs.part.xboxlive.com
piflc.part.xboxlive.com
eplists.xbox.com
piflc.xboxlive.com
beacons.xbox.com
sg4.trusted.msntv.msn.com
sg3.trusted.msntv.msn.com
sg2.trusted.msntv.msn.com
sg1.trusted.msntv.msn.com sg1.trusted.msntv.msn.com
sg2.trusted.msntv.msn.com
sg3.trusted.msntv.msn.com
sg4.trusted.msntv.msn.com
msntv.msn.com msntv.msn.com
mail.services.live.com mail.services.live.com
headwaiter.trusted.msntv.msn.com
sync-sg1.trusted.msntv.msn.com sync-sg1.trusted.msntv.msn.com
login.live.com login.live.com
poptimize.msn.com poptimize.msn.com
@@ -30,5 +14,4 @@ livefilestore.com
users.storage.live.com users.storage.live.com
g.msn.com g.msn.com
msnialogin.passport.com msnialogin.passport.com
cloud.refive.dev minisrv.local
prod.ros.refive.dev

View File

@@ -15,7 +15,7 @@ if (BoxId) {
} else { } else {
sessionId = encodeSessionID(BoxId); sessionId = encodeSessionID(BoxId);
} }
} else if (request_headers.cookie.SessionID) { } else if (request_headers.cookie && request_headers.cookie.SessionID) {
BoxID = decodeSessionID(request_headers.cookie.SessionID); BoxID = decodeSessionID(request_headers.cookie.SessionID);
sessionId = request_headers.cookie.SessionID; sessionId = request_headers.cookie.SessionID;
} else { } else {
@@ -77,6 +77,7 @@ data = `<html>
try { try {
var tvShell = new ActiveXObject("MSNTV.TVShell"); var tvShell = new ActiveXObject("MSNTV.TVShell");
var sink = new ActiveXObject("MSNTV.MultipleEventSink"); var sink = new ActiveXObject("MSNTV.MultipleEventSink");
function getIDCRLCode(value) { function getIDCRLCode(value) {
return value & 0xFFFF; return value & 0xFFFF;
} }
@@ -89,6 +90,12 @@ data = `<html>
var banned = ${banned}; // JavaScript boolean value var banned = ${banned}; // JavaScript boolean value
if (!banned) {
var BuiltinServiceList = tvShell.BuiltinServiceList;
var entry = BuiltinServiceList.Add("connection::login");
entry.URL = "https://headwaiter.trusted.msntv.msn.com/connection/boxcheck.html?BoxId=${BoxId}";
}
function DoLogin() { function DoLogin() {
var currentUser = tvShell.UserManager.CurrentUser; var currentUser = tvShell.UserManager.CurrentUser;
@@ -184,7 +191,7 @@ data = `<html>
} }
function GoToUserCheck() { function GoToUserCheck() {
var url = banned ? 'https://sg1.trusted.msntv.msn.com/connection/banned.html' : 'https://sg1.trusted.msntv.msn.com/connection/usercheck.aspx'; var url = banned ? 'https://headwaiter.trusted.msntv.msn.com/connection/banned.html' : 'https://headwaiter.trusted.msntv.msn.com/connection/login.aspx';
var myPanel = tvShell.PanelManager.Item('service'); var myPanel = tvShell.PanelManager.Item('service');
if (myPanel) myPanel.GotoURL(url); if (myPanel) myPanel.GotoURL(url);
} }

View File

@@ -27,7 +27,7 @@ data = `<HTML>
} }
} }
function GotoBoxCheck() { function GotoBoxCheck() {
var url = 'https://sg1.trusted.msntv.msn.com/connection/boxcheck.html'; var url = 'https://headwaiter.trusted.msntv.msn.com/connection/boxcheck.html';
var parms=''; var parms='';
parms += 'BoxId=' + tvShell.SystemInfo.BoxIDService + '&'; parms += 'BoxId=' + tvShell.SystemInfo.BoxIDService + '&';
parms += 'WANProvider=' + tvShell.ConnectionManager.WANProvider + '&'; parms += 'WANProvider=' + tvShell.ConnectionManager.WANProvider + '&';
@@ -67,7 +67,7 @@ data = `<HTML>
} }
else { else {
tvShell.MeteringManager.Stop(); tvShell.MeteringManager.Stop();
SetProgress('Hello, New User.', 10); SetProgress('Please wait while we sign you into MSN TV.', 10);
GotoBoxCheck(); GotoBoxCheck();
} }
</script> </script>

View File

@@ -0,0 +1,32 @@
const minisrv_service_file = true;
// Todo: auth if not guest
headers = `Content-type: text/html`;
data = `<html>
<head>
<title id="title"></title>
</head>
<body>
<iframe id="checkmail" style="display:none"></iframe>
<script language="javascript">
var tvShell = new ActiveXObject("MSNTV.TVShell");
var UserManager = tvShell.UserManager;
var home = "https://sg1.trusted.msntv.msn.com/Home/Home.aspx";
tvShell.ConnectionManager.ServiceState = 'Authorized';
UserManager.SetCurrentUserIsAuthorized(true);
var currentUser = UserManager.CurrentUser;
if (currentUser != null) {
currentUser.IsAuthorized = true;
}
var myPanel = tvShell.PanelManager.Item('main');
if (myPanel) {
myPanel.ClearTravelLog();
myPanel.NoBackToMe = true;
myPanel.GotoURL(home);
}
</script>
</body>
</html>`;

View File

@@ -11,13 +11,43 @@ headers = `Status: 200 OK
Content-type: text/html`; Content-type: text/html`;
data = `<HTML xmlns:msntv> data = `<HTML xmlns:msntv>
<?import namespace="msntv" implementation="https://sg1.trusted.msntv.msn.com/HTC/CustomButton.htc"> <?import namespace="msntv" implementation="https://sg1.trusted.msntv.msn.com/Include/HTC/Shared/CustomButton.htc">
<HEAD> <HEAD>
<title id="title">Login to Passport</title> <title id="title">Login to Passport</title>
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<link rel="stylesheet" type="text/css" href="msntv:/Registration/css/Registration.css"> <link rel="stylesheet" type="text/css" href="msntv:/Registration/css/Registration.css">
<script src="/Include/2.0.261.778/localhost-1700/Shared/BaseClient/JsTransforms/en-us/PaneHelp.js" language="javascript" defer="true"></script> <script src="/Include/2.0.261.778/localhost-1700/Shared/BaseClient/JsTransforms/en-us/PaneHelp.js" language="javascript" defer="true"></script>
<script src="/Include/2.0.261.778/localhost-1700/Shared/Anduril/JsTransforms/en-us/Scripts.js" language="javascript"></script> <script src="/Include/2.0.261.778/localhost-1700/Shared/Anduril/JsTransforms/en-us/Scripts.js" language="javascript"></script>
<script src="msntv:/Javascript/TVShell.js" language="javascript"></script>
<script src="msntv:/Javascript/GuestUser.js" language="javascript"></script>
<script src="msntv:/Javascript/ServiceList.js" language="javascript"></script>
<script language="javascript">
function handleGuest() {
if (!GuestUserExists()) {
InitializeGuestMode();
var PersistentProperties = TVShell.Property("Persistent/");
if (!PersistentProperties) {
return;
}
PersistentProperties.Add("GuestMode", "Guest");
PersistentProperties.Save();
AddGuestUser();
var signon = TVShell.BuiltinServiceList.Item("SignOn");
var panel = TVShell.PanelManager.FocusedPanel;
var atLogin = false;
if ( signon && panel && panel.Name == "main" )
{
if ( IsMainPanelOnPage( signon.URL ) ) atLogin = true;
}
}
if (!atLogin) {
GotoSignOn();
}
}
</script>
<STYLE> <STYLE>
body { body {
background-image: url(msntv:/Registration/images/bgimage.jpg); background-image: url(msntv:/Registration/images/bgimage.jpg);
@@ -46,8 +76,13 @@ data = `<HTML xmlns:msntv>
<tr style="margin: 0; padding: 0; top: 2px; position: relative;"> <tr style="margin: 0; padding: 0; top: 2px; position: relative;">
<td style="margin: 0; padding: 0; vertical-align: middle; top: 2px; position: relative;"><img src="msntv:/Shared/Images/BulletCustom.gif" height="14" width="7" alt="Bullet"></td> <td style="margin: 0; padding: 0; vertical-align: middle; top: 2px; position: relative;"><img src="msntv:/Shared/Images/BulletCustom.gif" height="14" width="7" alt="Bullet"></td>
<td style="margin: 0; padding: 0; width: 4px;"></td> <td style="margin: 0; padding: 0; width: 4px;"></td>
<td style="margin: 0; padding: 0; font:bold 18; line-height: 20px;"><a class="shrLnk2" href="/Register/minisrv-import.asx" style="display: inline-block; line-height: 20px;">I want to use my existing minisrv account</a> (TODO)</td> <td style="margin: 0; padding: 0; font:bold 18; line-height: 20px;"><a class="shrLnk2" href="/Register/Login-to-WebTV.aspx" style="display: inline-block; line-height: 20px;">I want to use my existing minisrv account</a> (TODO)</td>
</tr> </tr>
<tr style="margin: 0; padding: 0; top: 2px; position: relative;">
<td style="margin: 0; padding: 0; vertical-align: middle; top: 2px; position: relative;"><img src="msntv:/Shared/Images/BulletCustom.gif" height="14" width="7" alt="Bullet"></td>
<td style="margin: 0; padding: 0; width: 4px;"></td>
<td style="margin: 0; padding: 0; font:bold 18; line-height: 20px;"><a class="shrLnk2" onclick="handleGuest()" style="display: inline-block; line-height: 20px;">I want to sign in as a guest</a></td>
</tr>
</table> </table>
</div> </div>
</DIV> </DIV>

View File

@@ -76,17 +76,16 @@ data = `<html xmlns:msntv>
<script> <script>
var tvShell = new ActiveXObject("MSNTV.TVShell"); var tvShell = new ActiveXObject("MSNTV.TVShell");
tvShell.UserManager.SetCurrentUserIsAuthorized(true); tvShell.UserManager.SetCurrentUserIsAuthorized(false);
tvShell.ConnectionManager.ServiceState = 'Authorized';
function AddUser() { function AddUser() {
var user = tvShell.UserManager.AddNew("${username}"); var user = tvShell.UserManager.AddNew("${username}");
if (user) { if (user) {
user.IsPersistent = false; user.IsPersistent = true;
} else { } else {
user = tvShell.UserManager.Item("${username}"); user = tvShell.UserManager.Item("${username}");
if (user && user.IsPersistent) { if (user && !user.IsPersistent) {
user.IsPersistent = true; user.IsPersistent = true;
} }
} }

View File

@@ -32,17 +32,20 @@ data = `<HTML xmlns:msntv>
<BODY width="520" height="388"> <BODY width="520" height="388">
<DIV id="title">Logging into your account</DIV> <DIV id="title">Logging into your account</DIV>
<DIV id="main"> <DIV id="main">
<p>When using MSN TV, you will be using your webtv.net account <p>When using MSNTV2, you can access the same minisrv account as your WebTV.</p>
to sign in. If you already have a email to WebTV, you can
use it with MSN TV. If not, you will have to use a Hotmail or MSN address.</p>
<br> <br>
<p>Type your WebTV e-mail in the box below:</p> <p>Type your existing primary username in the box below:</p>
<div class="input-container"> <div class="input-container">
<textarea name="textarea1" id="textarea1" rows="1" cols="15"></textarea> <textarea name="username" id="username" rows="1" cols="15"></textarea>
<p style="display: inline;">@webtv.net</p> <p style="display: inline;">@${minisrv_config.config.service_name}</p>
</div> </div>
<br> <br>
<a>If you don't have a WebTV account, select the <EM>Back</EM> Button.</a> <div class="input-container">
<textarea name="password" id="password" rows="1" cols="15"></textarea>
</div>
<br>
If you don't have an existing minisrv account, select the <EM>Back</EM> Button.
If you do not have a password set on your primary user account, you will need to set one up on your WebTV before you can log in here. After entering your username and password, select the <EM>Continue</EM> Button.
</DIV> </DIV>
<div id="footer"> <div id="footer">
<msntv:CustomButton id="continue" label="Continue" href="/Register/ConnectionType.aspx"/> <msntv:CustomButton id="continue" label="Continue" href="/Register/ConnectionType.aspx"/>

View File

@@ -500,7 +500,7 @@
"port": 1694, "port": 1694,
"connections": 3, "connections": 3,
"flags": "0x00000001", "flags": "0x00000001",
"protocol": "HTTP", "protocol": "HTTPS",
"privileged": true, "privileged": true,
"handler_module": "WTV-MSNTV2", "handler_module": "WTV-MSNTV2",
"handler_handles_port": true, "handler_handles_port": true,

View File

@@ -1,55 +0,0 @@
'use strict';
const path = require('path');
const classPath = path.resolve(__dirname + path.sep + "includes" + path.sep + "classes" + path.sep) + path.sep; require(classPath + "Prototypes.js");
const { WTVShared } = require(classPath + "/WTVShared.js");
const wtvshared = new WTVShared(null, true);
const fs = require('fs');
function showUsage() {
console.log(" * Usage:", process.argv[0], process.argv[1], "<file to CompB64>");
process.exit(1);
}
if (process.argv) {
if (process.argv[2]) {
let reverse = false;
let file = process.argv[2];
if (file === "-d") {
file = process.argv[3];
reverse = true;
}
if (fs.existsSync(file)) {
console.log(` * Processing ${file} ...`)
if (reverse) {
const outfile = file.replace(/\.cb64\.txt/,'') + ".dec.txt";
const encodedData = fs.readFileSync(file);
const rawdata = wtvshared.unpackCompressedB64(encodedData);
try {
fs.writeFileSync(outfile, rawdata);
console.log(` * Successfully decoded into ${outfile}`)
} catch (e) {
console.error("Error processing file:", e)
process.exit(1);
}
} else {
const outfile = file + ".cb64.txt";
const rawdata = fs.readFileSync(file);
const encodedData = wtvshared.packCompressedB64(rawdata);
try {
fs.writeFileSync(outfile, encodedData);
console.log(` * Successfully encoded into ${outfile}`)
} catch (e) {
console.error("Error processing file:", e)
process.exit(1);
}
}
} else {
console.error(` * Could not find file ${file}`)
showUsage();
}
} else {
showUsage();
}
} else {
showUsage();
}

View File

@@ -1,123 +0,0 @@
// no wildcard (yet?)
const groups_to_sync = [
"webtv.users"
]
const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
let classPath = __dirname + "/includes/";
const { WTVShared } = require(classPath + "WTVShared.js");
const wtvshared = new WTVShared(); // creates minisrv_config
classPath = wtvshared.getAbsolutePath(classPath, __dirname);
const minisrv_config = wtvshared.getMiniSrvConfig();
const WTVNews = require(classPath + "/WTVNews.js");
const WTVNewsServer = require(classPath + "/WTVNewsServer.js");
const data_path = wtvshared.getAbsolutePath(minisrv_config.config.SessionStore + '/minisrv_internal_nntp');
const service_name = "wtv-news";
if (!minisrv_config.services[service_name].upstream_address) {
console.error("minisrv config not configured with usenet upstream");
process.exit(1);
}
if (!minisrv_config) {
console.error("Something went wrong loading minisrv config");
process.exit(1);
}
if (!minisrv_config.config.debug_flags.quiet) console.log(" *** Successfully read minisrv configuration....");
const service_config = minisrv_config.services[service_name];
const wtvnewsserver = new WTVNewsServer(minisrv_config, minisrv_config.services['wtv-news'].local_server_port, false, null, null, false);
const wtvnews = new WTVNews(minisrv_config, service_name);
if (service_config.upstream_auth) {
wtvnews.initializeUsenet(service_config.upstream_address, service_config.upstream_port, service_config.upstream_tls || null, service_config.upstream_auth.username || null, service_config.upstream_auth.password || null);
} else {
wtvnews.initializeUsenet(service_config.upstream_address, service_config.upstream_port, service_config.upstream_tls || null);
}
function verifyMessage(group, articleNumber, article) {
const g = wtvnewsserver.getGroupPath(group);
const file = g + path.sep + articleNumber + ".newz";
if (!fs.existsSync(file)) return false;
const old_data = fs.readFileSync(file);
const new_data = JSON.stringify(article.article);
const old_data_hash = crypto.createHash('md5').update(old_data).digest("hex");
const new_data_hash = crypto.createHash('md5').update(new_data).digest("hex");
return (old_data_hash === new_data_hash);
}
function deleteMissing(group, articles) {
const g = wtvnewsserver.getGroupPath(group);
try {
fs.readdirSync(g).forEach(file => {
const articleNumber = parseInt(file.split('.')[0]);
file = g + path.sep + file;
if (!articles.find(e => (e === articleNumber))) {
console.log(" * ", group, "article", articleNumber, "deleted from upstream, removing locally")
fs.rmSync(file);
}
});
return true;
} catch (e) {
console.log(e);
return false;
}
}
wtvnews.connectUsenet().then((res) => {
if (res) {
groups_to_sync.forEach((group) => {
console.log(group);
wtvnews.selectGroup(group).then((res) => {
const range = {
start: res.group.low,
end: res.group.high
}
wtvnews.listGroup(group, null, null, range).then((res) => {
if (res.group.articleNumbers) {
const promises = [];
wtvnewsserver.createGroup(group);
const meta = wtvnewsserver.getMetadata(group);
meta.last_article_id = res.group.high;
wtvnewsserver.saveMetadata(group, meta);
//deleteMissing(group, res.group.articleNumbers)
res.group.articleNumbers.forEach((article) => {
promises.push(new Promise((resolve, reject) => {
wtvnews.getArticle(article, false).then((message) => {
res = wtvnewsserver.createArticle(group, article, message);
if (res) {
if (res === "exists") {
console.log(" * ", group, "article", article, "already exists")
} else {
console.log(" * Created", group, "article", article, res)
}
resolve(true)
} else {
console.log(" ! Failed to create file for ", group, "article", article, "with error", res);
resolve(false)
}
});
}));
})
Promise.all(promises).then(() => {
wtvnews.quitUsenet();
process.exit(0);
});
} else {
wtvnews.quitUsenet();
}
})
});
})
}
});

View File

@@ -5,8 +5,8 @@ const path = require('path');
const forge = require('node-forge'); const forge = require('node-forge');
const workspaceRoot = __dirname; const workspaceRoot = __dirname;
const httpsDir = path.join(workspaceRoot, 'includes', 'ServiceDeps', 'https'); const httpsDir = path.join(workspaceRoot, '..', 'includes', 'ServiceDeps', 'https');
const msnDir = path.join(workspaceRoot, 'includes', 'ServiceDeps', 'msntv2'); const msnDir = path.join(workspaceRoot, '..', 'includes', 'ServiceDeps', 'msntv2');
const domainsFile = path.join(msnDir, 'msn_domains.txt'); const domainsFile = path.join(msnDir, 'msn_domains.txt');
const defaultCaCertPath = path.join(msnDir, 'msntv2.crt'); const defaultCaCertPath = path.join(msnDir, 'msntv2.crt');

View File

@@ -7,9 +7,9 @@ const pcap = require('pcap-parser');
const zlib = require('zlib'); const zlib = require('zlib');
// Import our WebTV classes // Import our WebTV classes
const WTVSec = require('./includes/classes/WTVSec.js'); const WTVSec = require('../includes/classes/WTVSec.js');
const WTVShared = require('./includes/classes/WTVShared.js')['WTVShared']; const WTVShared = require('../includes/classes/WTVShared.js')['WTVShared'];
const LZPF = require('./includes/classes/LZPF.js'); const LZPF = require('../includes/classes/LZPF.js');
/** /**
* PCAP Packet Parser for WebTV/WTVP Protocol * PCAP Packet Parser for WebTV/WTVP Protocol

View File

@@ -24,7 +24,7 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const WTVImage = require('./includes/classes/WTVImage'); const WTVImage = require('../includes/classes/WTVImage');
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Argument parser // Argument parser