From af34d66488ae5c51b81cea20fd77a2755fd867aa Mon Sep 17 00:00:00 2001 From: zefie Date: Thu, 10 Feb 2022 00:54:40 -0500 Subject: [PATCH] hopefully fix things this time --- zefie_wtvp_minisrv/WTVClientSessionData.js | 2 +- zefie_wtvp_minisrv/WTVMail.js | 27 +++++++++++++--------- zefie_wtvp_minisrv/WTVRegister.js | 19 +++++++-------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVClientSessionData.js b/zefie_wtvp_minisrv/WTVClientSessionData.js index 662f6292..17889d95 100644 --- a/zefie_wtvp_minisrv/WTVClientSessionData.js +++ b/zefie_wtvp_minisrv/WTVClientSessionData.js @@ -51,7 +51,7 @@ class WTVClientSessionData { this.loginWhitelist = Object.assign([], this.lockdownWhitelist); // clone lockdown whitelist into login whitelist this.loginWhitelist.push("wtv-head-waiter:/choose-user"); this.loginWhitelist.push("wtv-head-waiter:/password"); - this.mailstore = new WTVMail(minisrv_config, ssid, this); + this.mailstore = new WTVMail(minisrv_config, this); } diff --git a/zefie_wtvp_minisrv/WTVMail.js b/zefie_wtvp_minisrv/WTVMail.js index 2ecf7ddc..42729283 100644 --- a/zefie_wtvp_minisrv/WTVMail.js +++ b/zefie_wtvp_minisrv/WTVMail.js @@ -21,7 +21,7 @@ class WTVMail { msgFileExt = ".zmsg"; trashMailboxName = "Trash"; - constructor(minisrv_config, ssid, wtvclient) { + constructor(minisrv_config, wtvclient) { if (!minisrv_config) throw ("minisrv_config required"); var WTVShared = require('./WTVShared.js')['WTVShared']; var WTVMime = require('./WTVMime.js'); @@ -31,7 +31,8 @@ class WTVMail { this.wtvmime = new WTVMime(minisrv_config); this.wtvclient = wtvclient; this.is_guest = !this.wtvclient.isRegistered(); - this.ssid = ssid; + this.ssid = wtvclient.ssid; + console.log(this.ssid); this.unread_mail = this.wtvclient.getSessionData("subscriber_unread_mail") ? this.wtvclient.getSessionData("subscriber_unread_mail") : 0; this.mailboxes = [ // referenced by id, so order is important! @@ -291,22 +292,25 @@ class WTVMail { } checkUserExists(username, directory = null) { - // returns the user's username if true, false if not + // returns the user's ssid, and user_id and userid in an array if true, false if not var username_match = false; - var search_dir = this.session_store_dir; + var search_dir = this.minisrv_config.config.SessionStore; var return_val = false; var self = this; if (directory) search_dir = directory; this.fs.readdirSync(search_dir).forEach(file => { - if (self.fs.lstatSync(search_dir + self.path.sep + file).isDirectory()) { - return self.checkUserExists(username, search_dir + self.path.sep + file); + if (self.fs.lstatSync(search_dir + self.path.sep + file).isDirectory() && !return_val) { + return_val = self.checkUserExists(username, search_dir + self.path.sep + file); } if (!file.match(/.*\.json/ig)) return; if (username_match) return; try { - var temp_session_data_file = this.fs.readFileSync(search_dir + this.path.sep + file, 'Utf8'); + var temp_session_data_file = self.fs.readFileSync(search_dir + self.path.sep + file, 'Utf8'); var temp_session_data = JSON.parse(temp_session_data_file); - if (temp_session_data.subscriber_username.toLowerCase() == username.toLowerCase()) return_val = temp_session_data.subscriber_username; + if (temp_session_data.subscriber_username.toLowerCase() == username.toLowerCase()) { + username_match = true; + return_val = search_dir.replace(this.minisrv_config.config.SessionStore + self.path.sep, '').replace("user",'').split(self.path.sep); + } } catch (e) { console.error(" # Error parsing Session Data JSON", file, e); username_match = true; @@ -316,9 +320,10 @@ class WTVMail { } getUserMailstore(username) { - var ssid = this.checkUserExists(username); - if (ssid) { - var user_wtvsession = new this.WTVClientSessionData(this.minisrv_config, ssid); + var user_data = this.checkUserExists(username); + if (user_data) { + var user_wtvsession = new this.WTVClientSessionData(this.minisrv_config, user_data[0]); + user_wtvsession.user_id = user_data[1]; var user_mailstore = new WTVMail(this.minisrv_config, ssid, user_wtvsession) return user_mailstore; } diff --git a/zefie_wtvp_minisrv/WTVRegister.js b/zefie_wtvp_minisrv/WTVRegister.js index 8421e1b5..6c54f396 100644 --- a/zefie_wtvp_minisrv/WTVRegister.js +++ b/zefie_wtvp_minisrv/WTVRegister.js @@ -28,26 +28,22 @@ class WTVRegister { return (check1 && check2); } + checkUsernameAvailable(username, directory = null) { + // returns the user's ssid, and user_id and userid in an array if true, false if not var username_match = false; - var search_dir = this.session_store_dir; + var search_dir = this.minisrv_config.config.SessionStore; + var return_val = false; var self = this; if (directory) search_dir = directory; this.fs.readdirSync(search_dir).forEach(file => { - if (self.fs.lstatSync(search_dir + self.path.sep + file).isDirectory()) { - return self. - - - - - - - (username, search_dir + self.path.sep + file); + if (self.fs.lstatSync(search_dir + self.path.sep + file).isDirectory() && !return_val) { + return_val = self.checkUsernameAvailable(username, search_dir + self.path.sep + file); } if (!file.match(/.*\.json/ig)) return; if (username_match) return; try { - var temp_session_data_file = this.fs.readFileSync(search_dir + this.path.sep + file, 'Utf8'); + var temp_session_data_file = self.fs.readFileSync(search_dir + self.path.sep + file, 'Utf8'); var temp_session_data = JSON.parse(temp_session_data_file); if (temp_session_data.subscriber_username.toLowerCase() == username.toLowerCase()) username_match = true; } catch (e) { @@ -58,6 +54,7 @@ class WTVRegister { return !username_match; } + /** * Generations regnstration template * @param {string} title HTML Page Title