diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/addressbook.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/addressbook.js new file mode 100644 index 00000000..0adb9726 --- /dev/null +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/addressbook.js @@ -0,0 +1,211 @@ +var minisrv_service_file = true; + +if (request_headers.query.action == "editfromheader") { + + function parseAddress() { + var nickname = request_headers.query.nickname + ":" + var address = request_headers.query.address; + return { + nickname: address + }; + } + var addresstoadd = parseAddress() + + if (ssid_sessions[socket.ssid].getSessionData("address_book")) { + ssid_sessions[socket.ssid].setSessionData("address_book", ssid_sessions[socket.ssid].getSessionData("address_book") + addresstoadd); + ssid_sessions[socket.ssid].saveSessionData(); + } else { + ssid_sessions[socket.ssid].setSessionData("address_book", addresstoadd); + ssid_sessions[socket.ssid].saveSessionData(); + } + + + headers = `200 OK +Content-type: text/html +wtv-expire: wtv-mail:/addresslist`; +} else { + var camefrom = request_headers.query.camefrom; + + var CommonBLIMScripts = wtvshared.unpackCompressedB64('eNrFVttuGjEQfQaJfxjtS3ZbKFCpfQhJJIiEmiptI5V8gFkPYOG1kS9QVOXf6/Ui4l1uq0hRH9eeOXPOmVnbNzpVbGWAEzG3ZI630XeyJsVidNdqzqxIDZMC5mi+2YyInyTDGDPC+JBShVonrebfhkJjlYARZ9knF/l8NHDQeAkA9SnANgjc5KsHyPoE8mtGucQPt4dijupB/1qSbRwCxgUk00PO1hgnkAxazTCZ6bFiKOh5sUw/iEemTRyNH6M2lPVWAUdcpkusjTi6jDjkXG7qIw5PIHa7sJKcpdtrYDMwCwSrUQGhVAOBmfehDRsEYo3MiGEp4XwLJK8ORFCwYppr80h5+gqVdgSJ8V/atQYMyzDgPsUCdrJg+slHH4rw7B2JiTxj8ZoowD+YWoPeDbiFyBMLkK8i+FhKdJ/RVTKIyvnPhYocYSeoJoYbzImTJ62JQypt6H/o93q95GjIrlobPu+Dyq2gEoQ0UHDaLFA4mztTS+mWiXmnAxlZOm+t2tvNNOSmexe4cyywm9a1W2Em1zhWMntHz8/49eXALief5BocNS4JjZM87OvesNeJqjSsnr6jv0RQParA3kuFp7WFHT/DzYNcHPfRBWpHjen3D6sfDnM9by4RqPa8vjdvUVEdsP+t4Qy3ev0dXjrfKdNvE/2uQ+1OqFSKNQp3nqR4DdoQZdw14ReV9s0MRPzOt++DvRMa5ApFKazMJRnAPiy/191bRT8RgTz2tBpVVlPlDkmwK38BOaDgNQCrPC+kuJCb/e4OtMTrSMFW86ZbPJPu/gEVxhrd'); + + headers = `200 OK` + + switch (camefrom) { + case "messenger": + data = `${CommonBLIMScripts} + + +Addresses + + + + + + +
+ +
+ + +
+ + +
+
+ +
+
+
+
+ + +
+ + +
+
Mail List +
+
+
+ +
+
+
+
+ + + +
+ + +
+
Add +
+
+
+ +
+
+
+
+ + +
+ + +
+
Help +
+
+
+ +
+
+
+
+
+
+
+ + + + + +
+
Buddies for ${ssid_sessions[socket.ssid].getSessionData("subscriber_username") || "You"} +
+ +
Your address is ${ssid_sessions[socket.ssid].getSessionData("messenger_email") || "unlinked"}@${ssid_sessions[socket.ssid].getSessionData("messenger_domain") || "escargot.chat"} + +
+
+ + +
+
+
+
Name + Options + +
+
+
+
+
+ +
+ + +
+ + + +` + } +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/SharedROMCache/BannerMail.gif b/zefie_wtvp_minisrv/SharedROMCache/BannerMail.gif new file mode 100644 index 00000000..a7e9f4fe Binary files /dev/null and b/zefie_wtvp_minisrv/SharedROMCache/BannerMail.gif differ diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/WTVShared.js index cb7e11df..11ad80c9 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/WTVShared.js @@ -8,6 +8,7 @@ class WTVShared { path = require('path'); fs = require('fs'); v8 = require('v8'); + zlib = require('zlib'); CryptoJS = require('crypto-js'); html_entities = require('html-entities'); // used externally by service scripts sanitizeHtml = require('sanitize-html'); @@ -15,8 +16,8 @@ class WTVShared { minisrv_config = []; - constructor(minisrv_config) { - if (minisrv_config == null) this.minisrv_config = this.readMiniSrvConfig(); + constructor(minisrv_config, quiet = false) { + if (minisrv_config == null) this.minisrv_config = this.readMiniSrvConfig(true, !quiet); else this.minisrv_config = minisrv_config; if (!String.prototype.reverse) { @@ -579,6 +580,18 @@ class WTVShared { if (ssid.length == 0) ssid = null; return ssid; } + + + unpackCompressedB64(data) { + var data_buf = (typeof data === 'object') ? Buffer.from(data.toString('ascii'), 'base64') : Buffer.from(data, 'base64'); + return this.zlib.inflateSync(data_buf, { finishFlush: this.zlib.Z_SYNC_FLUSH }).toString('ascii'); + } + + packCompressedB64(data) { + return this.zlib.deflateSync(data, { 'level': 9 }).toString('base64'); + } + + } class clientShowAlert { diff --git a/zefie_wtvp_minisrv/packer.js b/zefie_wtvp_minisrv/packer.js new file mode 100644 index 00000000..979dc1a6 --- /dev/null +++ b/zefie_wtvp_minisrv/packer.js @@ -0,0 +1,52 @@ +const { WTVShared } = require("./WTVShared.js"); +var wtvshared = new WTVShared(null, true); +const fs = require('fs'); + +function showUsage() { + console.log(" * Usage:", process.argv[0], process.argv[1], ""); + process.exit(1); +} + +if (process.argv) { + if (process.argv[2]) { + var reverse = false; + var file = process.argv[2]; + if (file == "-d") { + file = process.argv[3]; + reverse = true; + } + if (fs.existsSync(file)) { + console.log(` * Processing ${file} ...`) + if (reverse) { + var outfile = file.replace(/\.cb64\.txt/,'') + ".dec.txt"; + var encodedData = fs.readFileSync(file); + var rawdata = wtvshared.unpackCompressedB64(encodedData); + try { + fs.writeFileSync(outfile, rawdata); + console.log(` * Successfully decoded into ${outfile}`) + } catch (e) { + console.error("Error processing file:", e) + process.exit(1); + } + } else { + var outfile = file + ".cb64.txt"; + var rawdata = fs.readFileSync(file); + var encodedData = wtvshared.packCompressedB64(rawdata); + try { + fs.writeFileSync(outfile, encodedData); + console.log(` * Successfully encoded into ${outfile}`) + } catch (e) { + console.error("Error processing file:", e) + process.exit(1); + } + } + } else { + console.error(` * Could not find file ${file}`) + showUsage(); + } + } else { + showUsage(); + } +} else { + showUsage(); +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj index 682d9da6..ece15d4e 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj @@ -35,6 +35,7 @@ Code + @@ -97,6 +98,7 @@ + Code