comparison common.php @ 14:372f4e195986 draft default tip

Added article blacklist function, switch to binary-safe latin1 character set for database
author Ivo Smits <Ivo@UCIS.nl>
date Thu, 17 Jul 2014 23:24:17 +0200
parents cccd73f72bf6
children
comparison
equal deleted inserted replaced
13:cccd73f72bf6 14:372f4e195986
70 } 70 }
71 71
72 function nntp_article_wanted($messageid) { 72 function nntp_article_wanted($messageid) {
73 global $db, $pnewss_hooks; 73 global $db, $pnewss_hooks;
74 if ($db->evalRow('SELECT `id` FROM `messages` WHERE `messageid` = ?', $messageid) !== FALSE) return FALSE; 74 if ($db->evalRow('SELECT `id` FROM `messages` WHERE `messageid` = ?', $messageid) !== FALSE) return FALSE;
75 if ($db->evalRow('SELECT * FROM `blacklist` WHERE `messageid` = ?', $messageid) !== FALSE) return FALSE;
75 if (!pnewss_call_filter_hooks($pnewss_hooks['article_filter'], array(array('messageid' => $messageid)))) return FALSE; 76 if (!pnewss_call_filter_hooks($pnewss_hooks['article_filter'], array(array('messageid' => $messageid)))) return FALSE;
76 return TRUE; 77 return TRUE;
77 } 78 }
78 79
79 function nntp_article_store($lines, $header = array()) { 80 function nntp_article_store($lines, $header = array()) {
134 $messageid = $headers['MESSAGE-ID']; 135 $messageid = $headers['MESSAGE-ID'];
135 if (strlen($messageid) < 3 || strlen($messageid) > 250 || $messageid[0] != '<' || strpos($messageid, '>') !== strlen($messageid) - 1) throw new Exception('Bad Message-ID'); 136 if (strlen($messageid) < 3 || strlen($messageid) > 250 || $messageid[0] != '<' || strpos($messageid, '>') !== strlen($messageid) - 1) throw new Exception('Bad Message-ID');
136 $messageid = substr($messageid, 1, -1); 137 $messageid = substr($messageid, 1, -1);
137 $article = $db->evalRowAssoc('SELECT * FROM `messages` WHERE `messageid` = ?', $messageid); 138 $article = $db->evalRowAssoc('SELECT * FROM `messages` WHERE `messageid` = ?', $messageid);
138 if ($article !== FALSE) throw new Exception('Duplicate'); 139 if ($article !== FALSE) throw new Exception('Duplicate');
140 if ($db->evalRow('SELECT * FROM `blacklist` WHERE `messageid` = ?', $messageid) !== FALSE) throw new Exception('Blacklisted Message-ID');
139 $headers['PATH'] = 'pNewss.Core.UCIS.nl'.(isset($headers['PATH'])?'!'.$headers['PATH']:''); 141 $headers['PATH'] = 'pNewss.Core.UCIS.nl'.(isset($headers['PATH'])?'!'.$headers['PATH']:'');
140 foreach (array('Path', 'From', 'Newsgroups', 'Subject', 'Date', 'Message-ID', 'Sender') as $headername) { 142 foreach (array('Path', 'From', 'Newsgroups', 'Subject', 'Date', 'Message-ID', 'Sender') as $headername) {
141 if (isset($headers[strtoupper($headername)])) $header[] = $headername.': '.$headers[strtoupper($headername)]; 143 if (isset($headers[strtoupper($headername)])) $header[] = $headername.': '.$headers[strtoupper($headername)];
142 } 144 }
143 if (!pnewss_call_filter_hooks($pnewss_hooks['article_filter'], array(array('messageid' => $messageid, 'headers' => $headers, 'body' => $lines)))) throw new Exception('Filtered'); 145 if (!pnewss_call_filter_hooks($pnewss_hooks['article_filter'], array(array('messageid' => $messageid, 'headers' => $headers, 'body' => $lines)))) throw new Exception('Filtered');
144 $headertext = implode("\r\n", $header); 146 $headertext = implode("\r\n", $header);
145 $bodytext = implode("\r\n", $lines); 147 $bodytext = implode("\r\n", $lines);
146 if (strlen($headertext) > 65535 || strlen($bodytext) > 16777215) throw new Exception('Message too big'); 148 if (strlen($messageid) > 255 || strlen($headertext) > 65535 || strlen($bodytext) > 16777215) throw new Exception('Message too big');
147 $id = $db->insert('INSERT INTO `messages` (`messageid`, `header`, `body`) VALUES (?, ?, ?)', array($messageid, $headertext, $bodytext)); 149 $id = $db->insert('INSERT INTO `messages` (`messageid`, `header`, `body`) VALUES (?, ?, ?)', array($messageid, $headertext, $bodytext));
148 foreach ($newsgroups as $groupid) $db->insert('INSERT INTO `groupmessages` (`group`, `message`) VALUES (?, ?)', array($groupid, $id)); 150 foreach ($newsgroups as $groupid) $db->insert('INSERT INTO `groupmessages` (`group`, `message`) VALUES (?, ?)', array($groupid, $id));
149 pnewss_call_hooks($pnewss_hooks['article_stored'], array(array('messageid' => $messageid, 'headers' => $headers, 'body' => $lines, 'dbid' => $id))); 151 pnewss_call_hooks($pnewss_hooks['article_stored'], array(array('messageid' => $messageid, 'headers' => $headers, 'body' => $lines, 'dbid' => $id)));
150 return $messageid; 152 return $messageid;
151 } 153 }