From 3fdd5457b1f084b794b5b9150783fd0645e72fdc Mon Sep 17 00:00:00 2001 From: Sean Whalen Date: Mon, 17 Sep 2018 11:45:08 -0400 Subject: [PATCH] Reduce default DNS timeout to 0.5 seconds --- CHANGELOG.md | 1 + README.rst | 2 +- docs/index.rst | 2 +- parsedmarc/__init__.py | 18 +++++++++--------- parsedmarc/cli.py | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60a5d7d..cbd2dfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Collector (HEC) - Use a browser-like `User-Agent` when downloading the Public Suffix List, to avoid being blocked by security proxies +- Reduce default DNS timeout to 0.5 seconds 3.9.7 ----- diff --git a/README.rst b/README.rst index 1f7e920..19ee735 100644 --- a/README.rst +++ b/README.rst @@ -64,7 +64,7 @@ CLI help nameservers to query (Default is Cloudflare's) -t TIMEOUT, --timeout TIMEOUT number of seconds to wait for an answer from DNS - (default 6.0) + (default 0.5) -H HOST, --host HOST IMAP hostname or IP address -u USER, --user USER IMAP user -p PASSWORD, --password PASSWORD diff --git a/docs/index.rst b/docs/index.rst index a1484e3..7a69416 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -71,7 +71,7 @@ CLI help nameservers to query (Default is Cloudflare's) -t TIMEOUT, --timeout TIMEOUT number of seconds to wait for an answer from DNS - (default 6.0) + (default 0.5) -H HOST, --host HOST IMAP hostname or IP address -u USER, --user USER IMAP user -p PASSWORD, --password PASSWORD diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index c345e00..88f991e 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -131,7 +131,7 @@ def _get_base_domain(domain): return psl.get_public_suffix(domain) -def _query_dns(domain, record_type, nameservers=None, timeout=6.0): +def _query_dns(domain, record_type, nameservers=None, timeout=0.5): """ Queries DNS @@ -159,7 +159,7 @@ def _query_dns(domain, record_type, nameservers=None, timeout=6.0): resolver.query(domain, record_type, tcp=True))) -def _get_reverse_dns(ip_address, nameservers=None, timeout=6.0): +def _get_reverse_dns(ip_address, nameservers=None, timeout=0.5): """ Resolves an IP address to a hostname using a reverse DNS query @@ -284,7 +284,7 @@ def _get_ip_address_country(ip_address): return country -def _get_ip_address_info(ip_address, nameservers=None, timeout=6.0): +def _get_ip_address_info(ip_address, nameservers=None, timeout=0.5): """ Returns reverse DNS and country information for the given IP address @@ -315,7 +315,7 @@ def _get_ip_address_info(ip_address, nameservers=None, timeout=6.0): return info -def _parse_report_record(record, nameservers=None, timeout=6.0): +def _parse_report_record(record, nameservers=None, timeout=0.5): """ Converts a record from a DMARC aggregate report into a more consistent format @@ -418,7 +418,7 @@ def _parse_report_record(record, nameservers=None, timeout=6.0): return new_record -def parse_aggregate_report_xml(xml, nameservers=None, timeout=6.0): +def parse_aggregate_report_xml(xml, nameservers=None, timeout=0.5): """Parses a DMARC XML report string and returns a consistent OrderedDict Args: @@ -568,7 +568,7 @@ def extract_xml(input_): return xml -def parse_aggregate_report_file(_input, nameservers=None, timeout=6.0): +def parse_aggregate_report_file(_input, nameservers=None, timeout=0.5): """Parses a file at the given path, a file-like object. or bytes as a aggregate DMARC report @@ -697,7 +697,7 @@ def parsed_aggregate_reports_to_csv(reports): def parse_forensic_report(feedback_report, sample, sample_headers_only, - nameservers=None, timeout=6.0): + nameservers=None, timeout=0.5): """ Converts a DMARC forensic report and sample to a ``OrderedDict`` @@ -904,7 +904,7 @@ def parsed_forensic_reports_to_csv(reports): return csv_file.getvalue() -def parse_report_email(input_, nameservers=None, timeout=6.0): +def parse_report_email(input_, nameservers=None, timeout=0.5): """ Parses a DMARC report from an email @@ -1058,7 +1058,7 @@ def parse_report_email(input_, nameservers=None, timeout=6.0): return result -def parse_report_file(input_, nameservers=None, timeout=6.0): +def parse_report_file(input_, nameservers=None, timeout=0.5): """Parses a DMARC aggregate or forensic file at the given path, a file-like object. or bytes diff --git a/parsedmarc/cli.py b/parsedmarc/cli.py index ec4701a..2db1746 100644 --- a/parsedmarc/cli.py +++ b/parsedmarc/cli.py @@ -72,7 +72,7 @@ def _main(): "(Default is Cloudflare's)") arg_parser.add_argument("-t", "--timeout", help="number of seconds to wait for an answer " - "from DNS (default 6.0)", + "from DNS (default 0.5)", type=float, default=6.0) arg_parser.add_argument("-H", "--host", help="IMAP hostname or IP address")