Package pyxmpp :: Module resolver |
[hide private]

# Module resolver

source code

DNS resolever with SRV record support.

Normative reference:
  - RFC 1035
  - RFC 2782

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})$')