D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
2
/
root
/
proc
/
3
/
root
/
opt
/
dedrads
/
python
/
Filename :
humanize.py
back
Copy
#!/usr/lib/rads/venv/bin/python3 import json from prettytable import PrettyTable from rads.color import green from .header import print_header as header def h_check_dns(data=None, external_check=False, longview=False): if data is None: with open('/opt/dedrads/python/sampledata.json', encoding='utf-8') as f: data = json.load(f) missing_internal_bool = external_mismatch_bool = internal_mismatch = False # Used to store domains that don't match in our internal nameservers internal_mismatch = [] if longview is False: for domain_dict in data: localns = domain_dict[0]['localns'] if ( domain_dict[0][localns[0]]['A'] is None or domain_dict[0][localns[1]]['A'] is None ): if missing_internal_bool is False: missing_internal_bool = True missing_internal = [] missing_internal.append(domain_dict[0]['domain']) if ( check_match( domain_dict[0][localns[0]], domain_dict[0][localns[1]], 'soa', ) is True ): pass else: if internal_mismatch_bool is False: internal_mismatch_bool = True internal_mismatch = PrettyTable( ["Domain", "NS1 SOA", "NS2 SOA"] ) internal_mismatch.add_row( [ domain_dict[0]['domain'], domain_dict[0][localns[0]]['soa'], domain_dict[0][localns[1]]['soa'], ] ) if external_check is True: if ( check_match( domain_dict[0]['goog'], domain_dict[0][localns[1]], 'soa', ) is True ): pass else: if external_mismatch_bool == 0: external_mismatch_bool = True external_mismatch = PrettyTable( [ "Domain", "@NS1", "@NS2", "@NS1 SOA", "@8.8.8.8", "@8.8.8.8 soa", ] ) external_mismatch.add_row( [ domain_dict[0]['domain'], domain_dict[0][localns[0]]['A'], domain_dict[0][localns[1]]['A'], domain_dict[0][localns[0]]['soa'], domain_dict[0]['goog']['A'], domain_dict[0]['goog']['soa'], ] ) header('Domains with different internal and external records') if external_mismatch_bool is not False: print(external_mismatch) else: green( 'No domains with mismatching internal and external records.\n' ) header('Domains with different SOA in Internal Nameservers') if internal_mismatch != []: print(internal_mismatch) else: green('No mismatching records @ns1 and @ns2.\n') header('Domains with entries missing in our nameservers') if missing_internal_bool is True: print(', '.join(missing_internal)) else: green('No domains with missing DNS @ns1 or @ns2\n') if longview is True: internal_mismatch = PrettyTable(["Domain", "NS1 SOA", "NS2 SOA"]) localns = data[0][0]['localns'] longview = PrettyTable( [ "Domain", '@ns1', '@ns2', '@ns1 mx', "@ns1 soa", "@ns2 soa", '@8.8.8.8', '@8.8.8.8 soa', '@8.8.8.8 mx', ] ) for domain_dict in data: longview.add_row( [ domain_dict[0]['domain'], domain_dict[0][localns[0]]['A'], domain_dict[0][localns[1]]['A'], domain_dict[0][localns[1]]['mx'], domain_dict[0][localns[0]]['soa'], domain_dict[0][localns[1]]['soa'], domain_dict[0]['goog']['A'], domain_dict[0]['goog']['soa'], domain_dict[0]['goog']['mx'], ] ) print(longview) def check_match(ns1, ns2, key): if ns1[key] == ns2[key]: return True return False