Пример #1
0
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
Пример #2
0
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"])