From 7366db90d36d2cd2ef006a24f85b831430afc9c0 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 1 Apr 2004 11:57:31 +0000
Subject: [PATCH] Added support for the "-mail" command-line switch to make the
 mail database available over NNTP (for sysops only).

---
 exec/nntpservice.js | 41 +++++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/exec/nntpservice.js b/exec/nntpservice.js
index 589e99f013..4e00dd8ded 100644
--- a/exec/nntpservice.js
+++ b/exec/nntpservice.js
@@ -33,6 +33,7 @@ var slave = false;
 var bogus_cmd_counter = 0;
 var max_bogus_cmds = 10;
 var filter_bogus_clients = false;
+var include_mail = true;
 
 // Parse arguments
 for(i=0;i<argc;i++) {
@@ -42,6 +43,8 @@ for(i=0;i<argc;i++) {
 		filter_bogus_clients = true;
 	else if(argv[i].toLowerCase()=="-na")
 		no_anonymous = true;
+	else if(argv[i].toLowerCase()=="-mail")
+		include_mail = true;
 	else if(argv[i].toLowerCase()=="-auto") {
 		no_anonymous = true;
 		auto_login = true;
@@ -229,6 +232,13 @@ while(client.socket.is_connected && !quit) {
 			}
 			else {
 				writeln("215 list of newsgroups follows");
+				if(include_mail && user.security.level == 99) {
+					msgbase=new MsgBase("mail");
+					if(msgbase.open()==true) {
+						writeln(format("mail %u %u n", msgbase.last_msg, msgbase.first_msg));
+						msgbase.close();
+					}
+				}
 				for(g in msg_area.grp_list)
 					for(s in msg_area.grp_list[g].sub_list) {
 						msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
@@ -248,6 +258,8 @@ while(client.socket.is_connected && !quit) {
 
 		case "XGTITLE":
 			writeln("282 list of newsgroups follows");
+			if(include_mail && user.security.level == 99)
+				writeln("mail complete mail database");
 			for(g in msg_area.grp_list)
 				for(s in msg_area.grp_list[g].sub_list)
 					writeln(format("%s %s"
@@ -268,16 +280,25 @@ while(client.socket.is_connected && !quit) {
 				break;
 			}
 			found=false;
-			for(g in msg_area.grp_list)
-				for(s in msg_area.grp_list[g].sub_list)
-					if(msg_area.grp_list[g].sub_list[s].newsgroup.toLowerCase()==cmd[1].toLowerCase()) {
-						msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
-						if(msgbase.open!=undefined && msgbase.open()==false)
-							continue;
-						found=true;
-						selected=msg_area.grp_list[g].sub_list[s];
-						break;
-					}
+			if(include_mail && user.security.level==99 && cmd[1].toLowerCase()=="mail") {
+				msgbase=new MsgBase("mail");
+				if(msgbase.open()==true) {
+					selected = { newsgroup: "mail" };
+					found=true;
+				}
+			}
+			if(!found) {
+				for(g in msg_area.grp_list)
+					for(s in msg_area.grp_list[g].sub_list)
+						if(msg_area.grp_list[g].sub_list[s].newsgroup.toLowerCase()==cmd[1].toLowerCase()) {
+							msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
+							if(msgbase.open!=undefined && msgbase.open()==false)
+								continue;
+							found=true;
+							selected=msg_area.grp_list[g].sub_list[s];
+							break;
+						}
+			}
 			if(found)
 				writeln(format("211 %u %u %u %s group selected"
 					,msgbase.total_msgs	// articles in group
-- 
GitLab