ASN check

Signed-off-by: ValdikSS <iam@valdikss.org.ru>
This commit is contained in:
Nikolay Shopik 2017-05-11 18:07:38 +03:00 committed by ValdikSS
parent fb88cfb4e8
commit 28c7b12762
2 changed files with 20 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import os.path
import dns.resolver
import dns.exception
import ipaddress
import ipwhois
'''
@ -803,6 +804,18 @@ def check_ipv6_availability():
print(": IPv6 недоступен.")
return False
def get_ispinfo(ipaddr):
try:
rdap_response = ipwhois.IPWhois(ipaddr)
ispinfo = rdap_response.lookup_rdap(depth=1)
return ispinfo['asn']
except (ipwhois.exceptions.ASNRegistryError,
ipwhois.exceptions.ASNLookupError,
ipwhois.exceptions.ASNParseError,
ipwhois.exceptions.HTTPLookupError,
ipwhois.exceptions.HTTPRateLimitError):
return False
def main():
ipv6_addr = None
global ipv6_available
@ -823,6 +836,12 @@ def main():
if ip_isp:
if ipv6_available:
print("IP: {}, IPv6: {}, провайдер: {}".format(_mask_ip(ip_isp[0]), _mask_ip(ipv6_addr), ip_isp[1]))
if not force_ipv6:
asn4 = get_ispinfo(ip_isp[0])
asn6 = get_ispinfo(ipv6_addr)
if asn4 and asn6 and asn4 != asn6:
ipv6_available = False
print("Вероятно, у вас IPv6-туннель. Проверка IPv6 отключена.")
else:
print("IP: {}, провайдер: {}".format(_mask_ip(ip_isp[0]), ip_isp[1]))
print()

View File

@ -1 +1,2 @@
dnspython
ipwhois