Exemplo n.º 1
0
def add_records(request):
    '''
        新增DNSPOD 域名解析
    '''
    username, role, clientip = User(request).get_default_values()

    # 初始化返回数据
    ret_data = RET_DATA.copy()
    ret_data['code'] = 0  # 请求正常,返回 0
    ret_data['msg'] = '新增域名解析成功'
    ret_data['data'] = []

    try:
        if request.method == 'POST':
            data = json.loads(request.body)
            zone = data['zone']
            logger.info(data)
            for sub_domain in data['sub_domain']:
                dnspod_acc = DnspodAccountTb.objects.get(
                    name=zone['dnspod_acc'])
                record_name = zone[
                    'zone'] if sub_domain == '@' else sub_domain + "." + zone[
                        'zone']
                try:
                    dpapi = DpApi(DNSPOD_URL, dnspod_acc.key)
                except Exception as e:
                    logger.error(str(e))
                    ret_data['code'] = 500
                    ret_data['msg'] = '%s 新增域名解析失败:%s' % (record_name, str(e))
                    return HttpResponse(json.dumps(ret_data))

                else:
                    result, status = dpapi.create_zone_record(
                        domain=zone['zone'],
                        sub_domain=sub_domain,
                        record_type=data['type'],
                        value=data['content'],
                        record_line=data['record_line'],
                        #status         = 'enable' if data['enabled'] == '1' else 'disable',
                    )
                if not status:
                    ret_data['code'] = 500
                    ret_data['msg'] = '%s 新增域名解析失败:%s' % (record_name,
                                                          str(result))
                    return HttpResponse(json.dumps(ret_data))
                insert_ah(
                    clientip, username,
                    "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                    ('null', 'null', 'null', 'null'),
                    "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                    (data['type'], record_name, data['content'], '1'), status,
                    'add')
    except Exception as e:
        logger.error(str(e))
        ret_data['code'] = 500
        ret_data['msg'] = '新增域名解析失败: %s' % str(e)

    return HttpResponse(json.dumps(ret_data))
Exemplo n.º 2
0
def update_records(request):
    '''
        更新DNSPOD 域名解析
    '''
    username, role, clientip = User(request).get_default_values()

    # 初始化返回数据
    ret_data = RET_DATA.copy()
    ret_data['code'] = 0  # 请求正常,返回 0
    ret_data['msg'] = '修改域名解析成功'
    ret_data['data'] = []

    try:
        if request.method == 'POST':
            data = json.loads(request.body)
            for record in data['records']:
                dnspod_acc = DnspodAccountTb.objects.get(
                    name=record['dnspod_acc'])
                dpapi = DpApi(DNSPOD_URL, dnspod_acc.key)

                result, status = dpapi.update_zone_record(
                    domain=record['zone'],
                    record_id=record['record_id'],
                    sub_domain=record['sub_domain'],
                    record_type=data['type'],
                    value=data['value'],
                    record_line_id=record['record_line_id'],
                    status='enable' if data['enabled'] == '1' else 'disable')
                if not status:
                    logger.error(str(result))
                    ret_data['code'] = 500
                    ret_data['msg'] = "修改 %s 域名解析失败!%s" % (zone['name'],
                                                           str(result))
                    logger.error(ret_data['msg'])
                    return HttpResponse(json.dumps(ret_data))
                logger.info(
                    "req_ip: %s | user: %s | updaterecord: { 'type':%s, 'name': %s, 'content': %s, 'proxied':%s } ---> { 'type':%s, 'name': %s, 'content': %s, 'proxied':%s }"
                    % (clientip, username, record['type'], record['name'],
                       record['value'], record['enabled'], data['type'],
                       record['name'], data['value'], data['enabled']))

                insert_ah(
                    clientip, username,
                    "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                    (record['type'], record['name'], record['value'],
                     record['enabled']),
                    "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                    (data['type'], record['name'], data['value'],
                     data['enabled']), status)
    except Exception as e:
        logger.error(str(e))
        ret_data['code'] = 500
        ret_data['msg'] = '修改域名信息失败: %s' % str(e)

    return HttpResponse(json.dumps(ret_data))
Exemplo n.º 3
0
def add_records(request):
    '''
        新增CF 域名解析
    '''
    username, role, clientip = User(request).get_default_values()

    # 初始化返回数据
    ret_data = RET_DATA.copy()
    ret_data['code'] = 0  # 请求正常,返回 0
    ret_data['msg'] = '新增域名解析成功'
    ret_data['data'] = []

    try:
        if request.method == 'POST':
            data = json.loads(request.body)
            zone = data['zone']
            for sub_domain in data['sub_domain']:
                cf_acc = CfAccountTb.objects.get(name=zone['cf_acc'])
                try:
                    cfapi = CfApi(CF_URL, cf_acc.email, cf_acc.key)
                except Exception as e:
                    logger.error(str(e))
                    ret_data['code'] = 500
                    ret_data['msg'] = '新增域名解析失败:%s' % str(e)
                    return HttpResponse(json.dumps(ret_data))

                else:
                    result = cfapi.create_zone_record(
                        zone_id=zone['zone_id'],
                        record_name=sub_domain + '.' +
                        zone['zone'] if sub_domain != "@" else zone['zone'],
                        record_type=data['type'],
                        record_content=data['content'],
                        proxied=True
                        if data['proxied'].lower() == 'true' else False,
                    )
                if not result['success']:
                    ret_data['code'] = 500
                    ret_data[
                        'msg'] = '新增域名解析失败:%s' % result['errors'][0]['message']
                    return HttpResponse(json.dumps(ret_data))
                insert_ah(
                    clientip, username, "null",
                    "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                    (data['type'], sub_domain + '.' + zone['zone'],
                     data['content'], '1'), result['success'], 'add')
    except Exception as e:
        logger.error(str(e))
        ret_data['code'] = 500
        ret_data['msg'] = '新增域名解析失败: %s' % str(e)

    return HttpResponse(json.dumps(ret_data))
Exemplo n.º 4
0
def delete_records(request):
    '''
        删除DNSPOD 域名解析
    '''
    username, role, clientip = User(request).get_default_values()

    # 初始化返回数据
    ret_data = RET_DATA.copy()
    ret_data['code'] = 0  # 请求正常,返回 0
    ret_data['msg'] = '删除域名解析成功'
    ret_data['data'] = []

    try:
        if request.method == 'POST':
            data = json.loads(request.body)
            for zone in data:
                dnspod_acc = DnspodAccountTb.objects.get(
                    name=zone['dnspod_acc'])
                dpapi = DpApi(DNSPOD_URL, dnspod_acc.key)

                result, status = dpapi.delete_zone_record(
                    zone['zone'], zone['record_id'], zone['name'])
                if not status:
                    logger.error(str(result))
                    ret_data['code'] = 500
                    ret_data['msg'] = "删除 %s 域名失败!%s" % (zone['name'],
                                                         str(result))
                    logger.error(ret_data['msg'])
                    return HttpResponse(json.dumps(ret_data))
                else:
                    logger.info("删除 %s 域名成功!%s" % (zone['name'], str(result)))
                    insert_ah(
                        clientip, username,
                        "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                        (zone['type'], zone['name'], zone['value'],
                         zone['enabled']), "null", status, 'delete')
    except Exception as e:
        logger.error(str(e))
        ret_data['code'] = 500
        ret_data['msg'] = '删除域名解析失败: %s' % str(e)

    return HttpResponse(json.dumps(ret_data))
Exemplo n.º 5
0
def delete_records(request):
    '''
        删除CF 域名解析
    '''
    username, role, clientip = User(request).get_default_values()

    # 初始化返回数据
    ret_data = RET_DATA.copy()
    ret_data['code'] = 0  # 请求正常,返回 0
    ret_data['msg'] = '删除域名解析成功'
    ret_data['data'] = []

    try:
        if request.method == 'POST':
            data = json.loads(request.body)
            for zone in data:
                cf_acc = CfAccountTb.objects.get(name=zone['cf_acc'])
                cfapi = CfApi(CF_URL, cf_acc.email, cf_acc.key)

                result = cfapi.delete_zone_record(zone['zone_id'],
                                                  zone['record_id'])
                if not result['success']:
                    logger.error(str(e))
                    ret_data['code'] = 500
                    ret_data['msg'] = "删除 %s 域名失败!%s" % (zone['name'],
                                                         str(result))
                    logger.error(ret_data['msg'])
                    return HttpResponse(json.dumps(ret_data))
                else:
                    logger.info("删除 %s 域名成功!%s" % (zone['name'], str(result)))
                    insert_ah(
                        clientip, username,
                        "'type':%s, 'name': %s, 'content': %s, 'enabled':%s" %
                        (zone['type'], zone['name'], zone['content'],
                         zone['proxied']), "null", result['success'], 'delete')
    except Exception as e:
        logger.error(str(e))
        ret_data['code'] = 500
        ret_data['msg'] = '删除域名解析失败: %s' % str(e)

    return HttpResponse(json.dumps(ret_data))