import gradio as gr import dns.resolver RECORD_TYPES = ["A", "AAAA", "MX", "NS", "CNAME", "TXT", "SOA"] def dns_lookup(domain, record_type): try: result = dns.resolver.resolve(domain, record_type) output = f"🔍 DNS Lookup for `{record_type}` record(s) of `{domain}`:\n\n" for rdata in result: output += f"- {str(rdata)}\n" return output except dns.resolver.NoAnswer: return f"⚠️ No {record_type} record found for {domain}." except dns.resolver.NXDOMAIN: return "❌ Domain does not exist." except dns.resolver.Timeout: return "❌ DNS request timed out." except Exception as e: return f"❌ Error: {str(e)}" iface = gr.Interface( fn=dns_lookup, inputs=[ gr.Textbox(label="Enter Domain", placeholder="e.g. example.com"), gr.Dropdown(choices=RECORD_TYPES, label="Record Type", value="A") ], outputs=gr.Markdown(label="DNS Records"), title="🌐 DNS Lookup Tool", description="Query DNS records (A, MX, CNAME, NS, TXT, SOA, etc.) for a domain." ) if __name__ == "__main__": iface.launch()