11import os
2- from rich import print
2+ from typing import List , Optional
3+
34from dns import resolver as dns_resolver
4- from bugscanx .utils .common import get_input , get_confirm
5+ from rich import print
6+
7+ from bugscanx .utils .common import get_confirm , get_input
8+
59
6- def configure_resolver (custom_nameservers = None ):
10+ def configure_resolver (custom_nameservers : Optional [ List [ str ]] = None ):
711 dns_obj = dns_resolver .Resolver ()
8-
12+
913 if custom_nameservers and len (custom_nameservers ) > 0 :
1014 dns_obj .nameservers = custom_nameservers
11- print (f"[yellow]Using custom DNS servers: { ', ' .join (custom_nameservers )} [/yellow]" )
15+ print (
16+ f"[yellow]Using custom DNS servers: "
17+ f"{ ', ' .join (custom_nameservers )} [/yellow]"
18+ )
1219 return dns_obj
13-
14- is_termux = 'com.termux' in os .environ .get ('PREFIX' , '' ) or os .path .exists ('/data/data/com.termux' )
15-
20+
21+ is_termux = "com.termux" in os .environ .get (
22+ "PREFIX" , ""
23+ ) or os .path .exists ("/data/data/com.termux" )
24+
1625 if is_termux :
17- dns_obj .nameservers = [' 8.8.8.8' , ' 8.8.4.4' , ' 1.1.1.1' ]
18-
26+ dns_obj .nameservers = [" 8.8.8.8" , " 8.8.4.4" , " 1.1.1.1" ]
27+
1928 return dns_obj
2029
21- def resolve_and_print (domain , record_type , custom_nameservers = None ):
30+
31+ def resolve_and_print (
32+ domain : str , record_type : str , custom_nameservers : Optional [List [str ]] = None
33+ ):
2234 print (f"\n [green] { record_type } Records:[/green]" )
2335 try :
2436 dns_obj = configure_resolver (custom_nameservers )
2537 answers = dns_obj .resolve (domain , record_type )
2638 found = False
2739 for answer in answers :
2840 found = True
29- if record_type == 'MX' :
30- print (f"[cyan]- { answer .exchange } (priority: { answer .preference } )[/cyan]" )
31- elif record_type == 'SOA' :
41+ if record_type == "MX" :
42+ print (
43+ f"[cyan]- { answer .exchange } "
44+ f"(priority: { answer .preference } )[/cyan]"
45+ )
46+ elif record_type == "SOA" :
3247 print (f"[cyan]- Primary NS: { answer .mname } " )
3348 print (f" Responsible: { answer .rname } " )
3449 print (f" Serial: { answer .serial } " )
3550 print (f" Refresh: { answer .refresh } " )
3651 print (f" Retry: { answer .retry } " )
3752 print (f" Expire: { answer .expire } " )
3853 print (f" Minimum TTL: { answer .minimum } [/cyan]" )
39- elif record_type == 'SRV' :
40- print (f"[cyan]- Priority: { answer .priority } , Weight: { answer .weight } " )
54+ elif record_type == "SRV" :
55+ print (
56+ f"[cyan]- Priority: { answer .priority } , "
57+ f"Weight: { answer .weight } "
58+ )
4159 print (f" Port: { answer .port } , Target: { answer .target } [/cyan]" )
4260 else :
4361 print (f"[cyan]- { answer .to_text ()} [/cyan]" )
@@ -48,42 +66,51 @@ def resolve_and_print(domain, record_type, custom_nameservers=None):
4866 except Exception :
4967 print (f"[yellow] Error fetching { record_type } record[/yellow]" )
5068
51- def nslookup (domain , custom_nameservers = None ):
69+
70+ def nslookup (domain : str , custom_nameservers : Optional [List [str ]] = None ):
5271 print (f"[cyan]\n Performing NSLOOKUP for: { domain } [/cyan]" )
53-
72+
5473 record_types = [
55- 'A' ,
56- ' AAAA' ,
57- ' CNAME' ,
58- 'MX' ,
59- 'NS' ,
60- ' TXT' ,
61- ' SOA' ,
62- ' PTR' ,
63- ' SRV' ,
64- ' CAA' ,
65- ' DNSKEY' ,
66- ' TLSA'
74+ "A" ,
75+ " AAAA" ,
76+ " CNAME" ,
77+ "MX" ,
78+ "NS" ,
79+ " TXT" ,
80+ " SOA" ,
81+ " PTR" ,
82+ " SRV" ,
83+ " CAA" ,
84+ " DNSKEY" ,
85+ " TLSA" ,
6786 ]
68-
87+
6988 for record_type in record_types :
7089 resolve_and_print (domain , record_type , custom_nameservers )
7190
91+
7292def main ():
7393 domain = get_input ("Enter the domain to lookup" )
7494 if not domain :
7595 print ("[red] Please enter a valid domain.[/red]" )
7696 return
77-
97+
7898 use_custom_dns = get_confirm (" Want to use custom DNS servers?" )
7999 custom_nameservers = None
80-
100+
81101 if use_custom_dns :
82- nameservers_input = get_input ("Enter DNS servers separated by commas (e.g., 8.8.8.8,1.1.1.1)" )
102+ nameservers_input = get_input (
103+ "Enter DNS servers separated by commas (e.g., 8.8.8.8,1.1.1.1)"
104+ )
83105 if nameservers_input :
84- custom_nameservers = [server .strip () for server in nameservers_input .split (',' )]
85- print (f"[cyan] Will use custom DNS servers: { ', ' .join (custom_nameservers )} [/cyan]" )
86-
106+ custom_nameservers = [
107+ server .strip () for server in nameservers_input .split ("," )
108+ ]
109+ print (
110+ f"[cyan] Will use custom DNS servers: "
111+ f"{ ', ' .join (custom_nameservers )} [/cyan]"
112+ )
113+
87114 try :
88115 nslookup (domain , custom_nameservers )
89116 except Exception as e :
0 commit comments