Source code for mads.resolve

# mads/utils/resolve.py
#
#

""" plugin containing resolver functions. """

import socket
import random

[docs]def resolve_ip(hostname=None, timeout=1.0): oldtimeout = socket.getdefaulttimeout() socket.setdefaulttimeout(timeout) try: ip = socket.gethostbyname(hostname or socket.gethostname()) except socket.timeout: ip = None socket.setdefaulttimeout(oldtimeout) return ip
[docs]def resolve_host(ip=None, timeout=1.0): oldtimeout = socket.getdefaulttimeout() socket.setdefaulttimeout(timeout) try: host = socket.gethostbyaddr(ip or resolve_ip())[0] except socket.timeout: host = None socket.setdefaulttimeout(oldtimeout) return host
[docs]def bind(server): if not server: try: socket.inet_pton(socket.AF_INET6, server) except socket.error: pass if not server: try: socket.inet_pton(socket.AF_INET, server) except socket.error: pass if not server: ips = [] server = random.choice(ips) try: for item in socket.getaddrinfo(server, None): if item[0] in [socket.AF_INET, socket.AF_INET6] and item[1] == socket.SOCK_STREAM: ip = item[4][0] if ip not in ips: ips.append(ip) except socket.error: pass return server