generate subscriber_smtp_password on login-stage-two (for future use)

This commit is contained in:
zefie
2022-09-24 23:32:05 -04:00
parent 5c2dd0d5a5
commit 08c47586a7
2 changed files with 41 additions and 12 deletions

View File

@@ -48,7 +48,12 @@ else {
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].isUserLoggedIn())); 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()) {
// check for SMTP Password
if (ssid_sessions[socket.ssid].getSessionData("subscriber_smtp_password") === null) {
ssid_sessions[socket.ssid].setUserSMTPPassword(ssid_sessions[socket.ssid].generatePassword(16));
}
if (ssid_sessions[socket.ssid].user_id == 0) {
var accounts = ssid_sessions[socket.ssid].listPrimaryAccountUsers(); var accounts = ssid_sessions[socket.ssid].listPrimaryAccountUsers();
var num_accounts = ssid_sessions[socket.ssid].getNumberOfUserAccounts(); var num_accounts = ssid_sessions[socket.ssid].getNumberOfUserAccounts();
var offline_user_list_str = "<user-list>\n"; var offline_user_list_str = "<user-list>\n";
@@ -61,6 +66,7 @@ else {
offline_user_list_str += "</user-list>\n"; offline_user_list_str += "</user-list>\n";
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) { if (limitedLoginRegistered) {
home_url = "wtv-head-waiter:/password?"; home_url = "wtv-head-waiter:/password?";

View File

@@ -25,6 +25,7 @@ class WTVClientSessionData {
baddisk = false; baddisk = false;
clientAddress = null; clientAddress = null;
user_id = 0; user_id = 0;
cryptoKey = "PNa$WN7gz}!T=t6X7^=|Ii##CEB~p\EP";
constructor(minisrv_config, ssid) { constructor(minisrv_config, ssid) {
if (!minisrv_config) throw ("minisrv_config required"); if (!minisrv_config) throw ("minisrv_config required");
@@ -405,17 +406,39 @@ class WTVClientSessionData {
} }
} }
encryptPassword(passwd) {
return CryptoJS.AES.encrypt(passwd, this.cryptoKey).toString();
}
decryptPassword(crypt) {
return CryptoJS.AES.decrypt(crypt, this.cryptoKey).toString(CryptoJS.enc.Utf8);
}
encodePassword(passwd) { encodePassword(passwd) {
var encoded_passwd = CryptoJS.SHA512(passwd); var encoded_passwd = CryptoJS.SHA512(passwd);
return encoded_passwd.toString(CryptoJS.enc.Base64); return encoded_passwd.toString(CryptoJS.enc.Base64);
} }
generatePassword(len) {
return CryptoJS.lib.WordArray.random(len).toString(CryptoJS.enc.Hex);
}
setUserPassword(passwd) { setUserPassword(passwd) {
var encoded_passwd = this.encodePassword(passwd); var encoded_passwd = this.encodePassword(passwd);
this.setSessionData("subscriber_password", encoded_passwd); this.setSessionData("subscriber_password", encoded_passwd);
this.saveSessionData(); this.saveSessionData();
} }
setUserSMTPPassword(passwd) {
var encoded_passwd = this.encryptPassword(passwd);
this.setSessionData("subscriber_smtp_password", encoded_passwd);
this.saveSessionData();
}
getUserSMTPPassword() {
return this.decryptPassword(this.setSessionData("subscriber_smtp_password"))
}
disableUserPassword() { disableUserPassword() {
this.setSessionData("subscriber_password", null); this.setSessionData("subscriber_password", null);
this.saveSessionData(); this.saveSessionData();