def cf_update_ip(ip, root, name, rec_type='cname'): status = -1 service_mode = 1 if rec_type == 'A' or rec_type == 'AAAA': service_mode = 0 target_name = name + '.' + root cf = CF(config['DYN_CF_EMAIL'], config['DYN_CF_KEY']) domain_list = cf.rec_load_all(z=root)['response']['recs']['objs'] create_new = True for d in domain_list: if d['name'] == target_name: cf.rec_edit(z=root, _type=rec_type, _id=d['rec_id'], name=name, content=ip, service_mode=service_mode) create_new = False status = 0 break if create_new: cf.rec_new(zone=root, _type=rec_type, content=ip, name=target_name, service_mode=service_mode) status = 0 return status
from cloudflare import CloudFlare import os cfkey = os.getenv("CFKEY", "") cfuser = os.getenv("CFUSER", "") cfzone = os.getenv("CFZONE", "") cfdnip = os.getenv("CFDNIP", "") cfhost = os.getenv("CFHOST", "").split(",") cftype = os.getenv("CFTYPE", "A,CNAME").split(",") def filter_rec(rec): return rec["name"] in cfhost and rec["type"] in cftype cfapi = CloudFlare(cfuser, cfkey) recobjs = cfapi.rec_load_all(cfzone)["response"]["recs"]["objs"] recs = list(filter(filter_rec, recobjs)) for rec in recs: res = cfapi.rec_edit( z=cfzone, _type=rec["type"], _id=rec["rec_id"], name=rec["name"], content=cfdnip, service_mode=rec["service_mode"], ttl=rec["ttl"]) if res["msg"] == None: print(rec["name"], "update", cfdnip, res["result"]) else: print(rec["name"], "update", cfdnip, res["result"], res["msg"])