diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js b/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js
index 98af2224..42fab6de 100644
--- a/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js
+++ b/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js
@@ -47,7 +47,8 @@ minisrv v${minisrv_config.version}${(minisrv_config.config.git_commit) ? ' git-'
client:relog (direct)
Ultra Willies ~ Tricks
Setup (Including BG Music)
-Mail (not ready)
+Mail (beta)
+Usenet (not ready)
`;
if (ssid_sessions[socket.ssid].hasCap("client-can-do-chat")) {
data += "IRC Chat Test\n"
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js
index a7621110..9f736e54 100644
--- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js
+++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js
@@ -16,7 +16,7 @@ if (!intro_seen && !request_headers.query.intro_seen) {
'noback': true,
}).getURL();
- headers = "300 OK\nwtv-visit: " + clientErrorMsg;
+ headers = "200 OK\nwtv-visit: " + clientErrorMsg;
}
if (request_headers.query.clear == "true") {
@@ -28,8 +28,16 @@ wtv-expire: wtv-mail:/sendmail
Location: wtv-mail:/sendmail`;
}
+ var newsgroup = null;
+ if (request_headers.query.discuss) {
+ newsgroup = request_headers.query.group || request_headers.query.message_to || null;
+ var to_addr = newsgroup;
+ var pageTitle = "Post to " + newsgroup;
+ } else {
+ var to_addr = request_headers.query.message_to || null;
+ var pageTitle = "Write an e-mail message"
+ }
- var to_addr = request_headers.query.message_to || null;
var msg_subject = request_headers.query.message_subject || null;
var msg_body = request_headers.query.message_body || null;
var to_name = request_headers.query.whatever_webtv_sends_this_as || null;
@@ -47,6 +55,7 @@ Location: wtv-mail:/sendmail`;
if (mail_draft_data.no_signature) no_signature = mail_draft_data.no_signature;
if (mail_draft_data.msg_url) msg_url = mail_draft_data.msg_url;
if (mail_draft_data.msg_url_title) msg_url_title = mail_draft_data.msg_url_title;
+ if (mail_draft.data.newsgroup) newsgroup = mail_draft_data.newsgroup;
}
if (request_headers.query.togglesign == "true") no_signature = false;
@@ -71,7 +80,7 @@ Content-Type: audio/wav`;
var username = ssid_sessions[socket.ssid].getSessionData("subscriber_username");
var userdisplayname = wtvshared.htmlEntitize(ssid_sessions[socket.ssid].getSessionData("subscriber_name"));
- var address = username + "@" + minisrv_config.config.service_name
+ var address = username + "@" + minisrv_config.config.domain_name
var notImplementedAlert = new clientShowAlert({
'image': minisrv_config.config.service_logo,
'message': "This feature is not available.",
@@ -102,19 +111,79 @@ Content-Type: audio/wav`;
attachments.push({ 'Content-Type': 'audio/wav', data: new message_voicemail_data });
}
}
+ if (newsgroup !== null) {
+ var request_is_async = true;
+ if (msg_body === null) {
+ doClientError("Please type a message to send to the group.");
+ sendToClient(socket, headers, '');
+ } else {
+ const Client = require('newsie').default
+ const client = new Client({
+ host: minisrv_config.services[request_headers.query['discuss-prefix'] || "wtv-news"].upstream_address,
+ port: minisrv_config.services[request_headers.query['discuss-prefix'] || "wtv-news"].upstream_port
+ })
- var messagereturn = ssid_sessions[socket.ssid].mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature, attachments, msg_url, msg_url_title);
- if (messagereturn !== true) {
- var errpage = wtvshared.doErrorPage(400, messagereturn);
- headers = errpage[0];
- data = errpage[1];
+ client.connect()
+ .then(response => {
+ return client.post()
+ })
+ .then(response => {
+ if (response.code == 340) {
+ var articleData = {};
+ articleData.headers = {
+ 'Relay-Version': "version zefie_wtvp_minisrv " + minisrv_config.version + "; site " + minisrv_config.config.domain_name,
+ 'Posting-Version': "version zefie_wtvp_minisrv " + minisrv_config.version + "; site " + minisrv_config.config.domain_name,
+ 'Path': "@" + minisrv_config.config.domain_name,
+ 'From': from_addr,
+ 'Newsgroups': newsgroup,
+ 'Subject': msg_subject || "(No subject)",
+ 'Message-ID': "<"+ssid_sessions[socket.ssid].generatePassword(16) + "@" + minisrv_config.config.domain_name+">",
+ 'Date': strftime('%A, %d-%b-%y %k:%M:%S %z', new Date())
+ }
+ if (msg_body) {
+ articleData.body = msg_body.split("\n");
+ } else {
+ articleData.body = [];
+ }
+ return response.send(articleData);
+ } else {
+ clientErrorMsg("Could not send post. Server returned error " + response.code);
+ sendToClient(socket, headers, '');
+ return client.quit();
+ }
+ })
+ .then(response => {
+ if (response.code !== 240) {
+ clientErrorMsg("Could not send post. Server returned error " + response.code);
+ sendToClient(socket, headers, '');
+ } else {
+ headers = `300 OK
+wtv-expire: wtv-news:/news?group=${newsgroup}
+wtv-expire: wtv-mail:/sendmail
+Location: wtv-news:/news?group=${newsgroup}`;
+ sendToClient(socket, headers, '');
+ return client.quit()
+ }
+ }).catch(e => {
+ console.log('usenet upstream uncaught error', e);
+ clientErrorMsg("Could not send post. Server returned unknown error");
+ sendToClient(socket, headers, '');
+ });
+ }
} else {
- ssid_sessions[socket.ssid].deleteSessionData("mail_draft");
- ssid_sessions[socket.ssid].deleteSessionData("mail_draft_attachments");
- headers = `300 OK
+ var messagereturn = ssid_sessions[socket.ssid].mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature, attachments, msg_url, msg_url_title);
+ if (messagereturn !== true) {
+ var errpage = wtvshared.doErrorPage(400, messagereturn);
+ headers = errpage[0];
+ data = errpage[1];
+ } else {
+ ssid_sessions[socket.ssid].deleteSessionData("mail_draft");
+ ssid_sessions[socket.ssid].deleteSessionData("mail_draft_attachments");
+ headers = `300 OK
wtv-expire: wtv-mail:/listmail
wtv-expire: wtv-mail:/sendmail
Location: wtv-mail:/listmail`;
+ }
}
} else if (request_headers.query.saveoff) {
@@ -124,14 +193,15 @@ Location: wtv-mail:/listmail`;
msg_body: msg_body,
no_signature: no_signature,
msg_url: msg_url,
- msg_url_title: msg_url_title
+ msg_url_title: msg_url_title,
+ newsgroup: newsgroup
}
ssid_sessions[socket.ssid].setSessionData("mail_draft", mail_draft_data);
headers = `200 OK
Content-type: text/html
wtv-expire: wtv-mail:/sendmail`;
}
- } else {
+ } else {
headers = `200 OK
Content-type: text/html`;
@@ -195,7 +265,7 @@ location = "client:submitform?name=sendform&submitname=gabbing&submitvalue=true"
location.reload(); }
-Write an e-mail message
+${pageTitle}
@@ -203,6 +273,7 @@ Write an e-mail message
+
@@ -230,18 +301,22 @@ Write an e-mail message
|
|
| Mail list
- |
+`;
+ if (!newsgroup) {
+ data += `
| |
|
|
- |
+ | ;
+ | Address;
+`;
+ }
+data += `
|
|
|
|
@@ -288,7 +363,7 @@ Write an e-mail message
-
+
@@ -314,7 +389,7 @@ Write an e-mail message
-Write an e-mail message
+${pageTitle}
| | |