37 lines
889 B
Python
37 lines
889 B
Python
"""DNS resolver"""
|
|
|
|
# PYTHON STUFFS #######################################################
|
|
|
|
import dns.rdtypes.ANY
|
|
import dns.rdtypes.IN
|
|
import dns.resolver
|
|
|
|
from nemubot.exception import IMException
|
|
from nemubot.hooks import hook
|
|
|
|
from more import Response
|
|
|
|
|
|
# MODULE INTERFACE ####################################################
|
|
|
|
@hook.command("dig")
|
|
def dig(msg):
|
|
ltype = "A"
|
|
ldomain = None
|
|
for a in msg.args:
|
|
if a in dns.rdtypes.IN.__all__ or a in dns.rdtypes.ANY.__all__:
|
|
ltype = a
|
|
else:
|
|
ldomain = a
|
|
|
|
if not ldomain:
|
|
raise IMException("indicate a domain to resolve")
|
|
|
|
answers = dns.resolver.query(ldomain, ltype)
|
|
|
|
res = Response(channel=msg.channel, title=ldomain, count=" (%s others records)")
|
|
for rdata in answers:
|
|
res.append_message(type(rdata).__name__ + " " + rdata.to_text())
|
|
|
|
return res
|