Improves blacklist verification.
authorStéphane Jacob <sj@m4x.org>
Sun, 8 Nov 2009 17:44:12 +0000 (18:44 +0100)
committerStéphane Jacob <sj@m4x.org>
Sun, 8 Nov 2009 21:26:15 +0000 (22:26 +0100)
configs/platal.ini
include/newsletter.inc.php
modules/newsletter.php

index 946bbf0..e2d678e 100644 (file)
@@ -45,6 +45,7 @@ alias_dom2 = ""
 
 blacklist_check_url = ""
 blacklist_host_resolution_limit =
+domain_whitelist = ""
 
 [MailStorage]
 imap_active = 0
index b03b419..e8cc260 100644 (file)
@@ -308,7 +308,7 @@ class NLArticle
     // }}}
     // {{{ function getLinkIps()
 
-    public function getLinkIps(&$gethostbyname_count)
+    public function getLinkIps(&$blacklist_host_resolution_count)
     {
         $matches = $this->parseUrlsFromArticle();
         $article_ips = array();
@@ -322,14 +322,13 @@ class NLArticle
                     list(, $host) = explode('@', $match);
                 }
 
-                if ($gethostbyname_count < $globals->mail->blacklist_host_resolution_limit) {
+                if ($blacklist_host_resolution_count >= $globals->mail->blacklist_host_resolution_limit) {
                    break;
                 }
 
-                if ($host != $globals->mail->alias_dom && $host != $globals->mail->alias_dom2
-                    && $host != $globals->mail->domain && $host != $globals->mail->domain2) {
+                if (!preg_match('/^(' . str_replace(' ', '|', $globals->mail->domain_whitelist) . ')$/i', $host)) {
                     $article_ips = array_merge($article_ips, array(gethostbyname($host) => $host));
-                    ++$gethostbyname_count;
+                    ++$blacklist_host_resolution_count;
                 }
             }
         }
index 75ab2e9..4f65bf9 100644 (file)
@@ -161,12 +161,13 @@ class NewsletterModule extends PLModule
         }
 
         if ($aid == 'blacklist_check') {
+            global $globals;
             $ips_to_check = array();
-            $gethostbyname_count = 0;
+            $blacklist_host_resolution_count = 0;
 
             foreach ($nl->_arts as $key => $articles) {
                 foreach ($articles as $article) {
-                    $article_ips = $article->getLinkIps($gethostbyname_count);
+                    $article_ips = $article->getLinkIps($blacklist_host_resolution_count);
                     if (!empty($article_ips)) {
                         $ips_to_check[$article->title()] = $article_ips;
                     }
@@ -174,8 +175,8 @@ class NewsletterModule extends PLModule
             }
 
             $page->assign('ips_to_check', $ips_to_check);
-            if ($gethostbyname_count >= $globals->mail->blacklist_host_resolution_limit) {
-                $page-trigError("Toutes les url et adresses emails de la lettre"
+            if ($blacklist_host_resolution_count >= $globals->mail->blacklist_host_resolution_limit) {
+                $page->trigError("Toutes les url et adresses emails de la lettre"
                                 . " n'ont pas été prises en compte car la"
                                 . " limite du nombre de résolutions DNS"
                                 . " autorisée a été atteinte.");