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 aa18acfb..c3aeaf08 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
@@ -48,18 +48,24 @@ else {
var limitedLogin = ssid_sessions[socket.ssid].lockdown;
var limitedLoginRegistered = (limitedLogin || (ssid_sessions[socket.ssid].isRegistered() && !ssid_sessions[socket.ssid].isUserLoggedIn()));
var offline_user_list = null;
- if (ssid_sessions[socket.ssid].isRegistered() && ssid_sessions[socket.ssid].user_id == 0) {
- var accounts = ssid_sessions[socket.ssid].listPrimaryAccountUsers();
- var num_accounts = ssid_sessions[socket.ssid].getNumberOfUserAccounts();
- var offline_user_list_str = "\n";
- var i = 0;
- Object.keys(accounts).forEach((k) => {
- var account_display_name = (accounts[k].subscriber_name) ? accounts[k].subscriber_name : accounts[k].subscriber_username
- offline_user_list_str += "\t" + '' + "\n";
- i++;
- });
- offline_user_list_str += "\n";
- offline_user_list = CryptoJS.enc.Latin1.parse(offline_user_list_str).toString(CryptoJS.enc.Base64);
+ 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 num_accounts = ssid_sessions[socket.ssid].getNumberOfUserAccounts();
+ var offline_user_list_str = "\n";
+ var i = 0;
+ Object.keys(accounts).forEach((k) => {
+ var account_display_name = (accounts[k].subscriber_name) ? accounts[k].subscriber_name : accounts[k].subscriber_username
+ offline_user_list_str += "\t" + '' + "\n";
+ i++;
+ });
+ offline_user_list_str += "\n";
+ offline_user_list = CryptoJS.enc.Latin1.parse(offline_user_list_str).toString(CryptoJS.enc.Base64);
+ }
}
if (limitedLoginRegistered) {
diff --git a/zefie_wtvp_minisrv/WTVClientSessionData.js b/zefie_wtvp_minisrv/WTVClientSessionData.js
index 71d7d8fd..fd12d91b 100644
--- a/zefie_wtvp_minisrv/WTVClientSessionData.js
+++ b/zefie_wtvp_minisrv/WTVClientSessionData.js
@@ -25,6 +25,7 @@ class WTVClientSessionData {
baddisk = false;
clientAddress = null;
user_id = 0;
+ cryptoKey = "PNa$WN7gz}!T=t6X7^=|Ii##CEB~p\EP";
constructor(minisrv_config, ssid) {
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) {
var encoded_passwd = CryptoJS.SHA512(passwd);
return encoded_passwd.toString(CryptoJS.enc.Base64);
}
+ generatePassword(len) {
+ return CryptoJS.lib.WordArray.random(len).toString(CryptoJS.enc.Hex);
+ }
+
setUserPassword(passwd) {
var encoded_passwd = this.encodePassword(passwd);
this.setSessionData("subscriber_password", encoded_passwd);
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() {
this.setSessionData("subscriber_password", null);
this.saveSessionData();