From 5fe0d7fd6b75a71a19dccc3f3f849913c98087f4 Mon Sep 17 00:00:00 2001 From: Ilya Glotov Date: Thu, 23 Apr 2020 16:16:54 +0300 Subject: [PATCH] Fix slow search #6 --- pymispwarninglists/api.py | 2 +- tests/tests.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pymispwarninglists/api.py b/pymispwarninglists/api.py index 34489aa..799ddef 100644 --- a/pymispwarninglists/api.py +++ b/pymispwarninglists/api.py @@ -102,7 +102,7 @@ class WarningList(): parsed_url = urlparse(value) if parsed_url.hostname: value = parsed_url.hostname - return any(value.endswith(v) for v in self.list) + return any(value == v or value.endswith("."+v.lstrip(".")) for v in self.list) elif self.type == 'cidr': try: value = ip_address(value) diff --git a/tests/tests.py b/tests/tests.py index 71643af..c8d31b2 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -45,4 +45,8 @@ class TestPyMISPWarningLists(unittest.TestCase): results = self.warninglists.search('1e100.net') self.assertEqual(results[0].name, 'List of known google domains') results = self.warninglists.search('something.files.1drv.com') - self.assertEqual(results[0].name, 'Top 1,000,000 most-used sites from Tranco') + self.assertTrue('List of known microsoft domains' in [r.name for r in results]) + results = self.warninglists.search('arbitrary-domain-1e100.net') + self.assertEqual(results, []) + results = self.warninglists.search('phishing.co.uk') + self.assertEqual(results, [])