fix/optimize wtv-mail

This commit is contained in:
zefie
2025-08-12 19:33:00 -04:00
parent 74ec365ae1
commit 8307620004
11 changed files with 110 additions and 118 deletions

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true; const minisrv_service_file = true;
session_data.mailstore.setMailIntroSeen(true) session_data.mailstore.setMailIntroSeen(true)
headers = `200 OK headers = `200 OK
Content-type: text/html`; Content-type: text/html`;

View File

@@ -1,8 +1,8 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var camefrom = request_headers.query.camefrom; const camefrom = request_headers.query.camefrom;
var action = request_headers.query.action; const action = request_headers.query.action;
var address_book = null let address_book = null
address_book = session_data.getSessionData("address_book") address_book = session_data.getSessionData("address_book")
if (address_book == null) { if (address_book == null) {
session_data.setSessionData("address_book", []) session_data.setSessionData("address_book", [])
@@ -698,10 +698,10 @@ ${(!newaddress) ? `<input type=hidden name="id" value="${request_headers.query.i
break; break;
case "add": case "add":
var nameExists = false; let nameExists = false;
var addrExists = false; let addrExists = false;
// dumbass protection for making addresses look proper in the list // dumbass protection for making addresses look proper in the list
var address = request_headers.query.address.split("@")[0]; let address = request_headers.query.address.split("@")[0];
address += `@${minisrv_config.config.service_name}`; address += `@${minisrv_config.config.service_name}`;
// sanity checks to make sure the user doesn't have duplicate names/addresses // sanity checks to make sure the user doesn't have duplicate names/addresses
address_book.forEach(user => { address_book.forEach(user => {
@@ -735,8 +735,8 @@ Location: wtv-mail:/addressbook`;
break; break;
case "change": case "change":
var address = request_headers.query.address address = request_headers.query.address
var nickname = request_headers.query.nickname let nickname = request_headers.query.nickname
if (!address) { if (!address) {
address = address_book[request_headers.query.id].address address = address_book[request_headers.query.id].address
} }
@@ -746,10 +746,10 @@ Location: wtv-mail:/addressbook`;
// dumbass protection for making addresses look proper in the list // dumbass protection for making addresses look proper in the list
address = address.split("@")[0]; address = address.split("@")[0];
address += `@${minisrv_config.config.service_name}`; address += `@${minisrv_config.config.service_name}`;
var nameExists = false; nameExists = false;
var addrExists = false; addrExists = false;
if (address_book.length > 1) { if (address_book.length > 1) {
var otheraddrs = address_book.slice(0) const otheraddrs = address_book.slice(0)
otheraddrs.splice(request_headers.query.id, 1) otheraddrs.splice(request_headers.query.id, 1)
// sanity checks to make sure the user doesn't have duplicate names/addresses // sanity checks to make sure the user doesn't have duplicate names/addresses
otheraddrs.forEach(user => { otheraddrs.forEach(user => {

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true; const minisrv_service_file = true;
headers = `200 OK headers = `200 OK
Content-Type: x-wtv-addresses Content-Type: x-wtv-addresses

View File

@@ -1,12 +1,11 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var errpage = null; let errpage, message;
const messageid = request_headers.query.message_id;
var messageid = request_headers.query.message_id; const attachment_id = request_headers.query.attachment_id;
var attachment_id = request_headers.query.attachment_id;
if (!attachment_id && attachment_id != 0) errpage = wtvshared.doErrorPage(400, "Attachment ID required."); if (!attachment_id && attachment_id != 0) errpage = wtvshared.doErrorPage(400, "Attachment ID required.");
else { else {
var message = session_data.mailstore.getMessageByID(messageid); message = session_data.mailstore.getMessageByID(messageid);
if (!message) errpage = wtvshared.doErrorPage(400, "Invalid Message ID"); if (!message) errpage = wtvshared.doErrorPage(400, "Invalid Message ID");
else { else {
if (!message.attachments) message.attachments = []; // backwards compat if (!message.attachments) message.attachments = []; // backwards compat

View File

@@ -1,21 +1,21 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var errpage = null; let errpage = null;
var messageid = request_headers.query.message_id || null; const messageid = request_headers.query.message_id || null;
if (!messageid) { if (!messageid) {
// get user signature // get user signature
data = session_data.getSessionData("subscriber_signature"); data = session_data.getSessionData("subscriber_signature");
} else { } else {
// get message signature // get message signature
var message = session_data.mailstore.getMessageByID(messageid); const message = session_data.mailstore.getMessageByID(messageid);
if (!message) errpage = wtvshared.doErrorPage(400, "Invalid Message ID"); if (!message) errpage = wtvshared.doErrorPage(400, "Invalid Message ID");
data = message.signature; data = message.signature;
} }
if (request_headers.query.sanitize) { if (request_headers.query.sanitize) {
if (!data) data = ''; if (!data) data = '';
var message_colors = session_data.mailstore.getSignatureColors(data) const message_colors = session_data.mailstore.getSignatureColors(data)
if (data.indexOf("<html>") >= 0) { if (data.indexOf("<html>") >= 0) {
data = wtvshared.sanitizeSignature(data).replace("<html>", `<html><body bgcolor=${message_colors.bgcolor} text=${message_colors.text} link=${message_colors.link} vlink=${message_colors.vlink} vspace=0 hspace=0>`); data = wtvshared.sanitizeSignature(data).replace("<html>", `<html><body bgcolor=${message_colors.bgcolor} text=${message_colors.text} link=${message_colors.link} vlink=${message_colors.vlink} vspace=0 hspace=0>`);

View File

@@ -1,14 +1,14 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var mailstore_exists = false; let mailstore_exists = false;
function mail_end_error(msg) { function mail_end_error(msg) {
var errpage = wtvshared.doErrorPage("400", msg); const errpage = wtvshared.doErrorPage("400", msg);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }
var intro_seen = session_data.mailstore.checkMailIntroSeen(); const intro_seen = session_data.mailstore.checkMailIntroSeen();
if (!intro_seen && !request_headers.query.intro_seen) { if (!intro_seen && !request_headers.query.intro_seen) {
// user is trying to bypass the intro screen // user is trying to bypass the intro screen
headers = "300 OK\nLocation: wtv-mail:/DiplomaMail"; headers = "300 OK\nLocation: wtv-mail:/DiplomaMail";
@@ -26,14 +26,14 @@ if (!intro_seen && !request_headers.query.intro_seen) {
if (mailstore_exists) { if (mailstore_exists) {
// mailstore exists // mailstore exists
var default_limit = (minisrv_config.services[service_name].messages_per_page) ? minisrv_config.services[service_name].messages_per_page : 25; // user config or 25 const default_limit = (minisrv_config.services[service_name].messages_per_page) ? minisrv_config.services[service_name].messages_per_page : 25; // user config or 25
var mailbox = (request_headers.query.mailbox) ? parseInt(request_headers.query.mailbox) : 0; const mailbox = (request_headers.query.mailbox) ? parseInt(request_headers.query.mailbox) : 0;
var limit = (request_headers.query.limit) ? parseInt(request_headers.query.limit) : default_limit; const limit = (request_headers.query.limit) ? parseInt(request_headers.query.limit) : default_limit;
var reverse_sort = (request_headers.query.reverse_sort) ? true : false; const reverse_sort = (request_headers.query.reverse_sort) ? true : false;
var page = (request_headers.query.page) ? parseInt(request_headers.query.page) : 0; const page = (request_headers.query.page) ? parseInt(request_headers.query.page) : 0;
// get mailbox name // get mailbox name
var mailbox_name = session_data.mailstore.getMailboxById(parseInt(mailbox)); const mailbox_name = session_data.mailstore.getMailboxById(parseInt(mailbox));
// if false or null, then mailbox is invalid // if false or null, then mailbox is invalid
if (!mailbox_name) { if (!mailbox_name) {
@@ -42,7 +42,7 @@ if (!intro_seen && !request_headers.query.intro_seen) {
// mailboxid is ok // mailboxid is ok
if (!session_data.mailstore.mailboxExists(mailbox)) { if (!session_data.mailstore.mailboxExists(mailbox)) {
// mailbox does not yet exist, create it // mailbox does not yet exist, create it
var mailbox_exists = session_data.mailstore.createMailbox(mailbox); const mailbox_exists = session_data.mailstore.createMailbox(mailbox);
if (!mailbox_exists) { if (!mailbox_exists) {
// failed to create mailbox for some reason // failed to create mailbox for some reason
mail_end_error(); mail_end_error();
@@ -53,11 +53,11 @@ if (!intro_seen && !request_headers.query.intro_seen) {
} }
} }
} }
var message_list = session_data.mailstore.listMessages(mailbox, limit, reverse_sort, (page * limit)) const message_list = session_data.mailstore.listMessages(mailbox, limit, reverse_sort, (page * limit))
var total_message_count = session_data.mailstore.countMessages(mailbox); const total_message_count = session_data.mailstore.countMessages(mailbox);
var total_unread_message_count = session_data.mailstore.countUnreadMessages(mailbox); const total_unread_message_count = session_data.mailstore.countUnreadMessages(mailbox);
var message_list_string = null; let message_list_string = null;
if (total_message_count == 0) { if (total_message_count == 0) {
message_list_string = "No new mail messages for "; message_list_string = "No new mail messages for ";
} else { } else {
@@ -69,8 +69,8 @@ if (!intro_seen && !request_headers.query.intro_seen) {
} }
} }
var username = session_data.getSessionData("subscriber_username"); const username = session_data.getSessionData("subscriber_username");
var notImplementedAlert = new clientShowAlert({ const notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo, 'image': minisrv_config.config.service_logo,
'message': "This feature is not available.", 'message': "This feature is not available.",
'buttonlabel1': "Okay", 'buttonlabel1': "Okay",
@@ -201,7 +201,7 @@ label="View saved e-mail messages">
<td height=80> <td height=80>
<img src="wtv-mail:/content/images/Mail.gif" width=87 height=45> <img src="wtv-mail:/content/images/Mail.gif" width=87 height=45>
`; `;
var icon_image = null; let icon_image = null;
switch (mailbox_name) { switch (mailbox_name) {
case "Inbox": case "Inbox":
icon_image = session_data.mailstore.getMailboxIcon(); icon_image = session_data.mailstore.getMailboxIcon();
@@ -280,11 +280,11 @@ ${username}@${minisrv_config.config.service_name}
<hr width=422 align=left> <hr width=422 align=left>
`; `;
Object.keys(message_list).forEach(function (k) { Object.keys(message_list).forEach(function (k) {
var message = message_list[k]; const message = message_list[k];
if (typeof message.subject == "object" && message.subject) message.subject = wtvshared.decodeBufferText(message.subject); if (typeof message.subject == "object" && message.subject) message.subject = wtvshared.decodeBufferText(message.subject);
message.known_sender = session_data.isAddressInAddressBook(message.from_addr); message.known_sender = session_data.isAddressInAddressBook(message.from_addr);
var message_font_open = "<font color=#7A9FCC>"; let message_font_open = "<font color=#7A9FCC>";
var message_font_close = "</font>"; let message_font_close = "</font>";
if (message.unread) { if (message.unread) {
message_font_open = `<b><font color=#99E6FF>`; message_font_open = `<b><font color=#99E6FF>`;
message_font_close = "</font></b>" message_font_close = "</font></b>"
@@ -309,7 +309,7 @@ ${message_font_close}
<td abswidth=47 maxlines=1> <td abswidth=47 maxlines=1>
${message_font_open} ${message_font_open}
`; `;
var message_date = new Date(message.date * 1000); const message_date = new Date(message.date * 1000);
data += (message_date.getMonth() + 1) + "/" + message_date.getDate() + "\n"; data += (message_date.getMonth() + 1) + "/" + message_date.getDate() + "\n";
data += ` data += `
${message_font_close} ${message_font_close}

View File

@@ -1,14 +1,12 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var mailstore_exists = false;
function mail_end_error(msg) { function mail_end_error(msg) {
var errpage = wtvshared.doErrorPage("400", msg); const errpage = wtvshared.doErrorPage("400", msg);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} }
var intro_seen = session_data.mailstore.checkMailIntroSeen(); const intro_seen = session_data.mailstore.checkMailIntroSeen();
if (!intro_seen && !request_headers.query.intro_seen) { if (!intro_seen && !request_headers.query.intro_seen) {
// user is trying to bypass the intro screen // user is trying to bypass the intro screen
headers = "300 OK\nLocation: wtv-mail:/DiplomaMail"; headers = "300 OK\nLocation: wtv-mail:/DiplomaMail";
@@ -16,13 +14,13 @@ if (!intro_seen && !request_headers.query.intro_seen) {
if (!request_headers.query.message_id) { if (!request_headers.query.message_id) {
mail_end_error("Message ID Required"); mail_end_error("Message ID Required");
} else { } else {
var messageid = request_headers.query.message_id; const messageid = request_headers.query.message_id;
var message = session_data.mailstore.getMessageByID(messageid); const message = session_data.mailstore.getMessageByID(messageid);
if (!message) { if (!message) {
mail_end_error("Invalid Message ID"); mail_end_error("Invalid Message ID");
} else { } else {
session_data.mailstore.setMessageReadStatus(messageid); session_data.mailstore.setMessageReadStatus(messageid);
var notImplementedAlert = new clientShowAlert({ const notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo, 'image': minisrv_config.config.service_logo,
'message': "This feature is not available.", 'message': "This feature is not available.",
'buttonlabel1': "Okay", 'buttonlabel1': "Okay",

View File

@@ -1,13 +1,14 @@
var minisrv_service_file = true; const minisrv_service_file = true;
var message_snapshot_data = null; let message_snapshot_data = null;
var message_voicemail_data = null; let message_voicemail_data = null;
var intro_seen = session_data.mailstore.checkMailIntroSeen(); const intro_seen = session_data.mailstore.checkMailIntroSeen();
if (!intro_seen && !request_headers.query.intro_seen) { if (!intro_seen && !request_headers.query.intro_seen) {
// user is trying to bypass the intro screen // user is trying to bypass the intro screen
headers = "300 OK\nLocation: wtv-mail:/DiplomaMail?came-from=" + encodeURIComponent(request_headers.request_url); headers = "300 OK\nLocation: wtv-mail:/DiplomaMail?came-from=" + encodeURIComponent(request_headers.request_url);
} else if (request_headers.query.clear == "true") { } else if (request_headers.query.clear == "true") {
let gourl;
if (request_headers.Referer) if (request_headers.Referer)
gourl = request_headers.Referer.replace(/[\?\&]clear\=true/, ''); gourl = request_headers.Referer.replace(/[\?\&]clear\=true/, '');
else else
@@ -30,8 +31,8 @@ wtv-expire-all: wtv-mail:/listmail
wtv-expire-all: wtv-mail:/sendmail wtv-expire-all: wtv-mail:/sendmail
Location: ${gourl}`; Location: ${gourl}`;
} else { } else {
var doClientError = function (msg) { const doClientError = function (msg) {
var clientErrorMsg = new clientShowAlert({ const clientErrorMsg = new clientShowAlert({
'image': minisrv_config.config.service_logo, 'image': minisrv_config.config.service_logo,
'message': msg, 'message': msg,
'buttonlabel1': "Okay", 'buttonlabel1': "Okay",
@@ -42,23 +43,23 @@ Location: ${gourl}`;
return "200 OK\nwtv-visit: " + clientErrorMsg; return "200 OK\nwtv-visit: " + clientErrorMsg;
} }
var newsgroup = null; let newsgroup = null;
if (wtvshared.parseBool(request_headers.query.discuss)) { if (wtvshared.parseBool(request_headers.query.discuss)) {
newsgroup = request_headers.query.group || request_headers.query.message_to || null; newsgroup = request_headers.query.group || request_headers.query.message_to || null;
} }
var gourl = "wtv-mail:/sendmail"; let gourl = "wtv-mail:/sendmail";
var msg_subject, to_addr, to_name; let msg_subject, to_addr, to_name, pageTitle, article, reply_message;
if (newsgroup !== null) { if (newsgroup !== null) {
var to_addr = newsgroup; to_addr = newsgroup;
var pageTitle = "Post to " + newsgroup; pageTitle = "Post to " + newsgroup;
var article = request_headers.query.article || null; article = request_headers.query.article || null;
var gourl = gourl + "?group=" + newsgroup; gourl = gourl + "?group=" + newsgroup;
} else { } else {
var to_addr = request_headers.query.message_to || null; to_addr = request_headers.query.message_to || null;
var pageTitle = "Write an e-mail message"; pageTitle = "Write an e-mail message";
if (request_headers.query.message_reply_id) { if (request_headers.query.message_reply_id) {
reply_message = session_data.mailstore.getMessageByID(request_headers.query.message_reply_id); reply_message = session_data.mailstore.getMessageByID(request_headers.query.message_reply_id);
if (reply_message) { if (reply_message) {
@@ -69,16 +70,16 @@ Location: ${gourl}`;
} }
} }
var msg_subject = msg_subject || request_headers.query.message_subject || null; msg_subject = msg_subject || request_headers.query.message_subject || null;
var msg_body = request_headers.query.message_body || null; let msg_body = request_headers.query.message_body || null;
var to_name = to_name || request_headers.query.whatever_webtv_sends_this_as || null; to_name = to_name || request_headers.query.whatever_webtv_sends_this_as || null;
var msg_url = request_headers.query.message_url || null; let msg_url = request_headers.query.message_url || null;
var msg_url_title = request_headers.query.message_title || null; let msg_url_title = request_headers.query.message_title || null;
var no_signature = false; let no_signature = false;
mail_draft_data = {}; let mail_draft_data = {};
mail_draft_attachments = {}; let mail_draft_attachments = {};
if (!wtvshared.parseBool(request_headers.query.discuss)) { if (!wtvshared.parseBool(request_headers.query.discuss)) {
mail_draft_data = session_data.getSessionData("mail_draft"); mail_draft_data = session_data.getSessionData("mail_draft");
mail_draft_attachments = session_data.getSessionData("mail_draft_attachments") || {}; mail_draft_attachments = session_data.getSessionData("mail_draft_attachments") || {};
@@ -124,10 +125,10 @@ Content-Type: audio/wav`;
data = message_voicemail_data; data = message_voicemail_data;
} else { } else {
var username = session_data.getSessionData("subscriber_username"); const username = session_data.getSessionData("subscriber_username");
var userdisplayname = wtvshared.htmlEntitize(session_data.getSessionData("subscriber_name")); const userdisplayname = wtvshared.htmlEntitize(session_data.getSessionData("subscriber_name"));
var address = username + "@" + minisrv_config.config.service_name //minisrv_config.config.domain_name const address = username + "@" + minisrv_config.config.service_name //minisrv_config.config.domain_name
var notImplementedAlert = new clientShowAlert({ const notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo, 'image': minisrv_config.config.service_logo,
'message': "This feature is not available.", 'message': "This feature is not available.",
'buttonlabel1': "Okay", 'buttonlabel1': "Okay",
@@ -136,14 +137,14 @@ Content-Type: audio/wav`;
}).getURL(); }).getURL();
if ((typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) || request_headers.query.saveoff || request_headers.query.get_snap || request_headers.query.get_gab) { if ((typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) || request_headers.query.saveoff || request_headers.query.get_snap || request_headers.query.get_gab) {
var from_addr = address; let from_addr = address;
var signature = session_data.getSessionData("subscriber_signature") || null; const signature = session_data.getSessionData("subscriber_signature") || null;
if (typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) { if (typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) {
var attachments = []; const attachments = [];
if (message_snapshot_data) { if (message_snapshot_data) {
var attachment = { const attachment = {
'mime': 'image/jpeg', 'mime': 'image/jpeg',
'filename': 'snapshot.jpg' 'filename': 'snapshot.jpg'
} }
@@ -157,7 +158,7 @@ Content-Type: audio/wav`;
} }
if (message_voicemail_data) { if (message_voicemail_data) {
var attachment = { const attachment = {
'mime': 'audio/wav', 'mime': 'audio/wav',
'filename': 'voicemail.wav' 'filename': 'voicemail.wav'
} }
@@ -171,15 +172,14 @@ Content-Type: audio/wav`;
attachments.push(attachment); attachments.push(attachment);
} }
console.log("DEBUG sendmail: Before send decision - newsgroup =", newsgroup, "to_addr =", to_addr);
if (newsgroup !== null) { if (newsgroup !== null) {
console.log("DEBUG sendmail: Taking newsgroup path"); request_is_async = true;
var request_is_async = true; const local_service_name = request_headers.query['discuss-prefix'] || "wtv-news"
var local_service_name = request_headers.query['discuss-prefix'] || "wtv-news"
const wtvnews = new WTVNews(minisrv_config, local_service_name); const wtvnews = new WTVNews(minisrv_config, local_service_name);
var service_config = minisrv_config.services[local_service_name]; const service_config = minisrv_config.services[local_service_name];
let news_headers;
if (wtvnewsserver) { if (wtvnewsserver) {
var tls_options = { const tls_options = {
ca: this.wtvshared.getServiceDep('wtv-news/localserver_ca.pem'), ca: this.wtvshared.getServiceDep('wtv-news/localserver_ca.pem'),
key: this.wtvshared.getServiceDep('wtv-news/localserver_key.pem'), key: this.wtvshared.getServiceDep('wtv-news/localserver_key.pem'),
cert: this.wtvshared.getServiceDep('wtv-news/localserver_cert.pem'), cert: this.wtvshared.getServiceDep('wtv-news/localserver_cert.pem'),
@@ -193,12 +193,10 @@ Content-Type: audio/wav`;
if (service_config.upstream_auth) if (service_config.upstream_auth)
wtvnews.initializeUsenet(service_config.upstream_address, service_config.upstream_port, service_config.upstream_tls || null, service_config.upstream_auth.username || null, service_config.upstream_auth.password || null); wtvnews.initializeUsenet(service_config.upstream_address, service_config.upstream_port, service_config.upstream_tls || null, service_config.upstream_auth.username || null, service_config.upstream_auth.password || null);
else else
wtvnews.initializeUsenet(service_config.upstream_address, service_configupstream_port, service_config.upstream_tls || null); wtvnews.initializeUsenet(service_config.upstream_address, service_config.upstream_port, service_config.upstream_tls || null);
} }
from_addr = userdisplayname + " <" + from_addr + ">"; from_addr = userdisplayname + " <" + from_addr + ">";
news_headers = null;
if (signature && signature != "" && !no_signature) { if (signature && signature != "" && !no_signature) {
var signature_tuple = null;
if (signature.indexOf('<html>') >= 0) { if (signature.indexOf('<html>') >= 0) {
attachments.push({ attachments.push({
"mime": 'text/html', "mime": 'text/html',
@@ -216,7 +214,7 @@ Content-Type: audio/wav`;
if (attachments.length > 0 || msg_body.indexOf('<html>') >= 0) { if (attachments.length > 0 || msg_body.indexOf('<html>') >= 0) {
// usenet attachments // usenet attachments
var tuples = []; let tuples = [];
if (msg_body.indexOf('<html>') >= 0) { if (msg_body.indexOf('<html>') >= 0) {
tuples.push({ tuples.push({
"mime": 'text/html', "mime": 'text/html',
@@ -231,9 +229,9 @@ Content-Type: audio/wav`;
"use_base64": false "use_base64": false
}]; }];
} }
if (signature_tuple) tuples.push(signature_tuple); //if (signature_tuple) tuples.push(signature_tuple);
attachments.forEach((attachment) => { attachments.forEach((attachment) => {
var tuple = {}; const tuple = {};
tuple.mime = attachment.mime; tuple.mime = attachment.mime;
tuple.content = attachment.content; tuple.content = attachment.content;
tuple.use_base64 = (typeof attachment.use_base64 === 'boolean') ? attachment.use_base64 : true; tuple.use_base64 = (typeof attachment.use_base64 === 'boolean') ? attachment.use_base64 : true;
@@ -241,7 +239,7 @@ Content-Type: audio/wav`;
tuple.filename = attachment.filename || null; tuple.filename = attachment.filename || null;
tuples.push(tuple); tuples.push(tuple);
}); });
var multipart_data = wtvmime.generateMultipartMIME(tuples); const multipart_data = wtvmime.generateMultipartMIME(tuples);
news_headers = { news_headers = {
"Content-Type": multipart_data.content_type, "Content-Type": multipart_data.content_type,
"MIME-Version": multipart_data.mime_version, "MIME-Version": multipart_data.mime_version,
@@ -259,16 +257,16 @@ wtv-expire-all wtv-mail:/sendmail
Location: wtv-news:/news?group=${newsgroup}`; Location: wtv-news:/news?group=${newsgroup}`;
sendToClient(socket, headers, ''); sendToClient(socket, headers, '');
}).catch((e) => { }).catch((e) => {
var err = this.wtvshared.doErrorPage(500, null, e.toString()) const err = this.wtvshared.doErrorPage(500, null, e.toString())
sendToClient(socket, err[0], err[1]); sendToClient(socket, err[0], err[1]);
}); });
} else { } else {
console.log("DEBUG sendmail: Taking email path with to_addr =", to_addr); console.log("DEBUG sendmail: Taking email path with to_addr =", to_addr);
var messagereturn = session_data.mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature, attachments, msg_url, msg_url_title); const messagereturn = session_data.mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature, attachments, msg_url, msg_url_title);
if (messagereturn !== true) { if (messagereturn !== true) {
var errpage = wtvshared.doErrorPage(400, messagereturn); const errpage = wtvshared.doErrorPage(400, messagereturn);
headers = errpage[0]; headers = errpage[0];
data = errpage[1]; data = errpage[1];
} else { } else {
@@ -282,7 +280,7 @@ Location: wtv-mail:/listmail`;
} }
} else if (request_headers.query.saveoff) { } else if (request_headers.query.saveoff) {
var mail_draft_data = { mail_draft_data = {
to_addr: to_addr, to_addr: to_addr,
msg_subject: msg_subject, msg_subject: msg_subject,
msg_body: msg_body, msg_body: msg_body,
@@ -300,7 +298,7 @@ wtv-expire-all: wtv-mail:/sendmail`;
headers = `200 OK headers = `200 OK
Content-type: text/html`; Content-type: text/html`;
var mail_draft_data = session_data.getSessionData((newsgroup) ? "usenet_draft_attachments" : "mail_draft_attachments") || {}; mail_draft_data = session_data.getSessionData((newsgroup) ? "usenet_draft_attachments" : "mail_draft_attachments") || {};
if (request_headers.query.snapping == "false") { if (request_headers.query.snapping == "false") {
headers += "\nwtv-expire-all: cache:snapshot.jpg"; headers += "\nwtv-expire-all: cache:snapshot.jpg";
if (mail_draft_data.message_snapshot_data) mail_draft_data.message_snapshot_data = null; if (mail_draft_data.message_snapshot_data) mail_draft_data.message_snapshot_data = null;
@@ -322,7 +320,7 @@ Content-type: text/html`;
mail_draft_data.message_voicemail_data = request_headers.query.message_voicemail_data mail_draft_data.message_voicemail_data = request_headers.query.message_voicemail_data
session_data.setSessionData((newsgroup) ? "usenet_draft_attachments" : "mail_draft_attachments", mail_draft_data); session_data.setSessionData((newsgroup) ? "usenet_draft_attachments" : "mail_draft_attachments", mail_draft_data);
} }
var message_colors = null; let message_colors = null;
if (no_signature) message_colors = session_data.mailstore.getSignatureColors(null, true); if (no_signature) message_colors = session_data.mailstore.getSignatureColors(null, true);
else message_colors = session_data.mailstore.getSignatureColors(session_data.getSessionData("subscriber_signature"), true); else message_colors = session_data.mailstore.getSignatureColors(session_data.getSessionData("subscriber_signature"), true);

View File

@@ -1,20 +1,20 @@
var minisrv_service_file = true; const minisrv_service_file = true;
headers = `200 OK headers = `200 OK
Content-type: text/plain Content-type: text/plain
minisrv-no-mail-count: true` minisrv-no-mail-count: true`
var fail = '0'; const fail = '0';
var ok = '1'; const ok = '1';
// TODO: logic to check if account exists // TODO: logic to check if account exists
// All this does is some sanity checks for now // All this does is some sanity checks for now
// but does not verify the account exists // but does not verify the account exists
if (request_headers.query.address) { if (request_headers.query.address) {
var address_split = request_headers.query.address.split("@"); const address_split = request_headers.query.address.split("@");
var domain = address_split[1]; const domain = address_split[1];
if (domain != "escargot.chat" && domain != "escargot.live") data = fail if (domain != "escargot.chat" && domain != "escargot.live") data = fail
else data = ok; else data = ok;
} else { } else {

View File

@@ -1,4 +1,4 @@
var minisrv_service_file = true; const minisrv_service_file = true;
headers = `200 OK headers = `200 OK
Content-Type: text/html`; Content-Type: text/html`;

View File

@@ -139,12 +139,6 @@ function checkScopeErrors(file) {
// Check if either service name exists and is privileged // Check if either service name exists and is privileged
const service = config.services[serviceNameWithPrefix] || config.services[serviceNameWithoutPrefix]; const service = config.services[serviceNameWithPrefix] || config.services[serviceNameWithoutPrefix];
if (serviceName === "wtv-news") {
eslintConfig.globals = {
...eslintConfig.globals,
"wtvnewsserver": "readonly"
};
}
if (service && service.privileged === true) { if (service && service.privileged === true) {
// Add additional globals for privileged services // Add additional globals for privileged services
@@ -161,6 +155,9 @@ function checkScopeErrors(file) {
if (service.modules) { if (service.modules) {
for (const moduleName of service.modules) { for (const moduleName of service.modules) {
eslintConfig.globals[moduleName] = "readonly"; eslintConfig.globals[moduleName] = "readonly";
if (moduleName === "WTVNews") {
eslintConfig.globals["wtvnewsserver"] = "readonly";
}
} }
} }
} }