#! /usr/bin/env python3 import requests import argparse import sys import logging logger = logging.getLogger(__name__) def main() -> int: # Handle program arguments ap = argparse.ArgumentParser(prog='cf-dump-zone', description='Dumps a raw Cloudflare zone') ap.add_argument("zone_id", help="The zone ID to dump") ap.add_argument("--api-token", help="The Cloudflare API token to use", required=True) ap.add_argument('-v', '--verbose', help='Enable verbose logging', action='store_true') args = ap.parse_args() # Configure logging logging.basicConfig( level=logging.DEBUG if args.verbose else logging.INFO, format='%(levelname)s: %(message)s', ) # Make the request response = requests.get( f"https://api.cloudflare.com/client/v4/zones/{args.zone_id}/dns_records", headers={ "Authorization": f"Bearer {args.api_token}", "Content-Type": "application/json", "User-Agent": "cf-dump-zone/0.1" } ) response.raise_for_status() # Print the response print(response.text) return 0 if __name__ == "__main__": sys.exit(main())