nadzoring.dns_lookup.utils module¶
Utility functions for DNS lookup module.
- nadzoring.dns_lookup.utils.create_resolver(nameserver: str | None = None, timeout: float = 5.0, lifetime: float = 10.0) Resolver[source]¶
Create and configure a DNS resolver instance.
- Parameters:
nameserver – Optional nameserver IP address. When
Nonethe system default resolvers are used.timeout – Per-nameserver query timeout in seconds. Defaults to
5.0.lifetime – Total query lifetime in seconds, including retries across nameservers. Defaults to
10.0.
- Returns:
Configured
dns.resolver.Resolverready for queries.
Examples
>>> resolver = create_resolver("8.8.8.8", timeout=3.0, lifetime=8.0) >>> answers = resolver.resolve("example.com", "A")
- nadzoring.dns_lookup.utils.extract_records(answers: Answer, record_type: str) list[str][source]¶
Extract and format DNS records from a resolver answer.
Applies record-type-specific formatting:
MX —
"priority mailserver"TXT — all string parts joined into one string
SOA — space-joined SOA fields
other — plain
str()with trailing dot stripped
- Parameters:
answers –
dns.resolver.Answerreturned byResolver.resolve().record_type – DNS record type string (e.g.
"A","MX").
- Returns:
List of formatted record strings.
Examples
>>> answers = resolver.resolve("example.com", "MX") >>> extract_records(answers, "MX") ['10 mail.example.com', '20 backup.example.com']
- nadzoring.dns_lookup.utils.get_public_dns_servers() list[str][source]¶
Return a list of well-known public DNS server IP addresses.
Includes resolvers from Google, Cloudflare, OpenDNS, Quad9, and Verisign.
- Returns:
List of DNS server IP address strings.
Examples
>>> servers = get_public_dns_servers() >>> "8.8.8.8" in servers True
- nadzoring.dns_lookup.utils.resolve_with_timer(domain: str, record_type: RecordType = 'A', nameserver: str | None = None, *, include_ttl: bool = False, timeout: float = 5.0, lifetime: float = 10.0) DNSResult[source]¶
Perform DNS resolution with timing and structured error handling.
Resolves domain for record_type, measuring response time and optionally capturing TTL. All DNS errors are surfaced through the
errorfield rather than raised.- Parameters:
domain – Domain name to resolve (e.g.
"example.com").record_type – DNS record type to query. Defaults to
"A".nameserver – Optional nameserver IP;
Noneuses the system default.include_ttl – Include TTL value in result. Defaults to
False.timeout – Per-nameserver query timeout in seconds. Defaults to
5.0.lifetime – Total query lifetime in seconds. Defaults to
10.0.
- Returns:
DNSResultdict withdomain,record_type,records,ttl,error, andresponse_timekeys.
Examples
>>> result = resolve_with_timer("example.com", "MX", include_ttl=True) >>> if not result["error"]: ... print(result["records"], result["ttl"])