From 490e5ba11d174ac73ede7bc8dbf2a9f0b87fe34c Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Thu, 3 Oct 2024 03:53:50 -0700 Subject: [PATCH] fallback to localhost if detecting dnsserver fails --- Dockerfile | 2 +- archivebox/abx/archivebox/base_binary.py | 2 +- archivebox/machine/detect.py | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index f430da8f..a032fe41 100644 --- a/Dockerfile +++ b/Dockerfile @@ -129,7 +129,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$T # 1. packaging dependencies apt-transport-https ca-certificates apt-utils gnupg2 curl wget \ # 2. docker and init system dependencies - zlib1g-dev dumb-init gosu cron unzip grep \ + zlib1g-dev dumb-init gosu cron unzip grep dnsutils \ # 3. frivolous CLI helpers to make debugging failed archiving easier # nano iputils-ping dnsutils htop procps jq yq && rm -rf /var/lib/apt/lists/* diff --git a/archivebox/abx/archivebox/base_binary.py b/archivebox/abx/archivebox/base_binary.py index 14a8430e..c86d0f8b 100644 --- a/archivebox/abx/archivebox/base_binary.py +++ b/archivebox/abx/archivebox/base_binary.py @@ -66,7 +66,7 @@ class BaseBinary(BaseHook, Binary): symlink.unlink(missing_ok=True) symlink.symlink_to(binary.abspath) except Exception as err: - # print('[red]:caution: Failed to symlink binary into ./lib/bin folder[/red]', err) + # print('[red]:warning: Failed to symlink binary into ./lib/bin folder[/red]', err) pass @validate_call diff --git a/archivebox/machine/detect.py b/archivebox/machine/detect.py index 4a8a838a..14eaccfa 100644 --- a/archivebox/machine/detect.py +++ b/archivebox/machine/detect.py @@ -167,7 +167,11 @@ def get_isp_info(ip=None): result = subprocess.run(['dig', 'example.com', 'A'], capture_output=True, text=True, check=True).stdout dns_server = result.split(';; SERVER: ', 1)[-1].split('\n')[0].split('#')[0].strip() except Exception: - pass + try: + dns_server = Path('/etc/resolv.conf').read_text().split('nameserver ', 1)[-1].split('\n')[0].strip() + except Exception: + dns_server = '127.0.0.1' + print(f'[red]:warning: WARNING: Could not determine DNS server, using {dns_server}[/red]') # Get DNS resolver's ISP name # url = f'https://ipapi.co/{dns_server}/json/'