mirror of
https://github.com/StevenBlack/hosts.git
synced 2026-07-01 02:36:52 +00:00
Implemented connectivity check (Fixed #1038)
This commit is contained in:
@@ -242,7 +242,8 @@ def main():
|
||||
|
||||
update_sources = prompt_for_update(freshen=settings["freshen"], update_auto=auto)
|
||||
if update_sources:
|
||||
update_all_sources(source_data_filename, settings["hostfilename"])
|
||||
if await_network_connection():
|
||||
update_all_sources(source_data_filename, settings["hostfilename"])
|
||||
|
||||
gather_exclusions = prompt_for_exclusions(skip_prompt=auto)
|
||||
|
||||
@@ -325,6 +326,34 @@ def main():
|
||||
flush_cache=settings["flushdnscache"], prompt_flush=not auto
|
||||
)
|
||||
|
||||
def await_network_connection(retries=3, delay=10):
|
||||
"""
|
||||
Check if we have a proper name resolution and connectivity
|
||||
By pinging a common domain
|
||||
|
||||
Parameters
|
||||
----------
|
||||
retries : int
|
||||
Number of times to retry again (on ping failure)
|
||||
delay : int
|
||||
How many seconds to wait before retrying again (on ping failure)
|
||||
|
||||
Returns
|
||||
-------
|
||||
-> bool
|
||||
True : A ping succeded
|
||||
False : All retries have failed
|
||||
"""
|
||||
while retries:
|
||||
if 0 == subprocess.call(['ping', 'one.one.one.one', '-c', '1'],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL):
|
||||
return True
|
||||
|
||||
print(f'No internet connection! Retrying in {delay} seconds')
|
||||
time.sleep(delay)
|
||||
retries -= 1
|
||||
return False
|
||||
|
||||
|
||||
# Prompt the User
|
||||
def prompt_for_update(freshen, update_auto):
|
||||
|
||||
Reference in New Issue
Block a user