.. _fbf.plugs.extra.dns: dns ~~~ .. automodule:: fbf.plugs.extra.dns :show-inheritance: :members: :undoc-members: CODE ---- :: # fbf/plugs/socket/dns.py # # """ do a fqdn loopup. """ .. _fbf.plugs.extra.dns_fbf_imports: fbf imports -------------- :: from fbf.lib.commands import cmnds from fbf.lib.examples import examples .. _fbf.plugs.extra.dns_basic_imports: basic imports ---------------- :: from socket import gethostbyname from socket import getfqdn import re .. _fbf.plugs.extra.dns_dns_command: dns command -------------- :: def handle_dns(bot, event): """ arguments: | - do a dns lookup. """ if not event.rest: event.missing("|") ; return query = event.rest.strip() ippattern = re.match(r"^([0-9]{1,3}\.){3}[0-9]{1,3}$", query) hostpattern = re.match(r"(\w+://)?(?P\S+\.\w+)", query) if ippattern: try: answer = getfqdn(ippattern.group(0)) event.reply("%(hostname)s is %(answer)s" % {"hostname": query, "answer": answer}) except: event.reply("Couldn't lookup ip") elif hostpattern: try: answer = gethostbyname(hostpattern.group('hostname')) event.reply("%(ip)s is %(answer)s" % {"ip": query, "answer": answer}) except: event.reply("Couldn't look up the hostname") else: return cmnds.add("dns", handle_dns, ["OPER", "USER", "GUEST"]) examples.add("dns", "resolve the ip or the hostname", "dns google.com")