Пример #1
0
async def dns_get_ip(request):
    if request.method == 'POST':
        data = await request.post()
        _config_domain = data.get("domain")
        full_domain = _config_domain.split("_")[0]
        domain_dic = config.get_domain(_config_domain)
        dns_domain = domain_dic.get('domain')
        if not dns_domain:
            print("The domain in config.yml not set domain attribute")
        # 通过索引切片,获取最前面的RR值。如www.unknowname.win取值www
        full_len = len(full_domain)
        domain_len = len(dns_domain) + 1
        query_keyword = full_domain[:full_len - domain_len]
        request = DescribeDomainRecordsRequest()
        request.set_accept_format('json')
        request.set_DomainName(dns_domain)
        request.set_Lang("en")
        request.set_PageSize(20)
        request.set_KeyWord(query_keyword)
        try:
            response = dns_client.do_action_with_exception(request)
            resp = str(response, encoding='utf-8')
            detail = json.loads(resp)
            backup_ips = domain_dic.get("ips")
            detail["BackupIPs"] = backup_ips
            return web.json_response(detail)
        except Exception as e:
            print(e)
        return web.json_response({})
Пример #2
0
def fetch_records(domain: str, access_key_dict: dict, domain_dict: dict):
    item = domain_dict[domain]
    ak_ref = item['accesskey']
    ak_item = access_key_dict[ak_ref]
    client = AcsClient(ak_item['id'], ak_item['secret'], ak_item['area'])
    item['client'] = client
    request = DescribeDomainRecordsRequest()
    request.set_accept_format('json')
    request.set_DomainName(domain)
    request.set_PageNumber('1')
    request.set_Type('A')
    request.set_PageSize('500')
    all_records = []
    for host in item['hosts']:
        if item['hosts'][host] is not None:
            request.set_SearchMode('LIKE')
            request.set_KeyWord('.' + host)
        else:
            request.set_SearchMode('EXACT')
            request.set_KeyWord(host)
        try:
            resp = to_dict(client.do_action_with_exception(request))
            domain_records = resp['DomainRecords']
            if resp['TotalCount'] > 0 and domain_records is not None and len(
                    domain_records['Record']) > 0:
                all_records.extend(domain_records['Record'])
        except ServerException as err:
            print("   ERROR: {}".format(err.get_error_msg()))
    return all_records
Пример #3
0
def get_domain_record(client, domain, rr):
    """
    获取解析记录
    :param client
    :param domain:
    :param rr:
    :return:
    """
    request = DescribeDomainRecordsRequest()
    request.set_accept_format('json')
    request.set_DomainName(domain)
    request.set_KeyWord(rr)

    response = client.do_action_with_exception(request)
    records = json.loads(response)['DomainRecords']['Record']

    if len(records) > 0:
        for item in records:
            if item['RR'] == rr:
                return item

    return None