From ccf48f3093ae98f34a79266822ac57544d92ac11 Mon Sep 17 00:00:00 2001 From: zefie Date: Thu, 10 Feb 2022 12:11:30 -0500 Subject: [PATCH] some more mail stuff --- .../wtv-mail/ROMCache/DottedLine.gif | Bin 0 -> 98 bytes .../wtv-mail/ROMCache/PaperBase.gif | Bin 0 -> 186 bytes .../wtv-mail/ROMCache/PaperTop.gif | Bin 0 -> 1104 bytes .../ServiceVault/wtv-mail/listmail.js | 4 +- .../ServiceVault/wtv-mail/readmail.js | 2 +- .../ServiceVault/wtv-mail/sendmail.js | 577 +++++++++++------- zefie_wtvp_minisrv/WTVMail.js | 50 +- 7 files changed, 400 insertions(+), 233 deletions(-) create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/DottedLine.gif create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperBase.gif create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTop.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/DottedLine.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/DottedLine.gif new file mode 100644 index 0000000000000000000000000000000000000000..c84ea2e839c03b4138f77a73373ecb0788094573 GIT binary patch literal 98 zcmZ?wbhEHbtYc(iXkcIv6ckiZQBnNK!pOkD$e_aj1Rxm(CQBBfwprI-&*%}k)&BhI z&TnrElRTQ9wf8NbHSO)IO+`M3zjdFVFz@=`v)sR04lLZ*@kg`sbh7bD5ite^YXI+z BCo%v4 literal 0 HcmV?d00001 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperBase.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperBase.gif new file mode 100644 index 0000000000000000000000000000000000000000..34c5d31e9026e7303ab6c9659cafebd0210b2c61 GIT binary patch literal 186 zcmZ?wbh9u|T*k=8aEO7y(9lp)Qc_%8Tv%9`pP!$bo0|a)bU-9X4FhvK$JRUl3{H8j z-fQvt?C$>w8ht5|g3Sr*a$fH%&^cf7c7f9ZZsx@Q2No1~=twDB#5TBRSk1q%qQq-$ z)cPB1%1*zn+W%lfg^%9s^H-)!GSAq3|HF9T2@4AuY(K2bsd literal 0 HcmV?d00001 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTop.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTop.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e22e0de44ade27714b946711b679b64b0e98560 GIT binary patch literal 1104 zcmV-W1h4x?Nk%v~VWt5Z0E7SlJ3BiwGcz$UF)b}ECnqN(BO@UpAs-(f9UUDT8yguJ z85b896B82+4Gjea1$14 zI2aFzL_)z-ESk?}b4smRuh^`1%k5@w;IMd1E}PHifO^etQ{EKyNcZyziN@s8%kTUD zfC?f(goTEOh>41ejE#YfNwTELlk)zUZCZxUf;l3y@*p@+@ZhzE4j(*(7~$JQ6raTXC|C{| zl631pdJ&1Tsne%WqdMBxuWG;}MiL}ZfS@J-2@D}T82fNr&r}DiojL_4jvN85MD*w} z&M1Pr9+fs>Dz&fQzko?9Q|9cdR$B?6jRNp+tYe4VQn@O{_D!l)tJYeZ;5M!(QFWjd zIFk1d-@vF-t6m+c-{8T8vFc&6Ab|k_2f^laOctWgHE%duvxXUSHf+T+3$I2Y6kP%Z zf}s1ti?#LZ*jK;a&N3fXB(@eX;L3x-Lb1GcLXN;n`0%!yQK|a+?YK7j^)G|7Ca%Jj z)7b?m;DAnX$Imm($o{s6c;g*_TL9;!r=D-$q{3EZ@Lf1xLiQ=t69q+BU(Yt39m3lj{)IGzF(jIxk~y-`>pE3ClhC?=`olEoOf;yI)( z!Jv!`EMUO^6X2wigkf=W){gHn7e_0t2ylS|4m3dHkxaJf=9|FqGsH74ZneOa4KUC^ z16B@TUPD`^S5`#X6xWs<44{c71O8D#BAk#$Dk&mz&RJ)8RmQmIo);|OAO+eq##>no zb+}^zilW&-1u;so%cQWzDytAG`s1BUQf8_trx$b@9YVU{IA~AUq`D{pc~;59qq8>a zY?8I&bJbQ(*i5Ns0~cW1D+37>04h%CjS9g4#yY@gws}6m?6d5)YvOhZW<{H|oAzq2 zxm_Iu?pQ;ndcnEb#`vnc1Q!hLGTphjhpyN1dT*Kv;6{P5+g5;WvJ0$h@WvdcW*~xw zNlCA^_V!w?y$e*(>z-9=-0{mW|0SoiQO+x)!zGu@r^V>DjAYC}2d$lovC)F*uJx|m zYsxF9>$1>LM{QEHE#|S{$eX6DZL3d9?e*96P<<<2)lyld$}9T}_S$S0ICH$ 0) { - message_list_string = total_unread_message_count + " new mail message" + ((total_message_count != 1) ? 's' : '') + ", " + total_message_count + " mail message" + ((total_message_count != 1) ? 's' : '') + " for "; + message_list_string = total_unread_message_count + " new mail message" + ((total_message_count != 1) ? 's' : ''); + if (total_message_count - total_unread_message_count > 0) message_list_string += ", " + (total_message_count - total_unread_message_count) + " mail message" + (((total_message_count - total_unread_message_count) != 1) ? 's' : '') + " for "; } else { message_list_string = total_message_count + " mail message" + ((total_message_count != 1) ? 's' : '') + " for "; } @@ -282,7 +283,6 @@ ${username}@${minisrv_config.config.service_name} var message = message_list[k]; var message_font_open = ""; var message_font_close = ""; - console.log(message); if (message.unread) { message_font_open = ``; message_font_close = "" diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js index 23ba6761..fe3eb0e8 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js @@ -229,7 +229,7 @@ From: `; if (message.from_name != message.from_addr) { - data += `${html_entities.encode(message.from_addr)}(${html_entities.encode(message.from_name)})`; + data += `${html_entities.encode(message.from_addr)} (${html_entities.encode(message.from_name)})`; } else { data += `${html_entities.encode(message.from_addr)}`; } diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js index e7504c23..9110f618 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js @@ -28,22 +28,33 @@ if (!intro_seen && !request_headers.query.intro_seen) { 'noback': true, }).getURL(); + if (request_headers.query.sendoff == "Send") { + var from_addr = address; + var to_addr = request_headers.query.message_to; + var msg_subject = request_headers.query.message_subject; + var msg_body = request_headers.query.message_body; + var to_name = request_headers.query.whatever_webtv_sends_this_as || null; + var signature = ssid_sessions[socket.ssid].getSessionData("subscriber_signature") || null; + var messagereturn = ssid_sessions[socket.ssid].mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature); + if (messagereturn !== true) { + var errpage = wtvshared.doErrorPage(400, messagereturn); + headers = errpage[0]; + data = errpage[1]; + } else { + headers = `300 OK +wtv-expire: wtv-mail:/listmail +Location: wtv-mail:/listmail`; + } + } else { - headers = `200 OK + headers = `200 OK Content-type text/html`; - data = ` - - - + data = ` + + + -Write an e-mail message +Write a message - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ + + +
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Mail list +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Address +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Photo +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Recording +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Erase +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Spelling +
+
+
+
+ +
+ +
+ +
+ + + +
+ + + + +
+
Help +
+
+
+
+ +
+ +
+ +
+
+
+
+ + + + +
+
+ + + + + +Write a message + + + +
- - - +
-
- + - -
+ + +
- -
- - - - - -
- - - - - - - - -
-
- - - - -
-
Mail list -
-
-
-
- - - - -
-
Address -
-
-
-
- - - - -
-
Photo -
-
-
-
- - - - - -
-
Recording -
-
-
-
- - - - -
-
Erase -
-
-
-
- -
- - - - - - -
- -
- -
- - -
- - - - - -
-
- - -
- - -
- - - -Write an e-mail message - - - - -
-
-
- - -
- - -
- - - - -
-
- - -
- - - - - + - + - + - + - + - + + +
-From:  - - - + -
+ + + + + + + + + + + + + + + +
+ +From:  + + ${address} -
-(${userdisplayname}) +(${userdisplayname})
- + + +
+
-To:  - + + +
+ +To:  +
- + + +
+
-Subject:  - + + +
+ +Subject:  +
- + + +
+
+ + +
+ +
+growable> + +
+
-`; - if (!ssid_sessions[socket.ssid].getSessionData("subscriber_signature") || ssid_sessions[socket.ssid].getSessionData("subscriber_signature") == "") { - data += `
`; - } else { - data += ` Disable Signature`; - } - data += ` + + + +
+ + + +
+ +
`; + if (!ssid_sessions[socket.ssid].getSessionData("subscriber_signature") || ssid_sessions[socket.ssid].getSessionData("subscriber_signature") == "") { + data += `
`; + } else { + data += ` Disable Signature`; + } + data += `
@@ -334,4 +486,5 @@ USESTYLE NOARGS> `; + } } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/WTVMail.js b/zefie_wtvp_minisrv/WTVMail.js index d34465de..e16a6769 100644 --- a/zefie_wtvp_minisrv/WTVMail.js +++ b/zefie_wtvp_minisrv/WTVMail.js @@ -228,13 +228,23 @@ class WTVMail { var self = this; var files = this.fs.readdirSync(mailbox_path) .map(function (v) { + var message_data_raw = null; + var message_date = null; + var message_path = mailbox_path + self.path.sep + v; + if (self.fs.existsSync(message_path)) message_data_raw = self.fs.readFileSync(message_path); + if (message_data_raw) { + var message_data = JSON.parse(message_data_raw); + if (message_data) message_date = message_data.date; + } + var message_date_ret = (message_date) ? message_date : self.fs.statSync(mailbox_path + self.path.sep + v).mtime.getTime(); + self.fs.statSync(mailbox_path + self.path.sep + v).mtime.getTime() return { name: v, - time: self.fs.statSync(mailbox_path + self.path.sep + v).mtime.getTime() + time: message_date_ret }; }) .sort(function (a, b) { - if (reverse_sort) return b.time - a.time; + if (!reverse_sort) return b.time - a.time; else return a.time - b.time; }) .map(function (v) { @@ -289,7 +299,6 @@ class WTVMail { checkUserExists(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.minisrv_config.config.SessionStore; var return_val = false; var self = this; @@ -299,17 +308,15 @@ class WTVMail { 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 = 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; - return_val = search_dir.replace(this.minisrv_config.config.SessionStore + self.path.sep, '').replace("user",'').split(self.path.sep); + return_val = search_dir.replace(this.minisrv_config.config.SessionStore + self.path.sep, '').replace("user", '').split(self.path.sep); + return_val.push(temp_session_data.subscriber_name); } } catch (e) { console.error(" # Error parsing Session Data JSON", file, e); - username_match = true; } }); return return_val; @@ -320,18 +327,19 @@ class WTVMail { 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) + var user_mailstore = new WTVMail(this.minisrv_config, user_wtvsession) return user_mailstore; } return false; } sendMessageToAddr(from_addr, to_addr, msgbody, subject = null, from_name = null, to_name = null, signature = null) { - if (!to_addr.indexOf('@')) { - return "The m-mail address " + to_addr + " is not a valid m-mail address.

An m-mail address should look like:
: zefie@ZefieTV"; - } + if (!to_addr) return "You must type a destination address for your message."; + + + if (to_addr.indexOf('@') === -1) to_addr += "@"+this.minisrv_config.config.service_name; var username = to_addr.split("@")[0]; - var dest_minisrv = to_addr.split("@")[1]; + var dest_minisrv = to_addr.split("@")[1] || this.minisrv_config.config.service_name; // local only for now if (dest_minisrv.toLowerCase() !== this.minisrv_config.config.service_name.toLowerCase()) { @@ -340,10 +348,15 @@ class WTVMail { // find user if local if (dest_minisrv.toLowerCase() === this.minisrv_config.config.service_name.toLowerCase()) { - var dest_user_mailstore = getUserMailstore(to_addr); + var dest_user_mailstore = this.getUserMailstore(username); // user does not exist if (!dest_user_mailstore) return "The user " + username + " does not exist on MiniSrv " + dest_minisrv + ""; + if (!to_name) { + var userExistsData = this.checkUserExists(username); + to_name = userExistsData[2]; + } + // check if the destination user's Inbox exists yet if (!dest_user_mailstore.mailboxExists(0)) { // mailbox does not yet exist, create it @@ -352,7 +365,7 @@ class WTVMail { if (mailbox_exists) dest_user_mailstore.createWelcomeMessage(); } // if the mailbox exists, deliver the message - if (dest_user_mailstore.mailboxExists(0)) createMessage(0, from_addr, to_addr, msgbody, subject, from_name, to_name, signature); + if (dest_user_mailstore.mailboxExists(0)) this.createMessage(0, from_addr, to_addr, msgbody, subject, from_name, to_name, signature); else return "There was an internal error sending the message to " + to_addr + ". Please try again later"; // clean up @@ -369,12 +382,12 @@ class WTVMail { if (this.checkMessageIdSanity(messageid)) { if (this.mailstoreExists()) { this.fs.readdirSync(this.mailstore_dir).every(mailbox => { - if (mailboxid) return false; - this.fs.readdirSync(this.mailstore_dir + self.path.sep + mailbox).every(file => { - var regexSearch = ".*" + this.msgFileExt; + if (mailboxid) return false; + self.fs.readdirSync(self.mailstore_dir + mailbox).every(file => { + var regexSearch = messageid + self.msgFileExt; var re = new RegExp(regexSearch, "ig"); if (!file.match(re)) return true; - if (file.indexOf(messageid) !== -1) mailboxid = mailbox; + mailboxid = mailbox; return false; }); return true; @@ -386,6 +399,7 @@ class WTVMail { getMessageByID(messageid) { var mailbox_name = this.getMessageMailboxId(messageid); + console.log(mailbox_name); if (!mailbox_name) return false; var mailboxid = this.mailboxes.findIndex((value) => value == mailbox_name);