fix login, probably break 5 other things

This commit is contained in:
zefie
2022-02-16 20:07:35 -05:00
parent 2a526c0702
commit 0a00e34537
6 changed files with 32 additions and 20 deletions

View File

@@ -46,20 +46,20 @@ wtv-visit: client:hangupphone`
} }
} }
if (user_id && !request_headers.query.initial_login && !request_headers.query.user_login) { if (user_id != null && !request_headers.query.initial_login && !request_headers.query.user_login) {
if (request_headers.query.password == "") { if (request_headers.query.password == "") {
headers = `500 Please enter your password and try again headers = `403 Please enter your password and try again
minisrv-no-mail-count: true minisrv-no-mail-count: true
`; `;
} else if (ssid_sessions[socket.ssid].validateUserPassword(request_headers.query.password)) { } else if (ssid_sessions[socket.ssid].validateUserPassword(request_headers.query.password)) {
ssid_sessions[socket.ssid].setSessionData('password_valid', true) ssid_sessions[socket.ssid].setUserLoggedIn(true);
headers = `200 OK headers = `200 OK
minisrv-no-mail-count: true minisrv-no-mail-count: true
Content-Type: text/html Content-Type: text/html
wtv-visit: ${gourl} wtv-visit: ${gourl}
`; `;
} else { } else {
headers = `500 The password you entered was incorrect. Please retype it and try again. headers = `403 The password you entered was incorrect. Please retype it and try again.
minisrv-no-mail-count: true minisrv-no-mail-count: true
`; `;
} }

View File

@@ -2,6 +2,7 @@ var minisrv_service_file = true;
var gourl = null; var gourl = null;
if (!ssid_sessions[socket.ssid].isRegistered() && (!request_headers.query.guest_login || !minisrv_config.config.allow_guests)) gourl = "wtv-register:/splash?"; if (!ssid_sessions[socket.ssid].isRegistered() && (!request_headers.query.guest_login || !minisrv_config.config.allow_guests)) gourl = "wtv-register:/splash?";
var home_url = "wtv-home:/home?";
if (gourl) { if (gourl) {
headers = `200 OK headers = `200 OK
@@ -30,8 +31,8 @@ else {
var userid = '1' + Math.floor(Math.random() * 1000000000000000000); var userid = '1' + Math.floor(Math.random() * 1000000000000000000);
var messenger_enabled = 0; var messenger_enabled = 0;
var messenger_authorized = 0; var messenger_authorized = 0;
if (request_headers.query.skip_splash) var home_url = "wtv-home:/home?"; if (request_headers.query.skip_splash) gourl = "wtv-home:/home?";
else var home_url = "wtv-home:/splash?"; else gourl = "wtv-home:/splash?";
} else if (!ssid_sessions[socket.ssid].getSessionData("registered")) { } else if (!ssid_sessions[socket.ssid].getSessionData("registered")) {
var errpage = wtvshared.doErrorPage(400); var errpage = wtvshared.doErrorPage(400);
headers = errpage[0]; headers = errpage[0];
@@ -42,10 +43,10 @@ else {
var human_name = ssid_sessions[socket.ssid].getSessionData("subscriber_name") || nickname; var human_name = ssid_sessions[socket.ssid].getSessionData("subscriber_name") || nickname;
var messenger_enabled = ssid_sessions[socket.ssid].getSessionData("messenger_enabled") || 0; var messenger_enabled = ssid_sessions[socket.ssid].getSessionData("messenger_enabled") || 0;
var messenger_authorized = ssid_sessions[socket.ssid].getSessionData("messenger_authorized") || 0; var messenger_authorized = ssid_sessions[socket.ssid].getSessionData("messenger_authorized") || 0;
var home_url = "wtv-home:/splash?"; var gourl = "wtv-home:/splash?";
} }
var limitedLogin = ssid_sessions[socket.ssid].lockdown; var limitedLogin = ssid_sessions[socket.ssid].lockdown;
var limitedLoginRegistered = (limitedLogin || (ssid_sessions[socket.ssid].isRegistered() && !ssid_sessions[socket.ssid].getSessionData('password_valid'))); var limitedLoginRegistered = (limitedLogin || (ssid_sessions[socket.ssid].isRegistered() && !ssid_sessions[socket.ssid].isUserLoggedIn()));
var offline_user_list = null; var offline_user_list = null;
if (ssid_sessions[socket.ssid].isRegistered() && ssid_sessions[socket.ssid].user_id == 0) { if (ssid_sessions[socket.ssid].isRegistered() && ssid_sessions[socket.ssid].user_id == 0) {
var accounts = ssid_sessions[socket.ssid].listPrimaryAccountUsers(); var accounts = ssid_sessions[socket.ssid].listPrimaryAccountUsers();
@@ -61,7 +62,10 @@ else {
offline_user_list = CryptoJS.enc.Latin1.parse(offline_user_list_str).toString(CryptoJS.enc.Base64); offline_user_list = CryptoJS.enc.Latin1.parse(offline_user_list_str).toString(CryptoJS.enc.Base64);
} }
if (limitedLoginRegistered) var home_url = "wtv-head-waiter:/password?"; if (limitedLoginRegistered) {
home_url = "wtv-head-waiter:/password?";
gourl = home_url;
}
data = ''; data = '';
@@ -70,7 +74,7 @@ Connection: Keep-Alive
wtv-expire-all: wtv-head-waiter: wtv-expire-all: wtv-head-waiter:
`; `;
if (!limitedLogin) { if (!limitedLogin && !limitedLoginRegistered) {
headers += `wtv-client-time-zone: GMT -0000 headers += `wtv-client-time-zone: GMT -0000
wtv-client-time-dst-rule: GMT wtv-client-time-dst-rule: GMT
wtv-client-date: `+ strftime("%a, %d %b %Y %H:%M:%S", new Date(new Date().toUTCString())) + ` GMT wtv-client-date: `+ strftime("%a, %d %b %Y %H:%M:%S", new Date(new Date().toUTCString())) + ` GMT
@@ -84,7 +88,7 @@ wtv-smartcard-inserted-message: Contacting service
wtv-ssl-timeout: 240 wtv-ssl-timeout: 240
wtv-login-timeout: 7200 wtv-login-timeout: 7200
`; `;
if (!limitedLogin) { if (!limitedLogin && !limitedLoginRegistered) {
ssid_sessions[socket.ssid].assignMailStore(); ssid_sessions[socket.ssid].assignMailStore();
headers += getServiceString('all', { "exceptions": ["wtv-register"] }); headers += getServiceString('all', { "exceptions": ["wtv-register"] });
if (offline_user_list) headers += "wtv-offline-user-list: " + offline_user_list + "\n"; if (offline_user_list) headers += "wtv-offline-user-list: " + offline_user_list + "\n";
@@ -109,7 +113,7 @@ wtv-messenger-enable: 0
wtv-ssl-log-url: wtv-log:/log wtv-ssl-log-url: wtv-log:/log
`; `;
if (!limitedLogin) { if (!limitedLogin && !limitedLoginRegistered) {
headers += `wtv-bypass-proxy: false headers += `wtv-bypass-proxy: false
user-id: ${userid} user-id: ${userid}
wtv-human-name: ${human_name} wtv-human-name: ${human_name}
@@ -134,7 +138,7 @@ wtv-inactive-timeout: 1440
} }
*/ */
if (!limitedLogin) { if (!limitedLogin && !limitedLoginRegistered) {
headers += "\nwtv-relogin-url: wtv-head-waiter:/relogin?relogin=true"; headers += "\nwtv-relogin-url: wtv-head-waiter:/relogin?relogin=true";
if (request_headers.query.guest_login) headers += "&guest_login=true"; if (request_headers.query.guest_login) headers += "&guest_login=true";
@@ -146,10 +150,10 @@ wtv-inactive-timeout: 1440
headers += "\nwtv-home-url: " + home_url; headers += "\nwtv-home-url: " + home_url;
} }
if (ssid_sessions[socket.ssid].get('wtv-need-upgrade') != 'true' && !request_headers.query.reconnect && !limitedLogin) if (ssid_sessions[socket.ssid].get('wtv-need-upgrade') != 'true' && !request_headers.query.reconnect && !limitedLogin && !limitedLoginRegistered)
headers += "\nwtv-settings-url: wtv-setup:/get\n"; headers += "\nwtv-settings-url: wtv-setup:/get\n";
if (!limitedLogin) { if (!limitedLogin && !limitedLoginRegistered) {
headers += `wtv-force-lightweight-targets: webtv.net:/ headers += `wtv-force-lightweight-targets: webtv.net:/
wtv-show-time-enabled: true wtv-show-time-enabled: true
wtv-allow-dsc: true wtv-allow-dsc: true
@@ -161,6 +165,6 @@ wtv-wink-deferrer-retries: 3
wtv-name-server: 8.8.8.8`; wtv-name-server: 8.8.8.8`;
} }
} }
if (!request_headers.query.reconnect) headers += "\nwtv-visit: " + home_url; if (!request_headers.query.reconnect) headers += "\nwtv-visit: " + gourl;
headers += "\nContent-Type: text/html"; headers += "\nContent-Type: text/html";
} }

View File

@@ -1,4 +1,5 @@
var minisrv_service_file = true; var minisrv_service_file = true;
ssid_sessions[socket.ssid].setUserLoggedIn(false);
var challenge_response, challenge_header = ""; var challenge_response, challenge_header = "";
if (socket.ssid !== null) ssid_sessions[socket.ssid].switchUserID(0); if (socket.ssid !== null) ssid_sessions[socket.ssid].switchUserID(0);

View File

@@ -1,4 +1,5 @@
var minisrv_service_file = true; var minisrv_service_file = true;
ssid_sessions[socket.ssid].setUserLoggedIn(false);
var gourl = "wtv-1800:/preregister?"; var gourl = "wtv-1800:/preregister?";
if (request_headers.query.relogin) gourl += "relogin=true"; if (request_headers.query.relogin) gourl += "relogin=true";

View File

@@ -45,9 +45,10 @@ class WTVClientSessionData {
"wtv-head-waiter:/relogin", "wtv-head-waiter:/relogin",
"wtv-head-waiter:/ROMCache/Spacer.gif", "wtv-head-waiter:/ROMCache/Spacer.gif",
"wtv-head-waiter:/ROMCache/NameStrip.gif", "wtv-head-waiter:/ROMCache/NameStrip.gif",
"wtv-head-waiter:/images/PasswordBanner.gif",
"wtv-head-waiter:/ROMCache/UtilityBullet.gif",
"wtv-head-waiter:/images/NameBanner.gif", "wtv-head-waiter:/images/NameBanner.gif",
"wtv-head-waiter:/bad-disk", "wtv-head-waiter:/bad-disk",
"wtv-head-waiter:/images/PasswordBanner.gif",
"wtv-log:/log", "wtv-log:/log",
]; ];
this.lockdownWhitelist.push(minisrv_config.config.unauthorized_url); this.lockdownWhitelist.push(minisrv_config.config.unauthorized_url);
@@ -402,10 +403,14 @@ class WTVClientSessionData {
isUserLoggedIn() { isUserLoggedIn() {
if (!this.getUserPasswordEnabled()) return true; // no password is set so always validate if (!this.getUserPasswordEnabled()) return true; // no password is set so always validate
var password_valid = this.getSessionData("password_valid"); var password_valid = this.get("password_valid");
return (password_valid); return (password_valid);
} }
setUserLoggedIn(value) {
return this.set("password_valid", value);
}
saveSessionData(force_write = false, skip_merge = false) { saveSessionData(force_write = false, skip_merge = false) {
if (this.isRegistered()) { if (this.isRegistered()) {
if (!skip_merge) { if (!skip_merge) {

View File

@@ -412,7 +412,7 @@ async function processURL(socket, request_headers) {
return; return;
} }
if (ssid_sessions[socket.ssid].isRegistered() && !ssid_sessions[socket.ssid].getSessionData('password_valid')) { if (ssid_sessions[socket.ssid].isRegistered() && !ssid_sessions[socket.ssid].isUserLoggedIn()) {
if (!ssid_sessions[socket.ssid].isAuthorized(shortURL,'login')) { if (!ssid_sessions[socket.ssid].isAuthorized(shortURL,'login')) {
// user is not fully logged in, and URL not authorized // user is not fully logged in, and URL not authorized
headers = "300 Unauthorized\n"; headers = "300 Unauthorized\n";
@@ -1112,7 +1112,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq
ssid_sessions[socket.ssid].switchUserID(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_store.user_id, true, false); ssid_sessions[socket.ssid].switchUserID(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_store.user_id, true, false);
} }
} else { } else {
if (ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 != headers["wtv-ticket"]) if (ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 != headers["wtv-ticket"]) {
if (!ssid_sessions[socket.ssid].data_store.wtvsec_login.update_ticket) { if (!ssid_sessions[socket.ssid].data_store.wtvsec_login.update_ticket) {
if (minisrv_config.config.debug_flags.debug) console.log(" # New ticket from client"); if (minisrv_config.config.debug_flags.debug) console.log(" # New ticket from client");
ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 = headers["wtv-ticket"]; ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_b64 = headers["wtv-ticket"];
@@ -1123,6 +1123,7 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq
switchUserID(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_store.user_id, true, false); switchUserID(ssid_sessions[socket.ssid].data_store.wtvsec_login.ticket_store.user_id, true, false);
} }
} }
}
} }
} }
} }