Add Cloudflare DNS record creation to create-server script
This commit is contained in:
parent
75f7dfa9ed
commit
6e16dd7162
|
@ -82,3 +82,32 @@ while res['instance']['main_ip'] == '0.0.0.0':
|
|||
time.sleep(5)
|
||||
|
||||
print(res['instance']['main_ip'])
|
||||
|
||||
# Create DNS record
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": f"Bearer {config['cloudflare-token']}",
|
||||
}
|
||||
|
||||
# get zone id
|
||||
zone_name = args.label.split('.',maxsplit=1)[1]
|
||||
zones = requests.get("https://api.cloudflare.com/client/v4/zones", headers=headers).json()['result']
|
||||
zones = [z for z in zones if z['name'] == zone_name]
|
||||
if len(zones) != 1:
|
||||
print(zones)
|
||||
raise Exception(f"Expected 1 zone; got {len(zones)}")
|
||||
|
||||
url = f"https://api.cloudflare.com/client/v4/zones/{zones[0]['id']}/dns_records"
|
||||
|
||||
payload = {
|
||||
"content": res['instance']['main_ip'],
|
||||
"name": args.label,
|
||||
"proxied": False,
|
||||
"type": "A",
|
||||
"id": os.urandom(15).hex(), # not sure why this is required
|
||||
"ttl": 1, # automatic
|
||||
}
|
||||
|
||||
response = requests.request("POST", url, json=payload, headers=headers)
|
||||
print("Created DNS record!")
|
||||
print(response.text)
|
||||
|
|
Loading…
Reference in a new issue