57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import requests
|
|
|
|
def getHeaders(credentials):
|
|
headers = {'Authorization': f'Bearer {credentials["api_key"]}', 'X-Auth-Email': f'{credentials["email"]}',
|
|
'Content-Type': 'application/json'}
|
|
return headers
|
|
|
|
def errorChecker(r):
|
|
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):
|
|
headers = getHeaders(credentials)
|
|
r = requests.get('https://api.cloudflare.com/client/v4/user/tokens/verify', headers=headers)
|
|
errorChecker(r)
|
|
return r
|
|
|
|
|
|
def listAllZones(credentials):
|
|
zones = requests.get(
|
|
'https://api.cloudflare.com/client/v4/zones',
|
|
headers= getHeaders(credentials)
|
|
)
|
|
errorChecker(zones)
|
|
return zones
|
|
|
|
|
|
def getAllDNS(credentials, id):
|
|
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):
|
|
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):
|
|
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
|
|
|