Skip to content

Instantly share code, notes, and snippets.

@demonshreder
Forked from andrew-nuwber/README.md
Created August 26, 2022 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save demonshreder/a1952813ba35fc8689e3faa3e9d45bf1 to your computer and use it in GitHub Desktop.
Save demonshreder/a1952813ba35fc8689e3faa3e9d45bf1 to your computer and use it in GitHub Desktop.
Namecheap DNS to zone file
# Originally by Judotens Budiarto (https://github.com/judotens)
# See: https://gist.github.com/judotens/151341f04b37ffeb5b59
def parse_dns_info(dns_info):
records = dns_info['Result']['CustomHostRecords']['Records']
items = []
for record in records:
host = str(record['Host'])
if record['RecordType'] == 1: tipe = 'A'
if record['RecordType'] == 2: tipe = 'CNAME'
if record['RecordType'] == 3: tipe = 'MX'
if record['RecordType'] == 5: tipe = 'TXT'
value = str(record['Data'])
ttl = str(record['Ttl'])
priority = str(record['Priority'])
active = record['IsActive']
if not active: continue
new_value = value
if tipe == 'MX': new_value = "%s %s" % (str(priority), str(value))
if tipe == 'TXT': new_value = "\"%s\"" % (str(value))
items.append([host,ttl,"IN", tipe, new_value])
return items
if __name__ == "__main__":
import sys
import json
file_name = sys.argv[1]
try:
file = open(file_name, 'r')
except IOError:
print("File not accessible")
dns_info = json.loads(file.read());
zones = parse_dns_info(dns_info)
for zone in zones:
print "\t".join(zone)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment