some updates
This commit is contained in:
@@ -1,27 +1,29 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIEqzCCA5OgAwIBAgIQ3Zq6hcFrpKh4v3/G9sTw3DANBgkqhkiG9w0BAQUFADBw
|
MIIE8TCCA9mgAwIBAgIQhTOF71uduRa0SXk4z+A7ujANBgkqhkiG9w0BAQUFADB0
|
||||||
MQswCQYDVQQGEwJVUzELMAkGA1UECAwCT0gxEzARBgNVBAcMCkJ1dHQgQ3JhY2sx
|
MRkwFwYDVQQDDBBtaW5pc3J2IHNlcnZpY2VzMREwDwYDVQQIDAhOZXcgWW9yazEL
|
||||||
IDAeBgNVBAoMF1VuZGVyd2VhciBJbnNwZWN0b3IgIzEyMR0wGwYDVQQLDBRUaGlu
|
MAkGA1UEBhMCVVMxHjAcBgkqhkiG9w0BCQEWD3plZmllQHplZmllLm5ldDEXMBUG
|
||||||
ZyBMb29rZXIgRXhwZXJ0czAgFw0wMDAxMDExMjAwMDBaGA8yMDk5MTIzMTIzNTk1
|
A1UECgwOWmVmaWUgTmV0d29ya3MwIBcNMDAwMTAxMTIwMDAwWhgPMjA5OTEyMzEy
|
||||||
OVowUTEpMCcGA1UEAxMgaGVhZHdhaXRlci50cnVzdGVkLm1zbnR2Lm1zbi5jb20x
|
MzU5NTlaMFExKTAnBgNVBAMTIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24u
|
||||||
FzAVBgNVBAoTDlplZmllIE5ldHdvcmtzMQswCQYDVQQGEwJVUzCCASIwDQYJKoZI
|
Y29tMRcwFQYDVQQKEw5aZWZpZSBOZXR3b3JrczELMAkGA1UEBhMCVVMwggEiMA0G
|
||||||
hvcNAQEBBQADggEPADCCAQoCggEBAMtl9J068AFSHykffAlcpspq3D7mE7fFRoyf
|
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6pNNH2lF7SFx8cEIF1ImA7AI4bv/W
|
||||||
+tQCM3Wy7PqJvDAegoI4Zf/QdToTJMS6dkcsEx+dgD01VKJ1B0RdHbg6rFQfymc4
|
qvbErvUYJOfrOLXOfvXnxWEbEfDk9+XEf+JD8PQo2rvze1cVcXjVO7i2m+c4jdWw
|
||||||
GKyNk6tuqp7YQqElCUc91oFz4pJaJaOYaNBqkAG3MfTg+tSoBXl2YyjPrT0TPhXX
|
X/VPdRM0NpoppFXbWC7nWNuXhZD/S7f6pUEJez7BYUpEeBFdR9eFb8VPo8+kefMz
|
||||||
1Cm7BuFZORqNhvTdf33QXzgCQVso9U5X9YBgDaiTcu55etjFKUBEYhSYwTHmennA
|
inYznvP1UAn9wwoSIFDglX9QbijkJ/ZKtOY3vxCMVBZedWVnMPEJt928NJBNDGcC
|
||||||
FWOjY7ux6HFXBfKAz1QeCE6+corl5+6srCfh7Uz3ZFV9vntEYnyzbJuo6gR5P7GI
|
VeV1thEAAVbQBf5nyhF9VfblTzEHoxq+d6rvi4rVkd0ZYqQPCcafDFccXf6YNQcz
|
||||||
IYsygkADQAETHivl6GxeB7SEUfYLnfrZFwZc235tUz7USBdg3gcCAwEAAaOCAVww
|
8cmwzha61bgLbJLPNPiSqbqL8GNfsHbt2vyX6OhYpKwF+Y2CCp0xbGflAgMBAAGj
|
||||||
ggFYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB
|
ggGeMIIBmjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEF
|
||||||
MIIBJwYDVR0RBIIBHjCCARqCIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24u
|
BQcDATCCAWkGA1UdEQSCAWAwggFcgiBoZWFkd2FpdGVyLnRydXN0ZWQubXNudHYu
|
||||||
Y29tghcqLnRydXN0ZWQubXNudHYubXNuLmNvbYINbXNudHYubXNuLmNvbYIWbWFp
|
bXNuLmNvbYIZc2cxLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2cyLnRydXN0ZWQu
|
||||||
bC5zZXJ2aWNlcy5saXZlLmNvbYIObG9naW4ubGl2ZS5jb22CEXBvcHRpbWl6ZS5t
|
bXNudHYubXNuLmNvbYIZc2czLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2c0LnRy
|
||||||
c24uY29tghFmYXZvcml0ZXMubXNuLmNvbYIRbWVzc2VuZ2VyLm1zbi5jb22CEWxp
|
dXN0ZWQubXNudHYubXNuLmNvbYINbXNudHYubXNuLmNvbYIWbWFpbC5zZXJ2aWNl
|
||||||
dmVmaWxlc3RvcmUuY29tghZ1c2Vycy5zdG9yYWdlLmxpdmUuY29tgglnLm1zbi5j
|
cy5saXZlLmNvbYIObG9naW4ubGl2ZS5jb22CEXBvcHRpbWl6ZS5tc24uY29tghFm
|
||||||
b22CF21zbmlhbG9naW4ucGFzc3BvcnQuY29tgg1taW5pc3J2LmxvY2Fsgg8qLm1p
|
YXZvcml0ZXMubXNuLmNvbYIRbWVzc2VuZ2VyLm1zbi5jb22CEWxpdmVmaWxlc3Rv
|
||||||
bmlzcnYubG9jYWwwDQYJKoZIhvcNAQEFBQADggEBAAGEINTBTrkbpO0CJPv9w4Nj
|
cmUuY29tghZ1c2Vycy5zdG9yYWdlLmxpdmUuY29tgglnLm1zbi5jb22CF21zbmlh
|
||||||
IMuOSZETA7uXWyPwoLBIa57yTjNEVvWmjAc2nnrI3D6ijLMiF1eDIEsP4DI/qfMs
|
bG9naW4ucGFzc3BvcnQuY29tgg1taW5pc3J2LmxvY2FsMA0GCSqGSIb3DQEBBQUA
|
||||||
J82cS/IOIxXCmReU132NaZ6mSNEZx9QDkz/R8rFq5jKPRYSeguZSsWDxYlaQsbRr
|
A4IBAQAZTy82heE64hCFxEiIFIxglGyPVU14wA2gXrv82mci/U0h/xBHfIfQWY8d
|
||||||
qxQsKkRIOpm5pIOA/UT2gwV0L84a/NHXHNfc+CnPvvy7R9kmUC0XynsqU3lkj4Ah
|
ULM6dO6kEk2DriBbo2ET10rkBwCTqa1iSDRN1eg0umdT2vbEYigjOelZJQqJi3Ua
|
||||||
SNZOgYyWkGWW7AytQWnMxyWm+xQjG4Fwl1Os9en4qwCK0ADyMCQyG3O68Gffu2go
|
LGBrPh8PK7juGa37aEdMWFLxmDtfEXE//OmMiliXU6bIi44pqM571X3Q3WPh3C3K
|
||||||
YciXaJquI52fEKDQV4mDxy4B1V8BQ3ywm1iGebLzLgrKK7xPucUU5fqz7v2IUIs=
|
xOCOwQMgTPovLJDwRIJNyTrnb0kI+1s7oOtZ+QUQa7frY0Bgxn4IMEnZoIkOcAkh
|
||||||
|
R1m/OKyjjqQ8EVM73dTeiNr0yByG64C8dsVhJVXPT3GZOl7p5Pof9VfQg9Qr39Vh
|
||||||
|
ds7T/BVzQ79G8IXQ+AgZnZHu7pnn
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
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
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
|
const WTVClientSessionData = require("../../../classes/WTVClientSessionData");
|
||||||
|
|
||||||
const minisrv_service_file = true;
|
const minisrv_service_file = true;
|
||||||
const crypto = require('crypto');
|
|
||||||
|
if (!session_data) {
|
||||||
|
session_data = new WTVClientSessionData(minisrv_config, (socket.ssid || null))
|
||||||
|
}
|
||||||
|
|
||||||
// Sorry Zef :kek
|
// Sorry Zef :kek
|
||||||
// https://git.computernewb.com/yellows111/msnp-wiki/src/branch/master/docs/services/rst.md
|
// https://git.computernewb.com/yellows111/msnp-wiki/src/branch/master/docs/services/rst.md
|
||||||
@@ -93,7 +98,7 @@ function extractTokenFromCipherValue(xml) {
|
|||||||
let cipherValue = match[1].trim();
|
let cipherValue = match[1].trim();
|
||||||
if (cipherValue && cipherValue.length > 0) {
|
if (cipherValue && cipherValue.length > 0) {
|
||||||
token = cipherValue;
|
token = cipherValue;
|
||||||
console.log("Found CipherValue token:", token.substring(0, 50) + "...");
|
debug("Found CipherValue token:", token.substring(0, 50) + "...");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,7 +123,7 @@ function validateTokenAndGetUser(token) {
|
|||||||
email = `user_${userId.substring(0, 8)}@example.com`;
|
email = `user_${userId.substring(0, 8)}@example.com`;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`Token validated - UserId: ${userId}, Email: ${email}`);
|
debug(`Token validated - UserId: ${userId}, Email: ${email}`);
|
||||||
return { success: true, userId, email };
|
return { success: true, userId, email };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Token validation error:", error);
|
console.error("Token validation error:", error);
|
||||||
@@ -350,12 +355,12 @@ function rstHandler() {
|
|||||||
requestBody = JSON.stringify(request_headers.post_data);
|
requestBody = JSON.stringify(request_headers.post_data);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log("No post_data found. Available keys:", Object.keys(request_headers));
|
debug("No post_data found. Available keys:", Object.keys(request_headers));
|
||||||
return generateErrorResponse("0x80048820", "No POST data received");
|
return generateErrorResponse("0x80048820", "No POST data received");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!requestBody || requestBody.trim() === '') {
|
if (!requestBody || requestBody.trim() === '') {
|
||||||
console.log("Empty request body");
|
debug("Empty request body");
|
||||||
return generateErrorResponse("0x80048820", "Empty request body");
|
return generateErrorResponse("0x80048820", "Empty request body");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,7 +374,7 @@ function rstHandler() {
|
|||||||
let lastName = "User";
|
let lastName = "User";
|
||||||
|
|
||||||
if ((!email || !password) && requestBody.includes('CipherValue')) {
|
if ((!email || !password) && requestBody.includes('CipherValue')) {
|
||||||
console.log("No username/password found, trying token authentication...");
|
debug("No username/password found, trying token authentication...");
|
||||||
const token = extractTokenFromCipherValue(requestBody);
|
const token = extractTokenFromCipherValue(requestBody);
|
||||||
|
|
||||||
if (token) {
|
if (token) {
|
||||||
@@ -377,7 +382,7 @@ function rstHandler() {
|
|||||||
if (tokenValidation.success) {
|
if (tokenValidation.success) {
|
||||||
userId = tokenValidation.userId;
|
userId = tokenValidation.userId;
|
||||||
userEmail = tokenValidation.email;
|
userEmail = tokenValidation.email;
|
||||||
console.log(`Token authentication successful for: ${userEmail} (${userId})`);
|
debug(`Token authentication successful for: ${userEmail} (${userId})`);
|
||||||
|
|
||||||
if (request_headers.cookie) {
|
if (request_headers.cookie) {
|
||||||
const cookieEmail = getCookie(request_headers.cookie, 'RST_Email');
|
const cookieEmail = getCookie(request_headers.cookie, 'RST_Email');
|
||||||
@@ -386,34 +391,40 @@ function rstHandler() {
|
|||||||
if (cookieUsername) firstName = cookieUsername;
|
if (cookieUsername) firstName = cookieUsername;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log("Token validation failed");
|
debug("Token validation failed");
|
||||||
return generateErrorResponse("0x80048821", "Invalid token");
|
return generateErrorResponse("0x80048821", "Invalid token");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log("No token found in CipherValue");
|
debug("No token found in CipherValue");
|
||||||
return generateErrorResponse("0x80048820", "Missing credentials/token");
|
return generateErrorResponse("0x80048820", "Missing credentials/token");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (email && password) {
|
else if (email && password) {
|
||||||
console.log(`Extracted - Email: ${email}, Password: ${password ? '***' : 'empty'}`);
|
debug(`Extracted - Email: ${email}, Password: ${password ? '***' : 'empty'}`);
|
||||||
|
|
||||||
if (email && email.indexOf('@') < 0) {
|
if (email && email.indexOf('@') < 0) {
|
||||||
const domain = (minisrv_config && minisrv_config.config && minisrv_config.config.domain_name) || 'wtv.zefie.com';
|
const domain = minisrv_config.config.domain_name || 'minisrv.local';
|
||||||
email = `${email}@${domain}`;
|
email = `${email}@${domain}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
userEmail = email;
|
userEmail = email;
|
||||||
firstName = email.split('@')[0];
|
firstName = email.split('@')[0];
|
||||||
userId = crypto.createHash('md5').update(email).digest('hex');
|
userId = crypto.createHash('md5').update(email).digest('hex');
|
||||||
console.log(`Authentication successful for: ${userEmail} (${userId})`);
|
const validAuth = validateCredentials(email, password);
|
||||||
|
if (!validAuth) {
|
||||||
|
debug("Invalid credentials");
|
||||||
|
return generateErrorResponse("0x80048821", "Invalid credentials");
|
||||||
|
} else {
|
||||||
|
debug(`Authentication successful for: ${userEmail} (${userId})`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log("Missing both credentials and token");
|
debug("Missing both credentials and token");
|
||||||
return generateErrorResponse("0x80048820", "Missing credentials/token");
|
return generateErrorResponse("0x80048820", "Missing credentials/token");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!userId || !userEmail) {
|
if (!userId || !userEmail) {
|
||||||
console.log("Failed to get user identity");
|
debug("Failed to get user identity");
|
||||||
return generateErrorResponse("0x80048821", "User identity not found");
|
return generateErrorResponse("0x80048821", "User identity not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,6 +449,21 @@ function rstHandler() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function validateCredentials(email, password) {
|
||||||
|
username = email.split('@')[0];
|
||||||
|
result_ary = session_data.findAccountByUsername(username);
|
||||||
|
if (result_ary[0]) {
|
||||||
|
if (!socket.ssid) {
|
||||||
|
socket.ssid = result_ary[1];
|
||||||
|
// second arg should handle secondary users
|
||||||
|
session_data.setSSID(socket.ssid, result_ary[2]);
|
||||||
|
}
|
||||||
|
return session_data.validateUserPassword(password);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
let result = rstHandler();
|
let result = rstHandler();
|
||||||
if (result) {
|
if (result) {
|
||||||
data = result;
|
data = result;
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ 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 MSNTV2, you can access the same minisrv account as your WebTV.</p>
|
<p>When using MSNTV2, you can use an existing minisrv account.</p>
|
||||||
<br>
|
<br>
|
||||||
<p>Type your existing primary username 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="username" id="username" rows="1" cols="15"></textarea>
|
<textarea name="username" id="username" rows="1" cols="15"></textarea>
|
||||||
<p style="display: inline;">@${minisrv_config.config.service_name}</p>
|
<p style="display: inline;">@${minisrv_config.config.domain_name}</p>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="input-container">
|
<div class="input-container">
|
||||||
@@ -45,13 +45,15 @@ data = `<HTML xmlns:msntv>
|
|||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
If you don't have an existing minisrv account, select the <EM>Back</EM> Button.
|
If you don't have an existing minisrv account, select the <EM>Back</EM> Button.
|
||||||
|
If you reset your box, you can recover your existing account by entering the username and password.
|
||||||
|
If you intend to use an account that is already established on your WebTV, type in the username and password for that account.
|
||||||
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.
|
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/Validate-account.aspx"/>
|
||||||
</div>
|
</div>
|
||||||
<div id="Back">
|
<div id="Back">
|
||||||
<msntv:CustomButton id="continue2" label="Back" href="/Register/ConnectionType.aspx"/>
|
<msntv:CustomButton id="continue2" label="Back" href="/Register/Register-MSN-email.aspx"/>
|
||||||
</div>
|
</div>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>`;
|
</HTML>`;
|
||||||
|
|||||||
Binary file not shown.
@@ -38,7 +38,7 @@ if (!session_data && BoxId) {
|
|||||||
|
|
||||||
let registered = false;
|
let registered = false;
|
||||||
let username = '';
|
let username = '';
|
||||||
let Profile_Picture
|
let Profile_Picture = '';
|
||||||
if (session_data) {
|
if (session_data) {
|
||||||
registered = session_data.isRegistered();
|
registered = session_data.isRegistered();
|
||||||
if (registered) {
|
if (registered) {
|
||||||
|
|||||||
@@ -1522,6 +1522,16 @@ class WTVMSNTV2 {
|
|||||||
|
|
||||||
const self = this;
|
const self = this;
|
||||||
const responseCookies = [];
|
const responseCookies = [];
|
||||||
|
// try to make the debug name
|
||||||
|
let debug_name = (filepath) ? filepath.split(path.sep) : null;
|
||||||
|
if (debug_name) {
|
||||||
|
if (this.wtvshared.isConfiguredService(debug_name[debug_name.length - 2]))
|
||||||
|
// service:/filename
|
||||||
|
debug_name = debug_name[debug_name.length - 2] + ":/" + debug_name[debug_name.length - 1];
|
||||||
|
else
|
||||||
|
// filename
|
||||||
|
debug_name = debug_name[debug_name.length - 1];
|
||||||
|
}
|
||||||
const contextObj = {
|
const contextObj = {
|
||||||
socket,
|
socket,
|
||||||
request_headers,
|
request_headers,
|
||||||
@@ -1545,6 +1555,7 @@ class WTVMSNTV2 {
|
|||||||
cwd: path.dirname(filepath),
|
cwd: path.dirname(filepath),
|
||||||
// Cookie helpers available to scripts
|
// Cookie helpers available to scripts
|
||||||
response_cookies: responseCookies,
|
response_cookies: responseCookies,
|
||||||
|
debug: require('debug')((debug_name) ? debug_name : 'service_script'),
|
||||||
setCookie(name, value, opts) {
|
setCookie(name, value, opts) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
let s = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
|
let s = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
|
||||||
@@ -1593,6 +1604,9 @@ class WTVMSNTV2 {
|
|||||||
if (socket.ssid && this.ssid_sessions && vmResult.session_data !== undefined) {
|
if (socket.ssid && this.ssid_sessions && vmResult.session_data !== undefined) {
|
||||||
this.ssid_sessions[socket.ssid] = vmResult.session_data;
|
this.ssid_sessions[socket.ssid] = vmResult.session_data;
|
||||||
}
|
}
|
||||||
|
if (vmResult.socket !== socket) {
|
||||||
|
socket = vmResult.socket;
|
||||||
|
}
|
||||||
if (!vmResult.request_is_async) {
|
if (!vmResult.request_is_async) {
|
||||||
this._sendScriptResult(socket, request_headers, vmResult.headers, vmResult.data, responseCookies);
|
this._sendScriptResult(socket, request_headers, vmResult.headers, vmResult.data, responseCookies);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ class WTVClientSessionData {
|
|||||||
/**
|
/**
|
||||||
* Finds an account's SSID and User ID from just the username
|
* Finds an account's SSID and User ID from just the username
|
||||||
* @param {string} username The username to search for
|
* @param {string} username The username to search for
|
||||||
* @returns {Array} [found {boolean}, account_dir {string|null}, user_id {number|null}]
|
* @returns {Array} [found {boolean}, ssid {string|null}, user_id {number|null}]
|
||||||
*/
|
*/
|
||||||
findAccountByUsername(username) {
|
findAccountByUsername(username) {
|
||||||
const accounts_dir = this.getAccountStoreDirectory();
|
const accounts_dir = this.getAccountStoreDirectory();
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ const msnDir = path.join(workspaceRoot, '..', 'includes', 'ServiceDeps', 'msntv2
|
|||||||
|
|
||||||
const domains = [
|
const domains = [
|
||||||
"headwaiter.trusted.msntv.msn.com",
|
"headwaiter.trusted.msntv.msn.com",
|
||||||
"*.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",
|
||||||
"login.live.com",
|
"login.live.com",
|
||||||
@@ -21,8 +24,7 @@ const domains = [
|
|||||||
"users.storage.live.com",
|
"users.storage.live.com",
|
||||||
"g.msn.com",
|
"g.msn.com",
|
||||||
"msnialogin.passport.com",
|
"msnialogin.passport.com",
|
||||||
"minisrv.local",
|
"minisrv.local"
|
||||||
"*.minisrv.local"
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const defaultCaCertPath = path.join(msnDir, 'emac.crt');
|
const defaultCaCertPath = path.join(msnDir, 'emac.crt');
|
||||||
|
|||||||
@@ -1,28 +1,29 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIErzCCA5egAwIBAgIQ/K/Ib/7QA0rO4hjgM53sGDANBgkqhkiG9w0BAQUFADB0
|
MIIE8TCCA9mgAwIBAgIQoRyc0ioSEdkYGPQxwYXUDjANBgkqhkiG9w0BAQUFADB0
|
||||||
MRkwFwYDVQQDDBBtaW5pc3J2IHNlcnZpY2VzMREwDwYDVQQIDAhOZXcgWW9yazEL
|
MRkwFwYDVQQDDBBtaW5pc3J2IHNlcnZpY2VzMREwDwYDVQQIDAhOZXcgWW9yazEL
|
||||||
MAkGA1UEBhMCVVMxHjAcBgkqhkiG9w0BCQEWD3plZmllQHplZmllLm5ldDEXMBUG
|
MAkGA1UEBhMCVVMxHjAcBgkqhkiG9w0BCQEWD3plZmllQHplZmllLm5ldDEXMBUG
|
||||||
A1UECgwOWmVmaWUgTmV0d29ya3MwIBcNMDAwMTAxMTIwMDAwWhgPMjA5OTEyMzEy
|
A1UECgwOWmVmaWUgTmV0d29ya3MwIBcNMDAwMTAxMTIwMDAwWhgPMjA5OTEyMzEy
|
||||||
MzU5NTlaMFExKTAnBgNVBAMTIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24u
|
MzU5NTlaMFExKTAnBgNVBAMTIGhlYWR3YWl0ZXIudHJ1c3RlZC5tc250di5tc24u
|
||||||
Y29tMRcwFQYDVQQKEw5aZWZpZSBOZXR3b3JrczELMAkGA1UEBhMCVVMwggEiMA0G
|
Y29tMRcwFQYDVQQKEw5aZWZpZSBOZXR3b3JrczELMAkGA1UEBhMCVVMwggEiMA0G
|
||||||
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDhh5bdTvB2q03vo/hwikBsfRt3p5Sg
|
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbEGP/jBpuLj8aDzeIzcN+HWaorttU
|
||||||
Y7N6+e+UfUK8LxZRLwLwk3TIS7LcU+RE6d8UHO8A68joX61kYggtMAGEvYC2JWGC
|
WKqF5IY5s/nRm4WHdYUaKgDf9ksBJm2+igB0XSI1d06hvrI1VkMejvJzZpq+RNJe
|
||||||
XiUb37CZBJrIMTqU+tFn2zTyCvpNBU7Pv6t/PAKPc0XztrQEZ7RmqywDMbWu2B1M
|
TqMy7cp5zPcLLymUkb8a1ziY6ZjezHMLCRyfU2zyMR3yqHCAaYP6JtEZqc3Ht4o6
|
||||||
86eil0HN4n4fGMYkVmVjkHJJYNChck+edkL4rDkKnbg4Ar37lYYHofrQDWTAW9eD
|
NfVCF4A8uynHZEGW47Iz4e6gLnzXutN7/ngDPw2hi/2XKN/E5djBg1yXHeQ+Y14n
|
||||||
QSxXBPQbbqDIDHMdXwHnfCbJZIkgQ7ClK78PN6s9DRgagvnXI8vclyW38YQ/cqlk
|
Ab0sHO4DgsUOYruTZu/TyO1A2ewpsGC40cRsbPAkeHtViOqVBUegDTfiqxbGpxaQ
|
||||||
DNkGDGcfAOg9BGtwTAUd7Bu/pAjrAR/WRY5jdv3++4/taibz5hKildA7AgMBAAGj
|
Qfdq/b8NYQmaRO/I/kH1IfYMiI+RxeBhUiBYlSEwOBNcJrc4etIzdYOVAgMBAAGj
|
||||||
ggFcMIIBWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEF
|
ggGeMIIBmjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEF
|
||||||
BQcDATCCAScGA1UdEQSCAR4wggEagiBoZWFkd2FpdGVyLnRydXN0ZWQubXNudHYu
|
BQcDATCCAWkGA1UdEQSCAWAwggFcgiBoZWFkd2FpdGVyLnRydXN0ZWQubXNudHYu
|
||||||
bXNuLmNvbYIXKi50cnVzdGVkLm1zbnR2Lm1zbi5jb22CDW1zbnR2Lm1zbi5jb22C
|
bXNuLmNvbYIZc2cxLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2cyLnRydXN0ZWQu
|
||||||
Fm1haWwuc2VydmljZXMubGl2ZS5jb22CDmxvZ2luLmxpdmUuY29tghFwb3B0aW1p
|
bXNudHYubXNuLmNvbYIZc2czLnRydXN0ZWQubXNudHYubXNuLmNvbYIZc2c0LnRy
|
||||||
emUubXNuLmNvbYIRZmF2b3JpdGVzLm1zbi5jb22CEW1lc3Nlbmdlci5tc24uY29t
|
dXN0ZWQubXNudHYubXNuLmNvbYINbXNudHYubXNuLmNvbYIWbWFpbC5zZXJ2aWNl
|
||||||
ghFsaXZlZmlsZXN0b3JlLmNvbYIWdXNlcnMuc3RvcmFnZS5saXZlLmNvbYIJZy5t
|
cy5saXZlLmNvbYIObG9naW4ubGl2ZS5jb22CEXBvcHRpbWl6ZS5tc24uY29tghFm
|
||||||
c24uY29tghdtc25pYWxvZ2luLnBhc3Nwb3J0LmNvbYINbWluaXNydi5sb2NhbIIP
|
YXZvcml0ZXMubXNuLmNvbYIRbWVzc2VuZ2VyLm1zbi5jb22CEWxpdmVmaWxlc3Rv
|
||||||
Ki5taW5pc3J2LmxvY2FsMA0GCSqGSIb3DQEBBQUAA4IBAQBRY2KlKxhVUCv0h86q
|
cmUuY29tghZ1c2Vycy5zdG9yYWdlLmxpdmUuY29tgglnLm1zbi5jb22CF21zbmlh
|
||||||
J66TAJocqyPEwnnvuEAxM209DhO84GR4+D9r+/U3aV18MN0tUEFOy/qx918zpwgC
|
bG9naW4ucGFzc3BvcnQuY29tgg1taW5pc3J2LmxvY2FsMA0GCSqGSIb3DQEBBQUA
|
||||||
kNghNmtydvW9phMFB//tX56c8UUT0rYESylKCdYDraCh9G3avI8A5hgJQCgfeUGA
|
A4IBAQBCeWJbS8JJNlC6OIgUQue4bkDk5bNDUFuktAWXqmoM7Kt4MLDB1O60ez/T
|
||||||
l0XJvc/yA3piNAPohLB1zyOBlIONLWJxI4kyKjhOM2mkIkJWmLKXOHGPnnqCUAx+
|
9cSGqU9QicSn1eL0O7ETpEPO4tSDU0KB9GnulndWbyI/OgaVOC6ON7v4Uv0z7+nw
|
||||||
+NzEZiJst22sngmHikN53zKyUfp2DO9CUY7hbjctAKo0GUC/Q0yQmL95idqnw56j
|
ninT66R+wajuSf9HyC8HA2FSMcIdiLBDtzUsSIxxG/EneEuxkBv31kQkHbWubIY4
|
||||||
Gv1deZcTth/1qUqcZRbQDT+546d87rDJLcQDXs/Q34IcmZa0v7jsIL5hJP+/PtOs
|
9SJeIF5evjQZOC3KRVlfa9nwM3qon7RUfLWF1CZlRmaFfZQf2r0cH5cVt13kyxKI
|
||||||
fpyG
|
gc8rwbGGOGsQFlw6GzGTUNQSv35xOCRNDvPtkp+dJ4GFMCbrg2OVk8n0Ecwu9jma
|
||||||
|
TSZ7B6w5w/1YzXyFlcZolxrxrupi
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
MIIEowIBAAKCAQEA4YeW3U7wdqtN76P4cIpAbH0bd6eUoGOzevnvlH1CvC8WUS8C
|
MIIEpAIBAAKCAQEAmxBj/4wabi4/Gg83iM3Dfh1mqK7bVFiqheSGObP50ZuFh3WF
|
||||||
8JN0yEuy3FPkROnfFBzvAOvI6F+tZGIILTABhL2AtiVhgl4lG9+wmQSayDE6lPrR
|
GioA3/ZLASZtvooAdF0iNXdOob6yNVZDHo7yc2aavkTSXk6jMu3Kecz3Cy8plJG/
|
||||||
Z9s08gr6TQVOz7+rfzwCj3NF87a0BGe0ZqssAzG1rtgdTPOnopdBzeJ+HxjGJFZl
|
Gtc4mOmY3sxzCwkcn1Ns8jEd8qhwgGmD+ibRGanNx7eKOjX1QheAPLspx2RBluOy
|
||||||
Y5BySWDQoXJPnnZC+Kw5Cp24OAK9+5WGB6H60A1kwFvXg0EsVwT0G26gyAxzHV8B
|
M+HuoC5817rTe/54Az8NoYv9lyjfxOXYwYNclx3kPmNeJwG9LBzuA4LFDmK7k2bv
|
||||||
53wmyWSJIEOwpSu/DzerPQ0YGoL51yPL3Jclt/GEP3KpZAzZBgxnHwDoPQRrcEwF
|
08jtQNnsKbBguNHEbGzwJHh7VYjqlQVHoA034qsWxqcWkEH3av2/DWEJmkTvyP5B
|
||||||
Hewbv6QI6wEf1kWOY3b9/vuP7Wom8+YSopXQOwIDAQABAoIBAGQK4Q3f2ARUHhjZ
|
9SH2DIiPkcXgYVIgWJUhMDgTXCa3OHrSM3WDlQIDAQABAoIBABsMUiEgp3iaLQwm
|
||||||
HDpT4ZsebiJIaMIzJ+k72J5+aC2RF63AlGXCi3HUPo3E+wPk2KuT4COA9Fi8JG7c
|
5N1CZSwhxUc9zwjouYAHA4nbtMNFEVb2XywX8RSgAefWs/R1XoxttXqlj8wDd1L5
|
||||||
m7Lr0iifZWqnL1eEyqJQOobOR5jZWZq/nkebMiPSYdDrs1ettvYUWTBoGpYvLDCu
|
89XIAg8yseHoH9ju9yU6WOQDpoEnLiXaAX+VVKxJrQ6KE7Q0V++Lzhh2DF8IVi10
|
||||||
DhTjBn2OPgFG5cx+YxTZUvvw5jCFV7u7CDzC3dD/KvPuGdQPOjBnFM9p9NL7AfRw
|
Gl8fd8B1/+zrPVuXj2tCra4KSMiclRBEvj0DjMlCHzR+JXDU8AVDg8KVi7ZQeKkx
|
||||||
qOF4lw5M8ZT9caDuM/J77MuPXLVh5p6LlV9auVeo3s03E7BOw6Iutje0ZcBqKkjr
|
kYEFzEwtzuOEOZQte7I1mqZ6Uns5tnpkcJISS9p8OzOK8+FvQY+w/Ya1g5bS8wXk
|
||||||
lDV1QPkXCbbywW1YQDVv1kv9KgAEG1ftbGzq1REEX8SxNWDSzHl1Q04erqsJAI2y
|
e56UtjZ33myUzwaVUEIBqSXEsAAFvnvvvv95LQPd0CRppOJWxGPcFTrW9Lsc38Ex
|
||||||
eO4RRVUCgYEA/8vgxZAF38605YPcddSzYzQLLABbQJP+1LFXM8fjpI7I5kb34QNN
|
5k/0TOkCgYEAzaF/j6de4dq7r5WMk+ZYOWJpoT56SEJiEPhOCOZEA0eiBhKpwsE7
|
||||||
YY6tjhuha9fyOdFTZb3Qj5bA661Hh26BCwA9mc/X/49SJqzriQiZt9ZXVJ3ri8Xv
|
U/qOYaJdS8nR5XPz9H5fNn0cs+1f4Em6vUSHZHfSJ20ovwxH4Dgoa4MTJg7dRe4H
|
||||||
N6N87ELr0uneVeP2zzjJS3E9G2fGqb2ZnRV3sdKpW2m+BNgOEmSdFrUCgYEA4bWL
|
Bw9PQLSy8EIYYjjmbHbTNvdx947eW3SCqEE+hKPhuI0vHTYA19gLIckCgYEAwQv/
|
||||||
RhrnN9ZNHWRQTLZSX1ixb9HtFV9AbiPrVPbmzLiqmoV/kppIinr94T3ymlygBTBS
|
E8qNkXhJg5vCUrWXWyi1BOF5pHMLE2YY4S5744w5fy4rQ7Squrx22nE8pvSmNOs+
|
||||||
mowlQViQbEfivmG12QNIs3W3nxBc2jw7vz3XYA/TANdQeNCW5mmgdKGN8IukVLHe
|
2ZMk9J2RKry6ZHG6tx8mlstHJFdkVUeYo4Dx6K5C0YH5+0j6VLEdnRPt5gCDhOAp
|
||||||
tO4Vu5L7lOck+W+LYVgOTgp/c5tFSMPKB4COMS8CgYBbtfRDwQxqHsl61JkRYg5j
|
l/vmMK3vaPwm3sN9k1dvfS6Nu6HKf3dF+U7PmW0CgYEAx11xA6JOR8N+fLoN1cda
|
||||||
DgDHaOVOtQETrvWN6ifzEwJylZVABpgS1z3gioWIjecZ1bQp8TE6mhlXJkxUAUmg
|
eiiEKSUeAbj6w2E6pz45asSkviaSGJSoJL+kE90Lf1NpAYHuYHm1bmrWzUuzzQ0u
|
||||||
8Rgk8oEF7pPMrAjSm9PJNr8e5nPSLEhFUYdzidbVSuZdMxuFVl3Nf68iCUYQC5ts
|
1BoA+tOBGWCoRLJvbWCFL9ehVSDMP+SLQ7kAKcgIRRCP+4sXPMnn9j7qbA5EX38S
|
||||||
14qPpfD0hmgLgo8hBxPPVQKBgEfy0gmv68K92mkjIAHEIK/qGu21MmkcqvIxGwRD
|
vnajWo5ZZkjcCQI2xw5bnKECgYBkxQBXsmoHv4SQYKQlTIk/mpYzgAdhYnQroiXm
|
||||||
jED4INIO+iKmcbdLC4DweVRBcHUW+U3wnLOe4rLRm3LqvMgHpvYl8TmQQrkCeF02
|
lb8x3qa8zrri0tI0O+DG0klY1WhVQ19Bb9/gmMeISY/6kqtmn6ojGOWAAOZs5by1
|
||||||
/l/Ny4o6GJnajC+4vgBPu2pRaTniVUbBmkXnzbCimgO1Te3i3vR7njMg7M4MM2t+
|
zL96OEzE1FZLZ6LUxsewkRCj+SyuFd1gaquUSZcpdEZODjnkycV20PBHO4Na2kX6
|
||||||
zFTbAoGBAKh9KJs6t6K6bK4I7L7zmRME4L7TCvzXfnqTJHYjXUIuAPDqTaNZAgCd
|
h7syWQKBgQC8SNTXuawSYMH8KZk8WmxgejSz1t67CkZduhErKzci8iuR+WKtB24J
|
||||||
pV45DfUWIIAis/RswLuR3yT6aH3Wpxx7fTW/DTInvBKfU7Kw2Oyko1jWboS/2E3D
|
EvAWfMeWUTW5vGokHJrillrrWdw1J7QivcxXXZ48GNQKxbXFUY4KBB67v8wIu0lq
|
||||||
0HWVZzdbU4Hj48XGeldjgPV0D1/vr1JRTYJGXtjcNDkRMk3U3xrT
|
O+tlfmj14IJeXc4u1S/I5lSKnG+niIBYzqXeyxNWwd4H1zncP+dssg==
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
|||||||
Reference in New Issue
Block a user