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): """ curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \ -H "Authorization: Bearer " \ -H "Content-Type:application/json" """ headers = getHeaders(credentials) r = requests.get('https://api.cloudflare.com/client/v4/user/tokens/verify', headers=headers) errorChecker(r) return r 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