Merge remote-tracking branch 'origin/pr/3765' into adblock
This commit is contained in:
commit
d7455bcdba
@ -94,14 +94,8 @@ class HostBlocker:
|
|||||||
_done_count: How many files have been read successfully.
|
_done_count: How many files have been read successfully.
|
||||||
_local_hosts_file: The path to the blocked-hosts file.
|
_local_hosts_file: The path to the blocked-hosts file.
|
||||||
_config_hosts_file: The path to a blocked-hosts in ~/.config
|
_config_hosts_file: The path to a blocked-hosts in ~/.config
|
||||||
|
|
||||||
Class attributes:
|
|
||||||
WHITELISTED: Hosts which never should be blocked.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
WHITELISTED = ('localhost', 'localhost.localdomain', 'broadcasthost',
|
|
||||||
'local')
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._blocked_hosts = set()
|
self._blocked_hosts = set()
|
||||||
self._config_blocked_hosts = set()
|
self._config_blocked_hosts = set()
|
||||||
@ -234,15 +228,13 @@ class HostBlocker:
|
|||||||
parts = line.split()
|
parts = line.split()
|
||||||
if len(parts) == 1:
|
if len(parts) == 1:
|
||||||
# "one host per line" format
|
# "one host per line" format
|
||||||
host = parts[0]
|
hosts = [parts[0]]
|
||||||
elif len(parts) == 2:
|
|
||||||
# /etc/hosts format
|
|
||||||
host = parts[1]
|
|
||||||
else:
|
else:
|
||||||
log.misc.error("Failed to parse: {!r}".format(line))
|
# /etc/hosts format
|
||||||
return False
|
hosts = parts[1:]
|
||||||
|
|
||||||
if host not in self.WHITELISTED:
|
for host in hosts:
|
||||||
|
if '.' in host and not host.endswith('.localdomain'):
|
||||||
self._blocked_hosts.add(host)
|
self._blocked_hosts.add(host)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -120,8 +120,10 @@ def assert_urls(host_blocker, blocked=BLOCKLIST_HOSTS,
|
|||||||
|
|
||||||
Ensure URLs in 'blocked' and not in 'whitelisted' are blocked.
|
Ensure URLs in 'blocked' and not in 'whitelisted' are blocked.
|
||||||
All other URLs must not be blocked.
|
All other URLs must not be blocked.
|
||||||
|
|
||||||
|
localhost is an example of a special case that shouldn't be blocked.
|
||||||
"""
|
"""
|
||||||
whitelisted = list(whitelisted) + list(host_blocker.WHITELISTED)
|
whitelisted = list(whitelisted) + ['localhost']
|
||||||
for str_url in urls_to_check:
|
for str_url in urls_to_check:
|
||||||
url = QUrl(str_url)
|
url = QUrl(str_url)
|
||||||
host = url.host()
|
host = url.host()
|
||||||
@ -247,6 +249,16 @@ def test_successful_update(config_stub, basedir, download_stub,
|
|||||||
assert_urls(host_blocker, whitelisted=[])
|
assert_urls(host_blocker, whitelisted=[])
|
||||||
|
|
||||||
|
|
||||||
|
def test_parsing_multiple_hosts_on_line(config_stub, basedir, download_stub,
|
||||||
|
data_tmpdir, tmpdir, win_registry,
|
||||||
|
caplog):
|
||||||
|
"""Ensure multiple hosts on a line get parsed correctly."""
|
||||||
|
host_blocker = adblock.HostBlocker()
|
||||||
|
bytes_host_line = ' '.join(BLOCKLIST_HOSTS).encode('utf-8')
|
||||||
|
host_blocker._parse_line(bytes_host_line)
|
||||||
|
assert_urls(host_blocker, whitelisted=[])
|
||||||
|
|
||||||
|
|
||||||
def test_failed_dl_update(config_stub, basedir, download_stub,
|
def test_failed_dl_update(config_stub, basedir, download_stub,
|
||||||
data_tmpdir, tmpdir, win_registry, caplog):
|
data_tmpdir, tmpdir, win_registry, caplog):
|
||||||
"""One blocklist fails to download.
|
"""One blocklist fails to download.
|
||||||
@ -341,7 +353,7 @@ def test_blocking_with_whitelist(config_stub, basedir, download_stub,
|
|||||||
"""Ensure hosts in content.host_blocking.whitelist are never blocked."""
|
"""Ensure hosts in content.host_blocking.whitelist are never blocked."""
|
||||||
# Simulate adblock_update has already been run
|
# Simulate adblock_update has already been run
|
||||||
# by creating a file named blocked-hosts,
|
# by creating a file named blocked-hosts,
|
||||||
# Exclude localhost from it, since localhost is in HostBlocker.WHITELISTED
|
# Exclude localhost from it as localhost is never blocked via list
|
||||||
filtered_blocked_hosts = BLOCKLIST_HOSTS[1:]
|
filtered_blocked_hosts = BLOCKLIST_HOSTS[1:]
|
||||||
blocklist = create_blocklist(data_tmpdir,
|
blocklist = create_blocklist(data_tmpdir,
|
||||||
blocked_hosts=filtered_blocked_hosts,
|
blocked_hosts=filtered_blocked_hosts,
|
||||||
|
Loading…
Reference in New Issue
Block a user