diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js index c3aeaf08..fc637583 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/login-stage-two.js @@ -43,6 +43,7 @@ else { var human_name = ssid_sessions[socket.ssid].getSessionData("subscriber_name") || nickname; var messenger_enabled = ssid_sessions[socket.ssid].getSessionData("messenger_enabled") || 0; var messenger_authorized = ssid_sessions[socket.ssid].getSessionData("messenger_authorized") || 0; + var messenger_email = ssid_sessions[socket.ssid].getSessionData("messenger_email"); var gourl = "wtv-home:/splash?"; } var limitedLogin = ssid_sessions[socket.ssid].lockdown; @@ -93,7 +94,6 @@ wtv-transition-override: off wtv-smartcard-inserted-message: Contacting service wtv-ssl-timeout: 240 wtv-login-timeout: 7200 -wtv-mail-url: wtv-mail:/listmail `; if (!limitedLogin && !limitedLoginRegistered) { ssid_sessions[socket.ssid].assignMailStore(); @@ -102,6 +102,9 @@ wtv-mail-url: wtv-mail:/listmail headers += `wtv-messenger-authorized: ${messenger_authorized} wtv-messenger-enable: ${messenger_enabled} wtv-messagewatch-checktimeoffset: off +wtv-messenger-server: msnmsgr.escargot.chat +wtv-user-name: ${ssid_sessions[socket.ssid].getSessionData("messenger_email")} +wtv-messenger-login-url: wtv-passport:/messengerlogin `; } else { /* @@ -124,8 +127,10 @@ wtv-ssl-log-url: wtv-log:/log headers += `wtv-bypass-proxy: false user-id: ${userid} wtv-human-name: ${human_name} +wtv-mail-url: wtv-mail:/listmail ${ssid_sessions[socket.ssid].setIRCNick(nickname)} -wtv-domain: ${minisrv_config.config.domain_name} +wtv-domain: ${ssid_sessions[socket.ssid].getSessionData("messenger_domain")} +passport-domain: ${ssid_sessions[socket.ssid].getSessionData("messenger_domain")} wtv-input-timeout: 14400 wtv-connection-timeout: 1440 wtv-fader-timeout: 1440 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-passport/messengerlogin.js b/zefie_wtvp_minisrv/ServiceVault/wtv-passport/messengerlogin.js new file mode 100644 index 00000000..61e81ddb --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-passport/messengerlogin.js @@ -0,0 +1,42 @@ +headers = `200 OK +Connection: Keep-Alive +wtv-encrypted: true +Expires: Wed, 09 Oct 1991 22:00:00 GMT +Content-Type: text/plain` + +const crypto = require('crypto'); +const https = require("https"); + +const algorithm = 'aes-256-ctr'; + +var email = ssid_sessions[socket.ssid].getSessionData("messenger_email") + "%40" + ssid_sessions[socket.ssid].getSessionData("messenger_domain"); +var password = ssid_sessions[socket.ssid].decryptPassword(ssid_sessions[socket.ssid].getSessionData("messenger_password")); +var challenge = request_headers.request.split('?')[1]; + +if (request_headers.request.split('?')[1].substring(0, 3) != "ct=") { +console.log("Logging into Messenger via MSNP3") +data = require('crypto').createHash('md5').update(request_headers.request.split('?')[1] + password).digest("hex"); +} else { + const fetch = require('node-fetch') + console.log("Logging into Messenger via MSNP8") + request_is_async = true; // Make us async + + async function auth() { + var response = await fetch('https://msnmsgr.escargot.chat/rdr/pprdr.asp') + var passporturls = response.headers.get('passporturls').split("DALogin=")[1]; + var options = { + method: 'GET', + headers: {"Authorization": "Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" + email + ",pwd=" + encodeURIComponent(password) + "," + challenge} +} + response = await fetch(passporturls, options) + var pp = response.headers.get('authentication-info'); + pp = pp.split("from-PP='")[1]; + pp = pp.split("'")[0]; + return pp; + } + + (async () => { + let authdata = await auth(); + sendToClient(socket, headers, authdata); +})(); +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-account.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-account.js new file mode 100644 index 00000000..b5ed0357 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-account.js @@ -0,0 +1,126 @@ +var minisrv_service_file = true; + +headers = `200 OK +Connection: Keep-Alive +Content-Type: text/html` + +data = ` + + + +Messenger account + + + + + + +
+ + +
+ + + +
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+
+ + + + + + + + + + +
+ + + +
+ +Messenger account +
+
+
+ + + +
+Type your Messenger account details here. +

The settings will take effect +the next time you connect to WebTV. +

+
+ + + +
+User Name
+ +

+ + +

+Password + +

+Type again to verify + +

+
+ +
+ + +
+ +
+ + +
+ +
+ + + + + + +
+ + +`; \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-edit-list.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-edit-list.js new file mode 100644 index 00000000..dacfe7d1 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-edit-list.js @@ -0,0 +1,238 @@ +var minisrv_service_file = true; + +headers = `200 OK +Connection: Keep-Alive +Content-Type: text/html` + +data = ` + + + + + Choose who can send messages + + + + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+ + + + Choose who can send messages + + + + +
+Help +
+ +
+
+ + + +
+ + +
+ + + +
+
+ + + + + + + +
+ +
+
+
+ + + +
+ + + + + +
+
+
+ + +`; \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-enable.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-enable.js new file mode 100644 index 00000000..bd793c2e --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-enable.js @@ -0,0 +1,20 @@ +var minisrv_service_file = true; + +if (!ssid_sessions[socket.ssid].getSessionData("messenger_enabled") == 1) { + ssid_sessions[socket.ssid].setSessionData("messenger_enabled", 1); + ssid_sessions[socket.ssid].saveSessionData; + var justenabled = "true" + var enablestatus = "1" +} else { + ssid_sessions[socket.ssid].setSessionData("messenger_enabled", 0); + ssid_sessions[socket.ssid].saveSessionData; + var justenabled = "false" + var enablestatus = "0" +} + +headers = `300 OK +Content-type: text/html +wtv-expire: wtv-setup:/messenger +Location: wtv-setup:/messenger?just_enabled=${justenabled} +wtv-messenger-enable: ${enablestatus} +`; diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-mode.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-mode.js new file mode 100644 index 00000000..e097c7f2 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger-mode.js @@ -0,0 +1,127 @@ +var minisrv_service_file = true; + +headers = `200 OK +Connection: Keep-Alive +Content-Type: text/html` + +data = ` + + MSN Messenger settings + + + + + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+ + + + MSN Messenger settings + + + + +
+Help +
+ +
+
+ + + +
+ + +
+ + + +
+
+You can decide how available you'd like to be with MSN Messenger.

+ +

+ + + + + + + + + + + +
+ +Allow everyone except people you've blocked to contact you
+
+ +Allow only people on your list to contact you
+ +
+
+ + + +
+ + + + + +
+
+
+ + +`; \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger.js new file mode 100644 index 00000000..47864290 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/messenger.js @@ -0,0 +1,124 @@ +var minisrv_service_file = true; + +headers = `200 OK +Connection: Keep-Alive +Content-Type: text/html` + +data = ` + + + +Messenger + + + + + + + +
+ + +
+ + + +
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+
+ + + + + + + + + + +
+ + + +
+ +Messenger +
+
+
+ + + +
+Messenger is currently `; +if (ssid_sessions[socket.ssid].getSessionData("messenger_enabled") == 1) { + data += "on" +} else { + data += "off" +} data += `. +
+
+ + + +
+Turn messenger `; +if (!ssid_sessions[socket.ssid].getSessionData("messenger_enabled") == 1) { + data += "on" +} else { + data += "off" +} data += ` +

+Change your account + +

+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+
+ + +`; \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/setup.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/setup.js index effeb7a3..094769ee 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/setup.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/setup.js @@ -119,14 +119,16 @@ data += ` if (ssid_sessions[socket.ssid].user_id == 0) { data += ` -Account
+Extra Users

`; } data += ` - -Dialing
+Messenger
+
+ +Dialing
@@ -151,6 +153,8 @@ if (ssid_sessions[socket.ssid].user_id == 0) { data += `
Add, change, or remove users
`; } +data += `
+Configure Messenger
`; data += `
Connecting to WebTV
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-messenger-account.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-messenger-account.js new file mode 100644 index 00000000..a1137a1d --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-messenger-account.js @@ -0,0 +1,24 @@ +var minisrv_service_file = true; +var errpage; +if (request_headers.query.email.length < 2) errpage = wtvshared.doErrorPage(400, "Your User Name includes at least 2 characters."); +else if (request_headers.query.email.length > 16) errpage = wtvshared.doErrorPage(400, "Your User Name includes less than 17 characters."); +else if (request_headers.query.password.length < 8) errpage = wtvshared.doErrorPage(400, "Your password includes at least 8 characters."); +else if (request_headers.query.password.length > 20) errpage = wtvshared.doErrorPage(400, "Your password includes less than 21 characters."); +else if (request_headers.query.password !== request_headers.query.password_verify) errpage = wtvshared.doErrorPage(400, "The passwords you entered did not match. Please check them any try again."); + +if (errpage) { + headers = errpage[0]; + data = errpage[1]; +} else { + var encryptedpass = ssid_sessions[socket.ssid].encryptPassword(request_headers.query.password); + + ssid_sessions[socket.ssid].setSessionData("messenger_password", encryptedpass); + ssid_sessions[socket.ssid].setSessionData("messenger_email", request_headers.query.email); + ssid_sessions[socket.ssid].setSessionData("messenger_domain", request_headers.query.domain); + ssid_sessions[socket.ssid].saveSessionData(); + + headers = `300 OK +wtv-expire-all: wtv-setup:/messenger-account +wtv-expire-all: wtv-setup:/validate-messenger-account +Location: wtv-setup:/messenger` +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/config.json b/zefie_wtvp_minisrv/config.json index 07f8dd7f..9a6a6dae 100644 --- a/zefie_wtvp_minisrv/config.json +++ b/zefie_wtvp_minisrv/config.json @@ -89,6 +89,7 @@ "wtv-setup": { "port": 1613, "flags": "0x00000010", + "passport_service": "wtv-passport", "connections": 3 }, "wtv-music": { @@ -111,6 +112,9 @@ "port": 1608, "connections": 3 }, + "wtv-passport": { + "port": 1654 + }, "wtv-admin": { "port": 1698, "enable_multi_query": true,