|
@@ -161,13 +161,15 @@ class ExclusionsDB(object): |
|
|
|
|
|
|
|
|
Return ``True`` if the URL is in the database, or ``False`` otherwise. |
|
|
Return ``True`` if the URL is in the database, or ``False`` otherwise. |
|
|
""" |
|
|
""" |
|
|
normalized = re.sub(r"https?://(www\.)?", "", url.lower()) |
|
|
|
|
|
|
|
|
normalized = re.sub(r"^https?://(www\.)?", "", url.lower()) |
|
|
query = """SELECT exclusion_url FROM exclusions |
|
|
query = """SELECT exclusion_url FROM exclusions |
|
|
WHERE exclusion_sitename = ? OR exclusion_sitename = ?""" |
|
|
WHERE exclusion_sitename = ? OR exclusion_sitename = ?""" |
|
|
with sqlite.connect(self._dbfile) as conn, self._db_access_lock: |
|
|
with sqlite.connect(self._dbfile) as conn, self._db_access_lock: |
|
|
for (excl,) in conn.execute(query, (sitename, "all")): |
|
|
for (excl,) in conn.execute(query, (sitename, "all")): |
|
|
if excl.startswith("*."): |
|
|
if excl.startswith("*."): |
|
|
matches = excl[2:] in urlparse(url.lower()).netloc |
|
|
matches = excl[2:] in urlparse(url.lower()).netloc |
|
|
|
|
|
elif excl.startswith("re:"): |
|
|
|
|
|
matches = re.match(excl[3:], normalized) |
|
|
else: |
|
|
else: |
|
|
matches = normalized.startswith(excl) |
|
|
matches = normalized.startswith(excl) |
|
|
if matches: |
|
|
if matches: |
|
|