From ad4912f2e7c5ada1e6ee4c51f841c559ef8410c5 Mon Sep 17 00:00:00 2001
From: barbushin <barbushin@gmail.com>
Date: Wed, 15 Jul 2015 12:08:51 +0300
Subject: [PATCH] Ignore sub-domains in whitelist urls matching

---
 core/Tracker/VisitExcluded.php                  |  2 +-
 tests/PHPUnit/Integration/Tracker/VisitTest.php | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php
index ef0cd00b6d..0bc6fa2fbb 100644
--- a/core/Tracker/VisitExcluded.php
+++ b/core/Tracker/VisitExcluded.php
@@ -293,7 +293,7 @@ class VisitExcluded
         if (!empty($site['exclude_unknown_urls']) && !empty($site['hosts'])) {
             $trackingHost = parse_url($this->request->getParam('url'), PHP_URL_HOST);
             foreach ($site['hosts'] as $siteHost) {
-                if ($trackingHost == $siteHost) {
+                if ($trackingHost == $siteHost || (substr($trackingHost, -strlen($siteHost) - 1) === ('.' . $siteHost))) {
                     return false;
                 }
             }
diff --git a/tests/PHPUnit/Integration/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Tracker/VisitTest.php
index 107c16c083..e870fa6c51 100644
--- a/tests/PHPUnit/Integration/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Integration/Tracker/VisitTest.php
@@ -108,8 +108,6 @@ class VisitTest extends IntegrationTestCase
                 'http://test.com/uri' => true,
                 'http://test.com/?query' => true,
                 'http://xtest.com' => false,
-                'http://x.test.com' => false,
-                'http://x.com/test.com' => false,
             )),
             array(array('http://test.com', 'http://localhost'), true, array(
                 'http://test.com' => true,
@@ -119,6 +117,16 @@ class VisitTest extends IntegrationTestCase
             array(array('http://test.com'), false, array(
                 'http://x.com' => true,
             )),
+            array(array('http://test.com', 'http://sub.test2.com'), true, array(
+                'http://sub.test.com' => true,
+                'http://sub.sub.test.com' => true,
+                'http://subtest.com' => false,
+                'http://test.com.org' => false,
+                'http://sub.test2.com' => true,
+                'http://x.sub.test2.com' => true,
+                'http://xsub.test2.com' => false,
+                'http://sub.test2.com.org' => false,
+            )),
         );
     }
 
-- 
GitLab