class TestPyCloudFlareClient(unittest.TestCase):

    def setUp(self):
        self.cfapi = CloudFlare('EMAIL', 'API_KEY')

    def test_create_new_record_dns(self):
        self.assertEqual(self.cfapi.rec_new('domain', 'A', 'subdomain', '1.2.3.4')['result'], 'success')

    def test_delete_new_record_dns(self):
        dns_id = self.cfapi.get_rec_id_by_name('domain', 'subdomain')
        self.assertEqual(self.cfapi.rec_delete('domain', dns_id)['result'], 'success')
Ejemplo n.º 2
0
 def update(self):
     wan_ip = network.Network().get_wan_ip()
     self.log("router wan ip is " + wan_ip)
     cfapi = None
     try:
         cfapi = CloudFlare(self.username, self.key)
         self.log("logged into cloudflare with %s using %s" %
                  (self.username, self.key))
     except Exception, e:
         msg = "could not login to cloudflare with %s using %s" % (
             self.username, self.key)
         self.error(msg)
         raise DDNSError(msg)
Ejemplo n.º 3
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
from cloudflare import CloudFlare
from config import Config

config = Config()
cloudFlare = CloudFlare(email=config['email'],
                        apikey=config['apiKey'],
                        zone=config['zone'])

# print(cloudFlare.listRecords())
# print(cloudFlare.findRecordByName("xn--mcahiddayan-thb.com"))
print(cloudFlare.findRecordById("9ccdfe71e7913f4ec32bc74a70546b64"))
 def setUp(self):
     self.cfapi = CloudFlare('EMAIL', 'API_KEY')
Ejemplo n.º 6
0
# CFTYPE=A,CNAME # effect rec type

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"])
Ejemplo n.º 7
0
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler(log_file)
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)

with open(filename, mode="r") as file:
    # The FullLoader parameter handles the conversion from YAML
    # scalar values to Python the dictionary format
    config = yaml.load(file, Loader=yaml.FullLoader)

    cloudFlare = CloudFlare(email=config['email'],
                            apikey=config['apiKey'],
                            zone=config['zone'])
    currentIp = cloudFlare._getIp()
    lastIp = config.get('lastIp', "NOT")
    if currentIp != lastIp:
        config.update({'lastIp': currentIp})
        logger.info('Ip is changed ' + lastIp + ' It will be updated ' +
                    currentIp)

        with open(filename, mode='w') as fileToWrite:
            yaml.safe_dump(config,
                           fileToWrite,
                           encoding='utf-8',
                           allow_unicode=True)
            cloudFlare.updateRecordIpById(
                "9ccdfe71e7913f4ec32bc74a70546b64")  #root