diff --git a/exec/nntpservice.js b/exec/nntpservice.js index a8080af0a3ca8860a88fc147d839d59b2457254b..feb5f8f0637839987009d23b64244c13104fc4a8 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++;