Python批量编辑cloudflare域名

893 人阅读
分类:

               

#!/usr/bin/python
# !coding:utf-8
import CloudFlare
import os
import os.path

cf = CloudFlare.CloudFlare(email='abceegfga@fdjsalh',
                           token='fdasfb14c6c090ffadjkhe7fef7212a')  # cloudfare登入认证
url_file = 'D:/python/cloudfare/domain'  
# **********以上为可能需要配置到的东西*********


# 返回一个列表,里面获取的是指定文件中的url
def get_url_list(urlfile):
    url_list = []
    with open(urlfile) as f:
        urllist = f.readlines()
        if len(urllist) > 0:
            for url in urllist:
                url_list.append(url.strip())
    return url_list


# 添加txt记录传入url,记录,值
def add_txt_recode(url, srccontext,descontext):
    zone_id = get_zoneid(url)
    recode = {'name': srccontext, 'type': 'TXT', 'content': descontext}
    try:
        cf.zones.dns_records.post(zone_id, data=recode)
    except:
        print(url + "\t\t该记录已经添加过")


# 添加A记录,传递域名,二级域名,和对应A记录
def add_a_recode(url, zone, ip):
    zone_id = get_zoneid(url)
    recode = {'name': zone, 'type': 'A', 'content': ip, 'proxied': False}
    cf.zones.dns_records.post(zone_id, data=recode)


# 添加CNAME记录,传递要操作的域名,二级域名,和对应cname值,如果二级域名传递的是域名本身,代表添加根记录
def add_cname_recode(url, zone, cnameurl):
    zone_id = get_zoneid(url)
    recode = {'name': zone, 'type': 'CNAME', 'content': cnameurl, 'proxied': False}
    cf.zones.dns_records.post(zone_id, data=recode)


# 判断是否添加该域名,如果有添加返回1,未添加返回0
def if_add(url):
    zone_infos = cf.zones.get(params={'name': url})
    if len(zone_infos) == 0:
        return 0
    return 1


# 获取zoneid,如果域名没有加则加域名后再获取
def get_zoneid(url):
    # 如果没有添加域名
    if if_add(url) == 0:
        zone_info = cf.zones.post(data={'name': url})
        return zone_info['id']
    # 如果有添加域名后,再获取id
    else:
        zone_infos = cf.zones.get(params={'name': url})
        return zone_infos[0]['id']


# 清除某个域名的所有记录
def clean_recode(url):
    zone_id = get_zoneid(url)
    dns_records = cf.zones.dns_records.get(zone_id)
    for dns_record in dns_records:
        dns_record_id = dns_record['id']
        cf.zones.dns_records.delete(zone_id, dns_record_id)


# 删除某个域名的某条记录,第一个参数为域名,第二个参数为二级域名,传入@代表删除根记录
def delete_record(url, dns_name):
    zone_id = get_zoneid(url)
    try:
        if dns_name == '@':
            dns_records = cf.zones.dns_records.get(zone_id, params={'name': url})
            for dns_record in dns_records:
                dns_record_id = dns_record['id']
                cf.zones.dns_records.delete(zone_id, dns_record_id)
        else:
            dns_records = cf.zones.dns_records.get(zone_id, params={'name': dns_name + '.' + url})
            for dns_record in dns_records:
                dns_record_id = dns_record['id']
                cf.zones.dns_records.delete(zone_id, dns_record_id)
    except:
        print("删除失败,应该不存在")


def main():
    urllist=get_url_list(url_file)
    for url in urllist:
        # 清除该域名老的记录
        delete_record(url, 'abc')
        # 给该域名添加cname记录
        add_cname_recode(url, 'ag','abcd.egaf.com')
    print("执行完毕,一切正常")


if __name__ == '__main__':
    main()


和博主交个朋友吧
    发布篇幅
    • 文章总数:0
    • 原创:0
    • 转载:0
    • 译文:0
    文章分类
      文章存档
      阅读排行