diff --git a/exec/nntpservice.js b/exec/nntpservice.js index 818d9d6173ab636a3b08669ac31ce08fd99382be..629ea0ae52d98fde527d9c3016938ce6dfa1acaf 100644 --- a/exec/nntpservice.js +++ b/exec/nntpservice.js @@ -244,19 +244,8 @@ while(client.socket.is_connected && !quit) { break; case "LIST": - if(cmd[1]!=undefined && cmd[1].toUpperCase()=="OVERVIEW.FMT") { - writeln("215 Order of fields in overview database."); - writeln("Subject:"); - writeln("From:"); - writeln("Date:"); - writeln("Message-ID:"); - writeln("References:"); - writeln("Bytes:"); - writeln("Lines:"); - writeln("Xref:full"); - } - else { - writeln("215 list of newsgroups follows"); + if(cmd[1]==undefined) { + writeln("215 list of newsgroups follows"); if(include_mail && user.security.level == 99) { msgbase=new MsgBase("mail"); if(msgbase.open()==true) { @@ -277,8 +266,32 @@ while(client.socket.is_connected && !quit) { )); msgbase.close(); } + writeln("."); // end of list + } + else if(cmd[1].toUpperCase()=="OVERVIEW.FMT") { + writeln("215 Order of fields in overview database."); + writeln("Subject:"); + writeln("From:"); + writeln("Date:"); + writeln("Message-ID:"); + writeln("References:"); + writeln("Bytes:"); + writeln("Lines:"); + writeln("Xref:full"); + writeln("."); // end of list + } + else if(cmd[1].toUpperCase()=="EXTENSIONS") { + writeln("202 Extensions supported:"); + writeln("OVER"); + writeln("HDR"); + writeln("LISTGROUP"); + writeln("XGTITLE"); + writeln("."); // end of list + } + else { + writeln("500 Syntax error or unknown command"); + log(LOG_NOTICE,"!unsupported LIST argument: " + cmd[1]); } - writeln("."); // end of list break; case "XGTITLE": @@ -307,7 +320,7 @@ while(client.socket.is_connected && !quit) { case "LISTGROUP": found=false; if(cmd[1]==undefined) { - if(msgbase==null) { + if(!selected) { writeln("412 no newsgroup selected"); break; } @@ -362,11 +375,10 @@ while(client.socket.is_connected && !quit) { case "OVER": case "XOVER": - if(msgbase==null) { + if(!selected) { writeln("412 no newsgroup selected"); break; } - writeln("224 Overview information follows"); var first, last; if(cmd[1]==undefined) first=last=current_article; @@ -376,6 +388,7 @@ while(client.socket.is_connected && !quit) { last=Number(range[1]); } else first=last=Number(cmd[1]); + writeln("224 Overview information follows for articles " + first + " through " + last); for(i=first;i<=last;i++) { hdr=msgbase.get_msg_header(false,i); if(hdr==null) @@ -397,12 +410,13 @@ while(client.socket.is_connected && !quit) { writeln("."); // end of list break; + case "HDR": case "XHDR": if(cmd[1]==undefined || cmd[2]==undefined) { writeln("500 Syntax error or unknown command"); break; } - if(msgbase==null) { + if(!selected) { writeln("412 no newsgroup selected"); break; } @@ -478,7 +492,7 @@ while(client.socket.is_connected && !quit) { case "HEAD": case "BODY": case "STAT": - if(msgbase==null) { + if(!selected) { writeln("412 no newsgroup selected"); bogus_cmd_counter++; break; @@ -613,7 +627,7 @@ while(client.socket.is_connected && !quit) { case "NEXT": case "LAST": - if(msgbase==null) { + if(!selected) { writeln("412 no newsgroup selected"); break; }