コード例 #1
0
 def __common_request_settings(self):
     request = self.request
     request.set_accept_format('json')
     request.set_method('POST')
     request.set_protocol_type('https')  # https | http
     request.set_version('2014-05-26')
     return request
コード例 #2
0
    def get_region_instance_detail(self, region_id, instance_page=''):
        '''get instances from one special region
        :param region_id: a string,regionID,区域id ,egg:`cn-qingdao`
        :return: a list, all instances
        '''
        tmp_list = "1"* len(instance_page)
        client = AcsClient(self.secret_id, self.secret_key, region_id)
        request = DescribeInstancesRequest()
        request.set_accept_format('json')
        request.set_PageSize(100)

        try:
            response = client.do_action_with_exception(request)
            str_response = str(response, encoding="utf-8")
            result = json.loads(str_response).get('Instances').get('Instance')
            if result:
                totalCount = json.loads(str_response).get("TotalCount")
                page_number = json.loads(str_response).get("PageNumber")
                self.instances.append(result)
                len_list = tmp_list + "1" * len(result)
                if totalCount > len(len_list):
                    request.set_PageNumber(page_number + 1)
                    self.get_region_instance_detail(region_id, instance_page=len_list)
                else:
                    return
            else:
                return
        except Exception:
            return {"msg":_("Import asset occur error, pls try again later!") }
コード例 #3
0
ファイル: aliyunDdns.py プロジェクト: felixyin/update_ddns
def add_dns_record(ali_api_id, ali_api_secret, ip, request_domain,
                   request_sub_domain):
    client = AcsClient(ali_api_id, ali_api_secret, 'cn-hangzhou')

    request = AddDomainRecordRequest()
    request.set_accept_format('json')

    request.set_DomainName(request_domain)
    request.set_RR(request_sub_domain)
    request.set_Type("A")
    request.set_Value(ip)
    try:
        response = client.do_action_with_exception(request)
    except (ClientException, ServerException) as reason:
        log.error("add dns failed. do_action_with_exception " + reason)
        return False

    result = str(response, encoding='utf-8')
    log.info("add dns record result: \r\n" + result)
    json_obj = json.loads(result)

    if len(json_obj['RecordId']) == 0:
        log.error("add dns failed. error code " + json_obj['code'])
        return False
    return True
コード例 #4
0
ファイル: aliddns.py プロジェクト: zzh731/AliDDNS
def updateDomainRecord(client, rr, domain, ip, type):
    records = getRecords(client, rr, domain)
    record_id = None
    for record in records:
        if record['RR'] == rr and record['DomainName'] == domain and record[
                'Type'] == type:
            record_id = record['RecordId']
            avail_ip = record['Value']
            avail_record = record
            break
    if record_id is None:
        print("不存在记录,正在添加记录")
        addDomainRecord(client, rr, domain, ip, type)
    else:
        print("存在记录:" + str(avail_record))
        if avail_ip == ip:
            print("ip未改变,不更改记录,原ip=" + avail_ip + ",现ip=" + ip)
        else:
            print("ip已改变,准备更改记录,原ip=" + avail_ip + ",现ip=" + ip)
            request = UpdateDomainRecordRequest()
            request.set_action_name("UpdateDomainRecord")
            request.set_RR(rr)
            request.set_RecordId(record_id)
            request.set_Type(type)
            request.set_Value(ip)
            request.set_TTL(600)
            request.set_accept_format('json')
            response = client.do_action_with_exception(request)
            print(str(response, encoding='utf-8'))
            return json.loads(response)['RecordId']
コード例 #5
0
def Dns(_rr):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')

    logging.info('Update %s.%s DNS' % (_rr, domain))
    logging.info("Getting RecordId....")
    record = getRecord(_rr)
    recordId = record['RecordId']
    logging.info("RecordId:%s" % recordId)

    logging.info("Getting IP....")
    ip = getIP()
    logging.info("IP:%s" % ip)

    if ip == record['Value']:
        return "IP consistency does not need to be updated."

    logging.info("Updating DNS....")
    request.set_Value(ip)
    request.set_RecordId(recordId)
    request.set_RR(_rr)
    request.set_Type("A")

    response = client.do_action_with_exception(request)
    return json.loads(response.decode("UTF-8"))
コード例 #6
0
def UpdateDomainRecord(accessKeyId,accessSecret,NewIP):
    client = AcsClient(accessKeyId,accessSecret, 'default')

    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('alidns.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https') # https | http
    request.set_version('2015-01-09')
    request.set_action_name('UpdateDomainRecord')

    request.add_query_param('RR', 'WWW')
    request.add_query_param('Value', NewIP)
    request.add_query_param('Type', 'A')
    request.add_query_param('RecordId', '')

    response = str(client.do_action(request), encoding = 'utf-8')
    msg=json.loads(response)
    if 'Message' in msg:
        msg = msg['Message']
        content = stamp_to_time() + '  '  + msg + '\n'
        WriteContent('log.conf', content)
    else :
        content = stamp_to_time() + '  ' + 'the ip of demain liuyaoze.cn has change to :'+NewIP + '\n'
        WriteContent('log.conf', content)
コード例 #7
0
def check_records(dns_domain):
    clt = client.AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')
    request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
    request.set_DomainName(dns_domain)
    request.set_accept_format(ali_format)
    request.set_RRKeyWord(ali_domain_rr)
    result = clt.do_action(request)
    result = json.loads(result)
    return result
コード例 #8
0
def get_old_ip(record_id):
    clt = client.AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')
    request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest()
    request.set_RecordId(record_id)
    request.set_accept_format(ali_format)
    result = clt.do_action(request)
    result = json.loads(result)
    result = result['Value']
    return result
コード例 #9
0
ファイル: aliddns.py プロジェクト: zzh731/AliDDNS
def getRecords(client, rr, domain):
    request = DescribeDomainRecordsRequest()
    request.set_accept_format('json')
    request.set_DomainName(domain)
    request.set_RRKeyWord(rr)
    response = client.do_action_with_exception(request)
    print(str(response, encoding='utf-8'))
    jsonData = json.loads(response)
    return jsonData['DomainRecords']['Record']
コード例 #10
0
ファイル: aliddns.py プロジェクト: zzh731/AliDDNS
def addDomainRecord(client, rr, domain, ip, type):
    request = AddDomainRecordRequest()
    request.set_accept_format('json')
    request.set_Value(ip)
    request.set_Type(type)
    request.set_RR(rr)
    request.set_DomainName(domain)
    response = client.do_action_with_exception(request)
    print(str(response, encoding='utf-8'))
    return json.loads(response)['RecordId']
コード例 #11
0
 def DiskUsed(self,rdsid):
     lst = ['Bytes', 'KB', 'MB', 'GB']
     client = AcsClient(self.ak,self.sk,self.domain)
     request = DescribeResourceUsageRequest()
     request.set_accept_format('json')
     request.set_DBInstanceId(rdsid)
     response = client.do_action_with_exception(request)
     data = eval(str(response, encoding='utf-8'))
     diskused = getRDS.convertBytes(self,data['DiskUsed'],lst=lst)
     return diskused
コード例 #12
0
def getRecord(_rr):
    request = DescribeDomainRecordsRequest()
    request.set_accept_format('json')

    request.set_DomainName(domain)

    response = client.do_action_with_exception(request)
    response = json.loads(response.decode("UTF-8"))
    for item in response["DomainRecords"]["Record"]:
        if item['RR'] == _rr:
            return item
コード例 #13
0
ファイル: hwx_function.py プロジェクト: righwon/ddns
def Describe_SubDomain_Records(client, record_type, subdomain):
    request = DescribeSubDomainRecordsRequest()
    request.set_accept_format('json')

    request.set_Type(record_type)
    request.set_SubDomain(subdomain)

    response = client.do_action_with_exception(request)
    response = str(response, encoding='utf-8')
    relsult = json.loads(response)
    return relsult
コード例 #14
0
def update_dns(dns_rr, dns_type, dns_value, dns_record_id, dns_ttl,
               dns_format):
    clt = client.AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')
    request = UpdateDomainRecordRequest.UpdateDomainRecordRequest()
    request.set_RR(dns_rr)
    request.set_Type(dns_type)
    request.set_Value(dns_value)
    request.set_RecordId(dns_record_id)
    request.set_TTL(dns_ttl)
    request.set_accept_format(dns_format)
    result = clt.do_action(request)
    return result
コード例 #15
0
ファイル: hwx_function.py プロジェクト: righwon/ddns
def update_record(client, priority, ttl, record_type, value, rr, record_id):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')

    request.set_Priority(priority)
    request.set_TTL(ttl)
    request.set_Value(value)
    request.set_Type(record_type)
    request.set_RR(rr)
    request.set_RecordId(record_id)

    response = client.do_action_with_exception(request)
    response = str(response, encoding='utf-8')
    return response
コード例 #16
0
ファイル: hwx_function.py プロジェクト: righwon/ddns
def add_record(client, priority, ttl, record_type, value, rr, domainname):
    request = AddDomainRecordRequest()
    request.set_accept_format('json')

    request.set_Priority(priority)
    request.set_TTL(ttl)
    request.set_Value(value)
    request.set_Type(record_type)
    request.set_RR(rr)
    request.set_DomainName(domainname)

    response = client.do_action_with_exception(request)
    response = str(response, encoding='utf-8')
    relsult = json.loads(response)
    return relsult
コード例 #17
0
def GetDNSRecord(yaml_data, client, DomainName):
    try:
        request = DescribeDomainRecordsRequest()
        request.set_accept_format('json')
        request.set_DomainName(DomainName)
        response = client.do_action_with_exception(request)
        json_data = json.loads(str(response, encoding='utf-8'))
        for Record in json_data['DomainRecords']['Record']:
            if yaml_data['DnsData']['RR'] == Record['RR']:
                return Record

    except Exception as e:
        print("获取RecordId失败")
        print(e)
        sys.exit(-1)
コード例 #18
0
 def yesterday_DiskUsed(self,Date,Bucketid):     #获取昨天的容量
     client = AcsClient(self.ak,self.sk,self.domain)
     request = DescribeMetricListRequest()
     request.set_accept_format('json')
     request.set_EndTime(Date + ' 08:00:00')
     request.set_StartTime(Date + ' 07:00:00')
     request.set_Namespace("acs_oss_dashboard")
     request.set_MetricName("MeteringStorageUtilization")
     request.set_Dimensions("{\'BucketName\':'%s'}" % Bucketid)
     response = client.do_action_with_exception(request)
     result = str(response, encoding='utf-8')
     data = json.loads(result)   #str转dict,eval不安全,exec无法转含有true,false字样的内容
     storage = json.loads(data["Datapoints"])    #再转一次
     capacity= storage[0]["Value"]
     return capacity
コード例 #19
0
def UpdateDomainRecord(client, yaml_data, RecordId, ip):
    try:
        dnsData = yaml_data['DnsData']
        request = UpdateDomainRecordRequest()
        request.set_accept_format('json')
        DomainValue = ip
        request.set_Value(DomainValue)
        request.set_Type(dnsData['DomainType'])
        request.set_RR(dnsData['RR'])
        request.set_RecordId(RecordId)
        response = client.do_action_with_exception(request)
        print("更新域名解析成功")
        print("域名:" + dnsData['DomainName'] + " 主机:" + dnsData['RR'] +
              " 记录类型:" + dnsData['DomainType'] + " 记录值:" + DomainValue)
    except Exception as e:
        print("更新域名解析失败")
        print(e)
コード例 #20
0
def alarm(message):
    print('开始发送信息:' + message)
    client = AcsClient(ACCESS_KEY_ID, ACCESS_SECRET, 'cn-hangzhou')
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('dysmsapi.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')
    request.set_version('2017-05-25')
    request.set_action_name('SendSms')
    request.add_query_param('RegionId', "cn-hangzhou")
    request.add_query_param('PhoneNumbers', PHONE_NUMBER)
    request.add_query_param('SignName', "KisPig网")
    request.add_query_param('TemplateCode', "SMS_184215625")
    request.add_query_param('TemplateParam',
                            "{\"message\": \"" + message + "\"}")
    response = client.do_action_with_exception(request)
    print("通知短信%s已发送%s" % (message, response))
    quit()
コード例 #21
0
    def update_record(self, RR, value):
        request = UpdateDomainRecordRequest.UpdateDomainRecordRequest()
        request.set_action_name("UpdateDomainRecord")
        request.set_accept_format('json')
        request.set_TTL('600')
        sRecordid = self.get_record_id(RR)

        if sRecordid != None and WordsCheck.RegexChecker.judgeLegalIpv4(value):
            request.set_RecordId(sRecordid)
            request.set_Type(self.record_type)
            request.set_RR(RR)
            request.set_Value(value)
        else:
            return False
        pass
        try:
            # jsonReturn = json.load(self.client.do_action_with_exception(request))
            # rc = self.client.do_action_with_exception(request)
            if None != json.loads(
                    self.client.do_action_with_exception(request).decode(
                        'utf-8')):
                return True
        except:
            return False
コード例 #22
0
ファイル: aliyunDdns.py プロジェクト: felixyin/update_ddns
def get_dns_record(ali_api_id, ali_api_secret, request_domain,
                   request_sub_domain):
    client = AcsClient(ali_api_id, ali_api_secret, 'cn-hangzhou')

    request = DescribeDomainRecordsRequest()
    request.set_accept_format('json')

    request.set_DomainName(request_domain)
    request.set_PageSize("500")
    request.set_RRKeyWord(request_sub_domain)
    request.set_TypeKeyWord("A")

    try:
        response = client.do_action_with_exception(request)
    except (ClientException, ServerException) as reason:
        log.error("get dns failed. do_action_with_exception " + reason)
        return DnsRecord()

    result = str(response, encoding='utf-8')
    log.info("get dns record result: \r\n" + result)
    json_obj = json.loads(result)
    domain_records = json_obj['DomainRecords']
    records = domain_records['Record']
    ali_dns_record = DnsRecord()
    for record in records:
        if record['RR'] == request_sub_domain and record[
                'DomainName'] == request_domain:
            ali_dns_record.domain_name = record['DomainName']
            ali_dns_record.record_id = record['RecordId']
            ali_dns_record.rr = record['RR']
            ali_dns_record.dr_type = record['Type']
            ali_dns_record.value = record['Value']

        else:
            continue
    return ali_dns_record
コード例 #23
0
ファイル: test_db.py プロジェクト: thinkvue/wxmsg
def __test_msg(params):
    """测试短信接口

     :return: 无返回值,测试结果通过控制台退出码获得。0为成功,非0为失败
    """
    params_config = {
        'sms_interface_type': {
            'must': True,
            'data': True,
            'short': 'I',
            'long': 'interface'
        },
        'mobile': {
            'must': True,
            'data': True,
            'short': 'M',
            'long': 'mobile'
        },
        'ali_accesskeyid': {
            'must': True,
            'data': True,
            'short': 'K',
            'long': 'keyid'
        },
        'ali_accesssecret': {
            'must': True,
            'data': True,
            'short': 'S',
            'long': 'secret'
        },
        'ali_signname': {
            'must': True,
            'data': True,
            'short': 'N',
            'long': 'signname'
        },
        'ali_verify_templatecode': {
            'must': True,
            'data': True,
            'short': 'T',
            'long': 'template_id'
        },
    }
    ret_dict = get(params_config, params)
    errcode = ret_dict.get('errcode')
    if errcode and errcode < 0:
        sys.exit(131)
    try:
        sms_interface_type = ret_dict.get('data').get('sms_interface_type')
        mobile = ret_dict.get('data').get('mobile')
        ali_accesskeyid = ret_dict.get('data').get('ali_accesskeyid')
        ali_accesssecret = ret_dict.get('data').get('ali_accesssecret')
        ali_signname = ret_dict.get('data').get('ali_signname')
        ali_verify_templatecode = ret_dict.get('data').get(
            'ali_verify_templatecode')
        if sms_interface_type == "2":
            import urllib
            import urllib.request
            import hashlib
            statusStr = {
                '0': '短信发送成功',
                '-1': '参数不全',
                '-2': '服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间',
                '30': '密码错误',
                '40': '账号不存在',
                '41': '余额不足',
                '42': '账户已过期',
                '43': 'IP地址限制',
                '50': '内容含有敏感词'
            }
            smsapi = "http://api.smsbao.com/"
            data = urllib.parse.urlencode({
                'u': ali_accesskeyid,
                'p': ali_accesssecret,
                'm': mobile,
                'c': ali_signname
            })
            send_url = smsapi + 'sms?' + data
            response = urllib.request.urlopen(send_url)
            the_page = response.read().decode('utf-8')
            if the_page != "0":
                print("\033[1;31m\n短信接口测试失败\n\033[0m")
                print(statusStr[the_page])
                sys.exit(131)
        else:
            from aliyunsdkcore.client import AcsClient
            from aliyunsdkcore.request import CommonRequest
            client = AcsClient(ali_accesskeyid, ali_accesssecret,
                               'cn-hangzhou')
            request = CommonRequest()
            request.set_accept_format('json')
            request.set_domain('dysmsapi.aliyuncs.com')
            request.set_method('POST')
            request.set_protocol_type('https')  # https | http
            request.set_version('2017-05-25')
            request.set_action_name('SendSms')
            request.add_query_param('RegionId', "cn-hangzhou")
            request.add_query_param('PhoneNumbers', mobile)
            request.add_query_param('SignName', ali_signname)
            request.add_query_param('TemplateCode', ali_verify_templatecode)
            request.add_query_param('TemplateParam', "{\"code\":8888}")
            response = client.do_action(request)
            result = str(response, encoding='utf-8')
            if result.find('"OK"') == -1:
                print("\033[1;31m\n短信接口测试失败\n\033[0m")
                print(result)
                sys.exit(131)
        print("\033[1;32m\n短信接口测试成功\n\033[0m")
        sys.exit(0)
    except Exception as e:
        print("\033[1;31m\n短信接口测试失败!\n\033[0m")
        print(e)
        sys.exit(131)