Package pyxmpp :: Module resolver
[hide private]

Module resolver

source code

DNS resolever with SRV record support.

Normative reference:
Functions [hide private]
 
set_default_address_family(family)
Select default address family.
source code
list of dns.rdtypes.IN.SRV
shuffle_srv(records)
Randomly reorder SRV records using their weights.
source code
list of dns.rdtypes.IN.SRV
reorder_srv(records)
Reorder SRV records using their priorities and weights.
source code
list of (str,`int`)
resolve_srv(domain, service, proto='tcp')
Resolve service domain to server name and port number using SRV records.
source code
list of (int, int, int, str, (str, int))
getaddrinfo(host, port, family=None, socktype=1, proto=0, allow_cname=True)
Resolve host and port into addrinfo struct.
source code
Variables [hide private]
  logger = logging.getLogger("pyxmpp.resolver")
  default_address_family = 0
  service_aliases = {'xmpp-server': ('jabber-server', 'jabber')}
  ipv4_re = re.compile(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
  ipv6_re = re.compile(r'^[0-9a-f]{,4}:[0-9a-f:]{,29}:([0-9a-f]{...
  __package__ = 'pyxmpp'

Imports: re, socket, AF_UNSPEC, AF_INET, AF_INET6, dns, random, logging, DNSError, UnexpectedCNAMEError


Function Details [hide private]

set_default_address_family(family)

source code 
Select default address family.
Parameters:
  • family - : AF_INET for IPv4, AF_INET6 for IPv6 and AF_UNSPEC for dual stack.

shuffle_srv(records)

source code 
Randomly reorder SRV records using their weights.
Parameters:
  • records (: sequence of dns.rdtypes.IN.SRV) - : SRV records to shuffle.
Returns: list of dns.rdtypes.IN.SRV
reordered records.

reorder_srv(records)

source code 
Reorder SRV records using their priorities and weights.
Parameters:
  • records (: list of dns.rdtypes.IN.SRV) - : SRV records to shuffle.
Returns: list of dns.rdtypes.IN.SRV
reordered records.

resolve_srv(domain, service, proto='tcp')

source code 

Resolve service domain to server name and port number using SRV records.

A built-in service alias table will be used to lookup also some obsolete record names.

Parameters:
  • domain (: unicode or str) - : domain name.
  • service (: unicode or str) - : service name.
  • proto (: str) - : protocol name.
Returns: list of (str,`int`)
host names and port numbers for the service or None.

getaddrinfo(host, port, family=None, socktype=1, proto=0, allow_cname=True)

source code 

Resolve host and port into addrinfo struct.

Does the same thing as socket.getaddrinfo, but using dns.resolver, so the cache content from the SRV query can be used.

Parameters:
  • host (: unicode or str) - : service domain name.
  • port (: int or str) - : service port number or name.
  • family (: int) - : address family (AF_INET for IPv4, AF_INET6 for IPv6 or AF_UNSPEC for either, None for the auto-configured default).
  • socktype (: int) - : socket type.
  • proto (: int or str) - : protocol number or name.
  • allow_cname (: bool) - : when False CNAME responses are not allowed.
Returns: list of (int, int, int, str, (str, int))
list of (family, socktype, proto, canonname, sockaddr).

Variables Details [hide private]

ipv6_re

Value:
re.compile(r'^[0-9a-f]{,4}:[0-9a-f:]{,29}:([0-9a-f]{,4}|\d{1,3}\.\d{1,\
3}\.\d{1,3}\.\d{1,3})$')