Compare commits

...
3 Commits
Author SHA1 Message Date
pavak 49e7cd13b6 formatting and cleanup 2022-06-01 18:07:05 +05:30
pavak bb80e40ce9 Completed 2022-06-01 01:56:44 +05:30
pavak 254615eda6 added DNS export files to gitignore 2022-05-31 23:06:03 +05:30
3 changed files with 35 additions and 39 deletions

No files matched your search

+1
View File
@@ -170,3 +170,4 @@ cython_debug/
# Project setup
config.json
response-example*
dns-export*
+15 -32
View File
@@ -6,16 +6,15 @@ def getHeaders(credentials):
return headers
def errorChecker(r):
if r.status_code != 200:
if r.status_code == 200:
return False
elif r.status_code == 429:
print(f'\n\n\n{"="*80}It looks like you have reached your rate limit to access CloudFlare APIs\nPlease try after 5 minutes.{"="*80}')
else:
print(f'Error {r.status_code}.\nDetails:\n{r.json()}')
assert False
def verifyCredentials(credentials):
"""
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
-H "Authorization: Bearer <API TOKEN HERE>" \
-H "Content-Type:application/json"
"""
headers = getHeaders(credentials)
r = requests.get('https://api.cloudflare.com/client/v4/user/tokens/verify', headers=headers)
errorChecker(r)
@@ -23,51 +22,35 @@ curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
def listAllZones(credentials):
"""
curl -X GET "https://api.cloudflare.com/client/v4/zones \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"
"""
headers = getHeaders(credentials)
zones = requests.get(
'https://api.cloudflare.com/client/v4/zones',
headers= getHeaders(credentials)
)
errorChecker(zones)
return zones
def getAllDNS(credentials, id):
"""
curl -X GET "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"
"""
dns_records = requests.get(
f'https://api.cloudflare.com/client/v4/zones/{id}/dns_records',
headers=getHeaders(credentials)
)
errorChecker(dns_records)
return dns_records
def exportBindDNS(credentials, id):
"""
curl -X GET "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/export" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"
"""
export_response = requests.get(
f'https://api.cloudflare.com/client/v4/zones/{id}/dns_records/export',
headers=getHeaders(credentials)
)
errorChecker(export_response)
return export_response
def deleteARecord(credentials, zone_id, dns_id):
"""
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"
"""
delete_response = requests.delete(
f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{dns_id}',
headers=getHeaders(credentials)
)
errorChecker(delete_response)
return delete_response
+19 -7
View File
@@ -1,10 +1,9 @@
import json
import uuid
import datetime
from fileinput import filename
from sys import argv
from pathlib import Path
from unittest import result
import dns
# import requests
from apicalls import *
@@ -46,18 +45,31 @@ if domainToDelete in zone_list:
zone_owner = zone_list[domainToDelete]['owner']
confirmation = input(f'Are you sure to delete all the DNS records from the domain {domainToDelete}, owned by {zone_owner}?\nEnter YES to continue: ')
if confirmation == 'YES':
# Get Bind DNS
bind_DNS = exportBindDNS(credentials, zone_id).text
# Write to a file
file_name = f'dns-export-{str(uuid.uuid4())[0:8]}-{domainToDelete}-{datetime.datetime.now().strftime("%d-%b-%Y-%H-%M-%S")}.txt'
print(f'Backing up DNS records to {file_name}')
bind_export_file = open(file_name, 'w')
bind_export_file.write(bind_DNS)
bind_export_file.close()
print('Successfully backed up DNS records in BIND format.')
# get DNS Records
dns_records = getAllDNS(credentials, zone_id).json()["result"]
# Delete DNS Records
print('Starting Deletion of DNS records')
for record in dns_records:
dns_id = record['id']
dns_type = record['type']
dns_name = record['name']
dns_content = record['content']
print(f'Deleting:\n{dns_type}\t{dns_name}\t{dns_content}...')
# deleteARecord(credentials, zone_id, dns_id)
print(f'Deleted {dns_id}')
pass
delete_response = deleteARecord(credentials, zone_id, dns_id)
if delete_response.json()['result']['id'] == dns_id:
print(f'Successfully Deleted {dns_id}')
else:
print('Something is wrong, abroading...')
assert False
else:
print('Aborted, bye...')
else: