File size: 2,039 Bytes
a21cd42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43737a5
a21cd42
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import requests
import os
from dotenv import load_dotenv

load_dotenv()
cf_token = os.environ.get("CF_TOKEN")
cf_zone_id = os.environ.get("CF_ZONE_ID")
cf_email = os.environ.get("CF_EMAIL_ID")
cf_api = "https://api.cloudflare.com/client/v4/"

headers = {
    "Content-Type": "application/json",
    "X-Auth-Email": cf_email,
    "X-Auth-Key": cf_token
}

def check_txt():
    cf_endpoint = f"zones/{cf_zone_id}/dns_records"
    url = f"{cf_api}{cf_endpoint}"
    response = requests.request("GET", url, headers=headers)
    data = response.json()
    record_ids = []
    record_names = []
    for record in data['result']:
        if record['type'] == "TXT":
            record_id = record['id']
            record_name = record['name']
            record_ids.append(record_id)
            record_names.append(record_name)
        else:
            continue
    return record_ids, record_names
        
def add_txt(txt_rec, txt_value, ssl_email):
    cf_endpoint = f"zones/{cf_zone_id}/dns_records"
    url = f"{cf_api}{cf_endpoint}"
    name = txt_rec
    data = {
        "type": "TXT",
        "name": name,
        "content": txt_value,
        "proxied": False,
        "comment": f"SSL Verification for {ssl_email}"
    }
    response = requests.request("POST", url, headers=headers, json=data)
    return response.json()

def del_txt(txt_name):
    res = None
    record_ids, record_names = check_txt()
    for record_id, record_name in zip(record_ids, record_names):
        if record_name.startswith(txt_name):
            try:
                print(f"Deleting record {record_name}")
                cf_endpoint = f"zones/{cf_zone_id}/dns_records/{record_id}"
                url = f"{cf_api}{cf_endpoint}"
                requests.request("DELETE", url, headers=headers)
                res = "records deleted"
            except Exception as e:
                res = f"Error deleting records: {e}"
        else:
            res = "records not found"
    return res