Merge pull request #1 from kibab/kibab-public
add: net: Support for IPv6, correctly validate IP addresses
This commit is contained in:
@@ -49,22 +49,23 @@ def get_tld(type, jid, nick, text):
|
|||||||
else: msg = L('What do you want to find?','%s/%s'%(jid,nick))
|
else: msg = L('What do you want to find?','%s/%s'%(jid,nick))
|
||||||
send_msg(type, jid, nick, msg)
|
send_msg(type, jid, nick, msg)
|
||||||
|
|
||||||
|
def is_valid_ip(ipstr):
|
||||||
|
try: socket.inet_pton(socket.AF_INET, ipstr)
|
||||||
|
except:
|
||||||
|
try: socket.inet_pton(socket.AF_INET6, ipstr)
|
||||||
|
except: return False
|
||||||
|
return True
|
||||||
|
|
||||||
def get_dns(type, jid, nick, text):
|
def get_dns(type, jid, nick, text):
|
||||||
is_ip = None
|
if is_valid_ip(text):
|
||||||
if text.count('.') == 3:
|
|
||||||
is_ip = True
|
|
||||||
for ii in text:
|
|
||||||
if not nmbrs.count(ii):
|
|
||||||
is_ip = None
|
|
||||||
break
|
|
||||||
if is_ip:
|
|
||||||
try: msg = socket.gethostbyaddr(text)[0]
|
try: msg = socket.gethostbyaddr(text)[0]
|
||||||
except: msg = L('I can\'t resolve it','%s/%s'%(jid,nick))
|
except: msg = L('I can\'t resolve it','%s/%s'%(jid,nick))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ans = socket.gethostbyname_ex(text.encode('idna'))[2]
|
ans = socket.getaddrinfo(text.encode('idna'), None, 0, 0, socket.IPPROTO_TCP)
|
||||||
msg = text+' - '
|
msg = text+' - '
|
||||||
for an in ans: msg += an + ' | '
|
for an in ans:
|
||||||
|
msg += an[4][0] + ' | '
|
||||||
msg = msg[:-2]
|
msg = msg[:-2]
|
||||||
except: msg = L('I can\'t resolve it','%s/%s'%(jid,nick))
|
except: msg = L('I can\'t resolve it','%s/%s'%(jid,nick))
|
||||||
send_msg(type, jid, nick, msg)
|
send_msg(type, jid, nick, msg)
|
||||||
|
|||||||
Reference in New Issue
Block a user