diff --git a/exec/listserver.js b/exec/listserver.js index 893ee70627be442345744cf638cab9e2b00b4c28..4620e7f5273b916341ffd74640424ddf69c8c933 100644 --- a/exec/listserver.js +++ b/exec/listserver.js @@ -6,7 +6,7 @@ load("sbbsdefs.js"); const REVISION = "$Revision$".split(' ')[1]; -log(LOG_INFO,"Synchronet ListServer " + REVISION); +log(LOG_INFO,"ListServer " + REVISION); js.auto_terminate=false; @@ -26,7 +26,13 @@ if(!list_array.length) { exit(); } -if(this.recipient_list_filename!=undefined) { /* Subscription control */ +/* Set default list addresses */ +for(var l in list_array) + if(!list_array[l].address) + list_array[l].address = format("%s@%s", list_array[l].name, system.inet_addr); + +/* Inbound message from SMTP Server? */ +if(this.recipient_list_filename!=undefined) { var error_file = new File(processing_error_filename); if(!error_file.open("w")) { @@ -59,6 +65,7 @@ if(this.recipient_list_filename!=undefined) { /* Subscription control */ var header = parse_msg_header(msgtxt); var body = get_msg_body(msgtxt); + var r; /* control message for list server? */ for(r=0;r<rcpt_list.length;r++) { for(n=0;n<name_list.length;n++) { @@ -81,8 +88,11 @@ if(this.recipient_list_filename!=undefined) { /* Subscription control */ /* contribution to mailing list? */ var contribution=false; for(r=0;r<rcpt_list.length;r++) { + var l; for(l=0;l<list_array.length;l++) { - if(rcpt_list[r].Recipient.match(/(\S+)@/)[1].toLowerCase()==list_array[l].name + for(var p in list_array[l]) + log("list_array["+l+"]."+p+" = "+list_array[l][p]); + if(rcpt_list[r].Recipient.toLowerCase()==list_array[l].address.toLowerCase() && !list_array[l].disabled && !list_array[l].readonly) break; @@ -105,7 +115,7 @@ if(mailbase.open()==false) { exit(); } -for(l in list_array) { +for(var l in list_array) { if(js.terminated) { log(LOG_WARNING,"Terminated"); @@ -154,8 +164,8 @@ for(l in list_array) { continue; } - last_msg=msgbase.last_msg; - ptr = Number(ptr_file.readln()); + var last_msg = msgbase.last_msg; + var ptr = Number(ptr_file.readln()); if(ptr < msgbase.first_msg) ptr = msgbase.first_msg; @@ -205,12 +215,12 @@ for(l in list_array) { for(u in user_list) { if(js.terminated) break; - if(user_list[u].disabled || !user_list[u].addr) + if(user_list[u].disabled || !user_list[u].address) continue; log(LOG_DEBUG,format("%s Enqueing message #%lu for %s <%s>" - ,list_name, ptr, user_list[u].name, user_list[u].addr)); + ,list_name, ptr, user_list[u].name, user_list[u].address)); rcpt_list.push( { to: user_list[u].name, - to_net_addr: user_list[u].addr, + to_net_addr: user_list[u].address, to_net_type: NET_INTERNET } ); } @@ -226,6 +236,8 @@ for(l in list_array) { log(LOG_INFO,format("%s Sending message #%lu from %s to %lu recipients: %s" ,list_name, ptr, hdr.from, rcpt_list.length, hdr.subject)); + hdr.replyto_net_type = NET_INTERNET; + hdr.replyto_net_addr = list_array[l].address; if(!mailbase.save_msg(hdr,body,rcpt_list)) log(LOG_ERR,format("%s !ERROR %s saving mail message" ,list_name, mailbase.error));