acctok = os.environ['CLOUDFLARE_ACC_TOK']
usrtok = os.environ['CLOUDFLARE_USR_TOK']
acctid = os.environ['CLOUDFLARE_ACCT_ID']
acceml = os.environ['CLOUDFLARE_EML_ADD']FastCF
base = 'https://api.cloudflare.com/client/v4'uhdrs = {'Authorization': f'Bearer {usrtok}'}
r = httpx.get(f'{base}/user/tokens/verify', headers=uhdrs)
r.json()['success']True
ahdrs = {'Authorization': f'Bearer {acctok}'}
r = httpx.get(f'{base}/accounts/{acctid}/tokens/verify', headers=ahdrs)
r.json()['success']True
glbtok = os.environ['CLOUDFLARE_API_KEY']
ghdrs = {'X-Auth-Email': acceml, 'X-Auth-Key': glbtok, 'Content-Type': 'application/json'}
r = httpx.get(f'{base}/user', headers=ghdrs)
r.json()['success']True
r = httpx.get(f'{base}/zones', headers=uhdrs)
[(z['name'], z['id'][:8]) for z in r.json()['result'][:1]][('aaa.as', '6afde8dc')]
r = httpx.get(f'{base}/zones', headers=ahdrs, params={'account.id': acctid})
[(z['name'], z['id'][:8]) for z in r.json()['result'][:1]][('aaa.as', '6afde8dc')]
Build endpoint dict
build_cf_eps
def build_cf_eps(
):
eps_test = L(build_cf_eps())
len(eps_test), eps_test[0](2575,
{'path': '/accounts',
'verb': 'get',
'data': [],
'op_id': 'accounts-list-accounts',
'qparams': [{'name': 'name', 'description': ''},
{'name': 'page', 'description': ''},
{'name': 'per_page', 'description': ''},
{'name': 'direction', 'description': ''}],
'summary': 'List Accounts',
'tags': ['Accounts']})
Create API client
CloudflareApi
def CloudflareApi(
token:NoneType=None, account_id:NoneType=None, email:NoneType=None, api_key:NoneType=None,
base_url:str='https://api.cloudflare.com/client/v4'
):
Cloudflare API client supporting both user and account tokens
ucf = CloudflareApi(token=usrtok)
ucf.verify().result.status'active'
acf = CloudflareApi(token=acctok, account_id=acctid)
acf.verify().result.status'active'
ucf('/zones').result[0].name, acf('/zones').result[0].name('aaa.as', 'aaa.as')
zid = ucf('/zones').result[0].id
ucf.dns_records_zone.list_dns_records(zone_id=zid).result[0].name'*.aaa.as'
acf.dns_records_zone.list_dns_records(zone_id=zid).result[0].name'*.aaa.as'
ucf.zone- zone.get(name=None, status=None, account_id=None, account_name=None, page=None, per_page=None, order=None, direction=None, match=None): List Zones
- zone.post(account: dict = None, name: str = None, type: str = ‘full’): Create Zone
- zone.delete(zone_id): Delete Zone
- zone.get_zone_id(zone_id): Zone Details
- zone.patch(zone_id, paused: bool = False, plan: dict = None, type: str = None, vanity_name_servers: list = []): Edit Zone
- zone.put_zones_zone_id_activation_check(zone_id): Rerun the Activation Check
- zone.purge(zone_id): Purge Cached Content
ucf.zone.get().result[0].name'aaa.as'
ucf.dns_records_zone.list_dns_records(zone_id=zid).result[0].name'*.aaa.as'
CloudflareApi.create_token
def create_token(
doms, perm_names, name, grp:str='account.zone.'
):
Create a scoped Cloudflare API token for given domains and permission names