From 35ec923e0909eb294769ddb49ad5fe0338abc0ad Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 14 Nov 2003 22:17:28 +0000
Subject: [PATCH] Enforce user lines_per_message limit.

---
 exec/nntpservice.js | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/exec/nntpservice.js b/exec/nntpservice.js
index a8080af0a3..feb5f8f063 100644
--- a/exec/nntpservice.js
+++ b/exec/nntpservice.js
@@ -557,6 +557,7 @@ while(client.socket.is_connected && !quit) {
 			var header=true;
 			var body="";
 			var newsgroups=new Array();
+			var lines=0;
 			while(client.socket.is_connected) {
 
 				line = client.socket.recvline(512 /*maxlen*/, 300 /*timeout*/);
@@ -582,12 +583,23 @@ while(client.socket.is_connected && !quit) {
 						line=line.slice(1);		// Skip prepended dots
 					body += line;
 					body += "\r\n";
+					lines++;
 					continue;
 				}
 				log(line);
 
 				parse_news_header(hdr,line);	// from newsutil.js
 			}
+
+			if(user.limits!=undefined
+				&& lines > user.limits.lines_per_message) {
+				log(format("!Message of %u lines exceeds user limit (%u lines)"
+					,lines,user.limits.lines_per_message));
+				writeln(format("441 posting failed, number of lines (%u) exceeds max (%u)"
+					,lines,user.limits.lines_per_message));
+				break;
+			}
+
 			newsgroups=hdr.newsgroups.split(',');
 
 			if(hdr.to==undefined && hdr.reply_id!=undefined)
@@ -635,8 +647,8 @@ while(client.socket.is_connected && !quit) {
 							if(msgbase.open!=undefined && msgbase.open()==false)
 								continue;
 						    if(msgbase.save_msg(hdr,body)) {
-							    log(format("%s posted a message (%lu chars) on %s"
-									,user.alias, body.length, newsgroups[n]));
+							    log(format("%s posted a message (%u chars, %u lines) on %s"
+									,user.alias, body.length, lines, newsgroups[n]));
 							    writeln("240 article posted ok");
 							    posted=true;
 								msgs_posted++;
-- 
GitLab