@@ -32,53 +32,54 @@ def read_input(message):
3232 return input (message )
3333
3434
35- def get_ip ():
36- """Return machine's origin IP address(es).
37- """
38- lst = []
39- try :
40- r = requests .get (IP4ONLY_URL )
41- if r .status_code == 200 :
42- lst .append (r .text .split (',' )[1 ])
43- except requests .exceptions .ConnectionError :
44- pass
35+ def _try_request_get_and_store (url , callback ):
4536 try :
46- r = requests .get (IP6ONLY_URL )
37+ r = requests .get (url )
4738 if r .status_code == 200 :
48- lst . append ( r . text . split ( ',' )[ 1 ] )
39+ callback ( r )
4940 except requests .exceptions .ConnectionError :
5041 pass
42+
43+
44+ def get_ip ():
45+ """Return machine's origin IP address(es).
46+ """
47+
48+ lst = []
49+ for url in (IP4ONLY_URL , IP6ONLY_URL ):
50+ _try_request_get_and_store (
51+ url ,
52+ lambda r : lst .append (r .text .split (',' )[1 ])
53+ )
5154 if not lst :
52- try :
53- r = requests .get (HTTPBIN_URL )
54- if r .status_code == 200 :
55- lst .append (r .json ()['origin' ])
56- except requests .exceptions .ConnectionError :
57- pass
55+ _try_request_get_and_store (
56+ HTTPBIN_URL ,
57+ lambda r : lst .append (r .json ()['origin' ])
58+ )
5859 if not lst :
5960 return None
6061 return ',' .join (lst )
6162
6263
63- def get_dns_ip (dnsname ):
64- """Return machine's current IP address(es) in DNS.
65- """
64+ def _safe_resolve (dnsname , dnstype ):
6665 resolver = dns .resolver .Resolver (StringIO ("nameserver %s" % COMMON_DNS ))
6766
6867 try :
6968 resolve = resolver .resolve
7069 except AttributeError :
7170 resolve = resolver .query
7271
73- lst = []
74- try :
75- lst += [a .address for a in resolve (dnsname , 'A' )]
76- except dns .exception .DNSException :
77- pass
7872 try :
79- lst += [ a . address for a in resolve (dnsname , 'AAAA' )]
73+ return list ( resolve (dnsname , dnstype ))
8074 except dns .exception .DNSException :
81- pass
75+ return []
76+
77+
78+ def get_dns_ip (dnsname ):
79+ """Return machine's current IP address(es) in DNS.
80+ """
81+
82+ lst = [a .address for a in _safe_resolve (dnsname , 'A' ) + _safe_resolve (dnsname , 'AAAA' )]
8283 if not lst :
8384 try :
8485 lst .append (socket .gethostbyname (dnsname ))
0 commit comments