diff --git a/exec/listserv.js b/exec/listserv.js deleted file mode 100644 index a76b706d3af23869e62983ee0c688f3f620b23f7..0000000000000000000000000000000000000000 --- a/exec/listserv.js +++ /dev/null @@ -1,175 +0,0 @@ -// listserv.js - -// Mailing List Server module for Synchronet v3.11c - -load("sbbsdefs.js"); - -const REVISION = "$Revision$".split(' ')[1]; - -log(LOG_INFO,"Synchronet ListServ " + REVISION); - -js.auto_terminate=false; - -var ini_fname = system.ctrl_dir + "listserv.ini"; - -ini_file = new File(ini_fname); -if(!ini_file.open("r")) { - log(LOG_ERR,format("!ERROR %s opening ini_file: %s" - ,ini_file.error, ini_fname)); - exit(); -} -list_array=ini_file.iniGetAllObjects("name","list:"); -ini_file.close(); -if(!list_array.length) { - log(LOG_ERR,"!No lists defined in " + ini_fname); - exit(); -} - -if(this.message_text_filename!=undefined) { /* Subscription control */ - - exit(); -} - -mailbase = new MsgBase("mail"); -if(mailbase.open()==false) { - log(LOG_ERR,"!ERROR " + mailbase.error + " opening mail database"); - exit(); -} - -for(l in list_array) { - - if(js.terminated) { - log(LOG_WARNING,"Terminated"); - break; - } - - if(list_array[l].disabled) - continue; - - list_name = list_array[l].name; - - msgbase = new MsgBase(list_array[l].sub); - if(msgbase.open()==false) { - log(LOG_ERR,format("%s !ERROR %s opening msgbase: %s" - ,list_name, msgbase.error, list_array[l].sub)); - delete msgbase; - continue; - } - - /* Get user (subscriber) list */ - user_fname = msgbase.file + ".listserv.users"; - user_file = new File(user_fname); - if(!user_file.open("r")) { - log(LOG_ERR,format("%s !ERROR %s opening file: %s" - ,list_name, user_file.error, user_fname)); - delete msgbase; - continue; - } - user_list = user_file.iniGetAllObjects(); - -/*** - if(!user_list.length) { - log(LOG_NOTICE,"No subscribers to list: " + list_name); - delete msgbase; - continue; - } -***/ - - /* Get export message pointer */ - ptr_fname = msgbase.file + ".listserv.ptr"; - ptr_file = new File(ptr_fname); - if(!ptr_file.open("w+")) { - log(LOG_ERR,format("%s !ERROR %s opening/creating file: %s" - ,list_name, ptr_file.error, ptr_fname)); - delete msgbase; - continue; - } - - last_msg=msgbase.last_msg; - ptr = Number(ptr_file.readln()); - - if(ptr < msgbase.first_msg) - ptr = msgbase.first_msg; - else - ptr++; - - for(;ptr<=last_msg && !js.terminated; ptr++) { - hdr = msgbase.get_msg_header( - /* retrieve by offset? */ false, - /* message number */ ptr, - /* regenerate msg-id? */ false - ); - if(hdr == null) { - /** - log(LOG_WARNING,format("%s !ERROR %s getting msg header #%lu" - ,list_name, msgbase.error, ptr)); - **/ - continue; - } - if(hdr.attr&(MSG_DELETE|MSG_PRIVATE)) { /* marked for deletion */ - log(LOG_NOTICE,format("%s Skipping %s message #%lu from %s: %s" - ,list_name, hdr.attr&MSG_DELETE ? "deleted":"private" - ,ptr, hdr.from, hdr.subject)); - continue; - } - if(hdr.attr&MSG_MODERATED && !(hdr.attr&MSG_VALIDATED)) { - log(LOG_NOTICE,format("%s Stopping at unvalidated moderated message #%lu from %s: %s" - ,list_name, ptr, hdr.from, hdr.subject)); - ptr--; - break; - } - - body = msgbase.get_msg_body( - false /* retrieve by offset */ - ,ptr /* message number */ - ,true /* remove ctrl-a codes */ - ,false /* rfc822 formatted text */ - ,true /* include tails */ - ); - if(body == null) { - log(LOG_ERR,format("%s !ERROR %s reading text of message #%lu" - ,list_name, msgbase.error, ptr)); - continue; - } - - rcpt_list = new Array(); - for(u in user_list) { - if(js.terminated) - break; - if(user_list[u].disabled || !user_list[u].addr) - continue; - log(LOG_DEBUG,format("%s Enqueing message #%lu for %s <%s>" - ,list_name, ptr, user_list[u].name, user_list[u].addr)); - rcpt_list.push( { to: user_list[u].name, - to_net_addr: user_list[u].addr, - to_net_type: NET_INTERNET - } ); - } - if(js.terminated) { - ptr--; - break; - } - if(rcpt_list.length < 1) { - log(LOG_NOTICE,format("%s No active subscriptions", list_name)); - continue; - } - - log(LOG_INFO,format("%s Sending message #%lu from %s to %lu recipients: %s" - ,list_name, ptr, hdr.from, rcpt_list.length, hdr.subject)); - - if(!mailbase.save_msg(hdr,body,rcpt_list)) - log(LOG_ERR,format("%s !ERROR %s saving mail message" - ,list_name, mailbase.error)); - } - - if(ptr > last_msg) - ptr = last_msg; - - ptr_file.rewind(); - ptr_file.length=0; // truncate - ptr_file.writeln(ptr); - ptr_file.close(); -} - -/* clean-up */ -mailbase.close(); \ No newline at end of file