dns

DNS module.

exception wmflib.dns.DnsError[source]

Bases: wmflib.exceptions.WmflibError

Custom exception class for errors of the Dns class.

exception wmflib.dns.DnsNotFound[source]

Bases: wmflib.dns.DnsError

Custom exception class to indicate the record was not found.

One or more resource records exist for this domain but there isn’t a record matching the resource record type.

class wmflib.dns.Dns(*, nameserver_addresses: Optional[Sequence] = None, port: Optional[int] = None)[source]

Bases: object

Class to interact with the DNS.

Initialize the instance.

Parameters
  • nameserver_addresses (Sequence, optional) – the nameserveres address to use, if not set uses the OS configuration.

  • port (int, optional) – the port the nameserver_addresses nameserveres is listening to, if different from the default 53. This applies only if a nameserveres is explicitelyes specified.

resolve_ipv4(name: str) List[str][source]

Perform a DNS lookup for an A record for the given name.

Parameters

name (str) – the name to resolve.

Returns

the list of IPv4 addresses as strings returned by the DNS response.

Return type

list

resolve_ipv6(name: str) List[str][source]

Perform a DNS lookup for an AAAA record for the given name.

Parameters

name (str) – the name to resolve.

Returns

the list of IPv6 addresses as strings returned by the DNS response.

Return type

list

resolve_ips(name: str) List[str][source]

Perform a DNS lookup for A and AAAA records for the given name.

Parameters

name (str) – the name to resolve.

Returns

the list of IPv4 and IPv6 addresses as strings returned by the DNS response.

Return type

list

Raises

wmflib.dns.DnsNotFound – when no address is found.

resolve_ptr(address: str) List[str][source]

Perform a DNS lookup for PTR record for the given address.

Parameters

address (str) – the IPv4 or IPv6 address to resolve.

Returns

the list of absolute target PTR records as strings, without the trailing dot.

Return type

list

resolve_cname(name: str) str[source]

Perform a DNS lookup for CNAME record for the given name.

Parameters

name (str) – the name to resolve.

Returns

the absolute target name for this CNAME, without the trailing dot.

Return type

str

resolve(qname: Union[str, dns.name.Name], record_type: str) dns.resolver.Answer[source]

Perform a DNS lookup for the given qname and record type.

Parameters
  • qname (str) – the name or address to resolve.

  • record_type (str) – the DNS record type to lookup for, like ‘A’, ‘AAAA’, ‘PTR’, etc.

Returns

the DNS response.

Return type

dns.resolver.Answer

Raises
_resolve_addresses(name: str, record_type: str) List[str][source]

Extract and return all the matching addresses for the given name and record type.

Parameters
  • name (str) – the name to resolve.

  • record_type (str) – the DNS record type to lookup for, like ‘A’ and ‘AAAA’.

Returns

the list of IPv4 or IPv6 addresses as strings returned by the DNS response.

Return type

list

static _parse_targets(response_set: dns.rrset.RRset) List[str][source]

Extract and return all the matching names from the given rrset without the trailing dot.

Parameters

response_set (dns.rrset.RRset) – the RRset to parse.

Returns

the list of absolute target record names as strings without the trailing dot.

Return type

list

Raises

wmflib.dns.DnsError – if a relative record is found.

class wmflib.dns.PublicAuthDns[source]

Bases: wmflib.dns.Dns

Class to interact with the DNS using the wikimedia foundation authoritative servers.

Initialize the instance.