From 955109ba8af5ceb76d52cadcb7d726bae4f612ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Sun, 8 Nov 2009 18:44:12 +0100 Subject: [PATCH] Improves blacklist verification. --- configs/platal.ini | 1 + include/newsletter.inc.php | 9 ++++----- modules/newsletter.php | 9 +++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/configs/platal.ini b/configs/platal.ini index 946bbf0..e2d678e 100644 --- a/configs/platal.ini +++ b/configs/platal.ini @@ -45,6 +45,7 @@ alias_dom2 = "" blacklist_check_url = "" blacklist_host_resolution_limit = +domain_whitelist = "" [MailStorage] imap_active = 0 diff --git a/include/newsletter.inc.php b/include/newsletter.inc.php index b03b419..e8cc260 100644 --- a/include/newsletter.inc.php +++ b/include/newsletter.inc.php @@ -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; } } } diff --git a/modules/newsletter.php b/modules/newsletter.php index 75ab2e9..4f65bf9 100644 --- a/modules/newsletter.php +++ b/modules/newsletter.php @@ -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."); -- 2.1.4