diff server.php @ 13:cccd73f72bf6 draft

Added filtering support and several bugfixes
author Ivo Smits <Ivo@UCIS.nl>
date Thu, 10 Jul 2014 22:26:45 +0200
parents 7917bd536187
children 372f4e195986
line wrap: on
line diff
--- a/server.php	Wed Jun 12 22:22:07 2013 +0200
+++ b/server.php	Thu Jul 10 22:26:45 2014 +0200
@@ -95,9 +95,9 @@
 			if ($groupname === FALSE) {
 				$group = $currentgroup;
 			} else {
-				$group = $db->evalRowAssoc('SELECT * FROM `groups` WHERE `name` = ?', $groupname);
+				$group = $db->evalRowAssoc('SELECT * FROM `groups` WHERE `name` = ?', array($groupname));
 			}
-			if ($group === FALSE) {
+			if (!$group) {
 				nntp_writeline(STDOUT, '411 No such group '.$groupname);
 			} else {
 				$currentgroup = $group;
@@ -173,10 +173,10 @@
 				$articlea = $db->evalRowAssoc('SELECT * FROM `messages` WHERE `id` = ?', $article['message']);
 				if ($articlea === FALSE) {
 					nntp_writeline(STDOUT, '430 no such article found');
-					return NULL;
+				} else {
+					$currentarticle = $article;
+					nntp_writeline(STDOUT, '223 '.$article['number'].' <'.$articlea['messageid'].'> ok');
 				}
-				$currentarticle = $article;
-				nntp_writeline(STDOUT, '223 '.$article['number'].' <'.$articlea['messageid'].'> ok');
 			}
 			break;
 		case 'POST':
@@ -196,8 +196,8 @@
 				break;
 			}
 			$messageid = substr($messageid, 1, -1);
-			if ($db->evalRow('SELECT `id` FROM `messages` WHERE `messageid` = ?', $messageid) !== FALSE) {
-				nntp_writeline(STDOUT, '435 Duplicate');
+			if (!nntp_article_wanted($messageid)) {
+				nntp_writeline(STDOUT, '435 Duplicate or filtered');
 				break;
 			}
 			nntp_writeline(STDOUT, '335 Send article to be transferred');
@@ -216,8 +216,8 @@
 				break;
 			}
 			$messageid = substr($messageid, 1, -1);
-			if ($db->evalRow('SELECT `id` FROM `messages` WHERE `messageid` = ?', $messageid) !== FALSE) {
-				nntp_writeline(STDOUT, '438 <'.$messageid.'> Duplicate');
+			if (!nntp_article_wanted($messageid)) {
+				nntp_writeline(STDOUT, '438 <'.$messageid.'> Duplicate or filtered');
 				break;
 			}
 			nntp_writeline(STDOUT, '238 <'.$messageid.'> Send article to be transferred');
@@ -230,8 +230,8 @@
 				break;
 			}
 			$messageid = substr($messageid, 1, -1);
-			if ($db->evalRow('SELECT `id` FROM `messages` WHERE `messageid` = ?', $messageid) !== FALSE) {
-				nntp_writeline(STDOUT, '439 <'.$messageid.'> Duplicate');
+			if (!nntp_article_wanted($messageid)) {
+				nntp_writeline(STDOUT, '439 <'.$messageid.'> Duplicate or filtered');
 				break;
 			}
 			try {
@@ -290,6 +290,7 @@
 		}
 	} else {
 		nntp_writeline(STDOUT, '500 Error in arguments');
+		return NULL;
 	}
 	$article['messagenumber'] = $messagenumber;
 	return $article;