Skip to content
Snippets Groups Projects
Commit e37f0e00 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Create/use news_get_from() function, copied from nntpservice.js

Use the fully-formed "From" header field in responses to NNTP
OVER/XOVER and HDR/XHDR requests.

This should fix issue #829 reported by Accession
parent 52460c3a
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,37 @@ function get_news_subject(hdr) ...@@ -14,6 +14,37 @@ function get_news_subject(hdr)
return hdr.subject; return hdr.subject;
} }
function get_news_from(hdr)
{
if(!hdr.from_net_type || !hdr.from_net_addr) /* local message */
return format("\"%s\" <%s@%s>"
,hdr.from
,hdr.from.replace(/ /g,".").toLowerCase()
,system.inetaddr);
if(!hdr.from_net_addr.length)
return hdr.from;
if(hdr.from_net_addr.indexOf('@')!=-1)
return format("\"%s\" <%s>"
,hdr.from
,hdr.from_net_addr);
if(hdr.from_net_type == NET_FIDO)
return format("\"%s\" (%s) <%s>"
,hdr.from
,hdr.from_net_addr
,fidoaddr_to_emailaddr(hdr.from, hdr.from_net_addr));
if(hdr.from_net_type == NET_QWK)
return format("\"%s\" (%s) <%s!%s@%s>"
,hdr.from
,hdr.from_net_addr
,hdr.from_net_addr
,hdr.from.replace(/ /g,".")
,system.inetaddr);
return format("\"%s\" <%s@%s>"
,hdr.from
,hdr.from.replace(/ /g,".").toLowerCase()
,hdr.from_net_addr);
}
function write_news_header(hdr,writeln) function write_news_header(hdr,writeln)
{ {
/* Required header fields */ /* Required header fields */
......
...@@ -562,7 +562,7 @@ while(client.socket.is_connected && !quit) { ...@@ -562,7 +562,7 @@ while(client.socket.is_connected && !quit) {
writeln(format("%u\t%s\t%s\t%s\t%s\t%s\t%u\t%u\tXref:%s" writeln(format("%u\t%s\t%s\t%s\t%s\t%s\t%u\t%u\tXref:%s"
,i ,i
,get_news_subject(hdr) ,get_news_subject(hdr)
,hdr.from ,get_news_from(hdr)
,hdr.date ,hdr.date
,hdr.id // message-id ,hdr.id // message-id
,hdr.reply_id ? hdr.reply_id : '' // references ,hdr.reply_id ? hdr.reply_id : '' // references
...@@ -618,7 +618,7 @@ while(client.socket.is_connected && !quit) { ...@@ -618,7 +618,7 @@ while(client.socket.is_connected && !quit) {
field=get_news_subject(hdr); field=get_news_subject(hdr);
break; break;
case "from": case "from":
field=hdr.from; field=get_news_from(hdr);
break; break;
case "reply-to": case "reply-to":
field=hdr.replyto; field=hdr.replyto;
...@@ -767,34 +767,7 @@ while(client.socket.is_connected && !quit) { ...@@ -767,34 +767,7 @@ while(client.socket.is_connected && !quit) {
if(cmd[0].toUpperCase()!="BODY") { if(cmd[0].toUpperCase()!="BODY") {
if(!hdr.from_net_type || !hdr.from_net_addr) /* local message */ writeln("From: " + get_news_from(hdr));
writeln(format("From: \"%s\" <%s@%s>"
,hdr.from
,hdr.from.replace(/ /g,".").toLowerCase()
,system.inetaddr));
else if(!hdr.from_net_addr.length)
writeln(format("From: %s",hdr.from));
else if(hdr.from_net_addr.indexOf('@')!=-1)
writeln(format("From: \"%s\" <%s>"
,hdr.from
,hdr.from_net_addr));
else if(hdr.from_net_type == NET_FIDO)
writeln(format("From: \"%s\" (%s) <%s>"
,hdr.from
,hdr.from_net_addr
,fidoaddr_to_emailaddr(hdr.from, hdr.from_net_addr)));
else if(hdr.from_net_type == NET_QWK)
writeln(format("From: \"%s\" (%s) <%s!%s@%s>"
,hdr.from
,hdr.from_net_addr
,hdr.from_net_addr
,hdr.from.replace(/ /g,".")
,system.inetaddr));
else
writeln(format("From: \"%s\" <%s@%s>"
,hdr.from
,hdr.from.replace(/ /g,".").toLowerCase()
,hdr.from_net_addr));
if(hdr.path==undefined) if(hdr.path==undefined)
hdr.path="not-for-mail"; hdr.path="not-for-mail";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment