Example #1
0
    def update(self, rr, value):
        """
        Update the record for specify subdomain.

        :param rr: subdomain
        :param value: ip address
        """
        recordid = str()
        records = self.list()
        for record in records:
            if record['RR'] == rr:
                recordid = record['RecordId']
        if recordid == '':
            logging.debug(
                f'AliyunDNS::update: record for {rr + "." + self.domain} does not exist, ignore'
            )
            return
        request = UpdateDomainRecordRequest()
        request.set_accept_format('json')
        request.set_RecordId(f'{recordid}')
        request.set_RR(f'{rr}')
        request.set_Type(f'A')
        request.set_Value(f'{value}')
        response = str(self.client.do_action_with_exception(request),
                       encoding='utf-8')
        logging.debug(json.loads(response))
Example #2
0
def aliyun_update_subdomain(client, subdomain, ipaddress, addtype, recordid):
    request = None
    response = None
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')

    tmp = subdomain.partition('.')
    request.set_RecordId(recordid)
    request.set_RR(tmp[0])
    if addtype == 'ipv4':
        request.set_Type('A')
    else:
        request.set_Type('AAAA')
    request.set_Value(ipaddress)

    try:
        response = client.do_action_with_exception(request)
    except ServerException as e:
        print('Server Error! Domain: {}, Code: {}.'.format(
            subdomain, e.get_error_code()))
        print(e.get_error_msg())
        return None
    except ClientException as e:
        print('Client Error! Domain: {}, Code: {}.'.format(
            subdomain, e.get_error_code()))
        print(e.get_error_msg())
        return None
    return json.loads(str(response, encoding='utf-8'))
Example #3
0
File: ddns.py Project: oratun/ddns
def update_domain(domain, current_ip):
    request = DescribeSubDomainRecordsRequest()
    sub_domain = domain['RR'] + '.' + domain['DomainName']
    print(sub_domain)
    request.set_SubDomain(sub_domain)
    response = client.do_action_with_exception(request)
    r = json.loads(response)
    print(datetime.datetime.now(), r)

    records = r['DomainRecords']['Record']
    if records:
        # 存在记录
        record = records[0]
        if record['Value'] != current_ip:
            update_request = UpdateDomainRecordRequest()
            # 主机记录
            update_request.set_RR(domain['RR'])
            # 记录ID
            update_request.set_RecordId(record['RecordId'])
            # 主机记录值设为当前主机IP
            update_request.set_Value(current_ip)
            # 解析记录类型
            update_request.set_Type(domain['Type'])
            update_response = client.do_action_with_exception(update_request)
            print(json.loads(update_response))
Example #4
0
def refresh_domain_records():
    """
    更新域名 DNS
    """
    try:
        ip = get_ip()
        client = AcsClient(ALI_AK, ALI_SECRET, ALI_REGION_ID)
        req_get_records = DescribeDomainRecordsRequest()
        req_get_records.set_accept_format('json')
        req_get_records.set_DomainName(ALI_DOMAIN)
        response = json.loads(client.do_action_with_exception(req_get_records))
        msg = ""
        for record in response["DomainRecords"]["Record"]:
            recode_ip = record["Value"]
            if recode_ip != ip:
                req_set_record = UpdateDomainRecordRequest()
                req_set_record.set_RecordId(record["RecordId"])
                req_set_record.set_RR(record["RR"])
                req_set_record.set_Type(record["Type"])
                req_set_record.set_TTL(record["TTL"])
                req_set_record.set_Value(ip)
                req_set_record.set_accept_format('json')
                client.do_action_with_exception(req_set_record)
                info = str.format("{0}.{1} {2} --> {3}", record["RR"],
                                  ALI_DOMAIN, recode_ip, ip)
                logging.info(info)
                msg += info + "\n"
        if msg != "":
            send_mail(msg)
    except:
        logging.exception("Exception occurred")
Example #5
0
 def __setRecordValue(self, record_value):
     self.__requireParmSet()
     # creat request,set parm
     if self.has_remote_record:
         if record_value == self.remote_record_value:
             print "current local internet ip is " + record_value + ", which same as the remote record [SKIP]"
             return True
         else:
             print "current local internet ip is " + record_value + ", which different from the remote record " + self.remote_record_value + " [UPDATE]"
             request = UpdateDomainRecordRequest()
             request.set_RecordId(self.record_id)
             request.set_RR(self.sub_domain_name)
             request.set_Type(self.record_type)
             request.set_Value(record_value)
     else:
         print "current local internet ip is " + record_value + ", the remote sub domain record do not exist ! [ADD]"
         request = AddDomainRecordRequest()
         request.set_DomainName(self.domain_name)
         request.set_RR(self.sub_domain_name)
         request.set_Type(self.record_type)
         request.set_Value(record_value)
     # execute
     res = self.__tryExecute(request)
     if res[0]:
         if self.has_remote_record:
             print "update [OK]"
         else:
             print "add [OK]"
     else:
         if self.has_remote_record:
             print "update [ERROR] " + res[1]
         else:
             print "add [ERROR] " + res[1]
Example #6
0
def update_domain_record(client, host, domain, _type, ip_address, record_id):
    r"""
    Update domain information
    :param client: client object
    :param host: e.g. 'www'
    :param domain: e.g. 'dongs.xyz'
    :param _type: e.g. 'A', 'CNAME'
    :param ip_address: e.g. '127.0.0.1'
    :param record_id: record id from Aliyun
    """
    try:
        request = UpdateDomainRecordRequest()
        request.set_accept_format('json')
        request.set_Value(ip_address)
        request.set_Type(_type)
        request.set_RR(host)
        request.set_RecordId(record_id)
        response = client.do_action_with_exception(request)
        logging.info(
            "Successfully updated domain record: {_host}.{_domain} ({__type} record) to {_ip_address}."
            .format(_host=host,
                    _domain=domain,
                    __type=_type,
                    _ip_address=ip_address))
        logging.debug(response)
    except Exception as e:
        logging.error(
            "Failed to update domain record: {_host}.{_domain} ({__type} record) to {_ip_address}."
            .format(_host=host,
                    _domain=domain,
                    __type=_type,
                    _ip_address=ip_address))
        logging.error(e)
Example #7
0
 def update(self, record_id, domain_type, rr, value):
     """
     :param record_id: ***************
     :param domain_type: A
     :param rr: hk
     :param value: ***************
     :return:
     """
     request = UpdateDomainRecordRequest()
     request.set_accept_format('json')
     request.set_Value(value)
     request.set_Type(domain_type)
     request.set_RR(rr)
     request.set_RecordId(record_id)
     try:
         response = self.client.do_action_with_exception(request)
         if ResponseUtil.success(response):
             record_id = response_record_id(response)
             if record_id:
                 logging.info(
                     "Successfully update domain parse information for %s to %s"
                     % (record_id, value))
                 return True, None
         else:
             return False, str(response, encoding='utf-8')
     except Exception as e:
         logging.error(
             "Failed to add sub domain parse information for %s to %s" %
             (record_id, value), e)
         return False, e
Example #8
0
def editByDomainRecords(_client: AcsClient, _Record_data: dict, _value: str):
    """
    修改解析记录
    :param _client:
    :param _Record_data: 通过获取列表得来的解析信息
    :param _value: 要修改的记录值
    :return:
    """
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')

    request.set_RecordId(_Record_data.get('RecordId'))
    request.set_RR(_Record_data.get("RR"))
    request.set_Type(_Record_data.get('Type'))
    request.set_Value(_value)

    try:
        response = _client.do_action_with_exception(request)
    except ServerException as exce_entity:
        if exce_entity.message == 'The DNS record already exists.':
            err_msg = "{RR} 解析已被修改为 {value} ,无需修改.".format(
                RR=_Record_data.get("RR"), value=_value)
        else:
            err_msg = "未知异常; 阿里云异常消息原文: " + exce_entity.message
        raise Exception(err_msg)
    return json.loads(str(response, encoding='utf-8'))
Example #9
0
 def modify_domain_record(self, record_id, rr, record_type, value):
     request = UpdateDomainRecordRequest()
     request.set_Value(value)
     request.set_RecordId(record_id)
     request.set_accept_format('JSON')
     request.set_RR(rr)
     request.set_Type(record_type)
     return json.loads(self.clt.do_action_with_exception(request))
Example #10
0
def update_ddns_ip(ip, a_type, rr, record_id):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_Value(ip)
    request.set_Type(a_type)
    request.set_RR(rr)
    request.set_RecordId(record_id)
    client.do_action_with_exception(request)
Example #11
0
def updateRecord(RecordId: str, RR: str, Type: str, Value: str) -> str:
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_Value(Value)
    request.set_Type(Type)
    request.set_RR(RR)
    request.set_RecordId(RecordId)
    response = client.do_action_with_exception(request)
    return str(response, encoding='utf-8')
Example #12
0
def updateDNS(recordID, IP, RR):
	request = UpdateDomainRecordRequest()
	request.set_accept_format('json')
	request.set_RecordId(recordID)
	request.set_Value(IP)
	request.set_Type("A")
	request.set_RR(RR)
	response = client.do_action_with_exception(request)
	return response
Example #13
0
def editParsingRecords(ip):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(recordId)
    request.set_RR("k")
    request.set_Type("A")
    request.set_Value(ip)
    response = client.do_action_with_exception(request)
    ylog(str(response, encoding='utf-8'))
Example #14
0
def update_record(x, y):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(x)
    request.set_RR(RR)
    request.set_Type(Type)
    request.set_Value(y)
    response = client.do_action_with_exception(request)
    return str(response, encoding='utf-8')
def update(RecordId, RR, Type, Value):  # 修改域名解析记录
    from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(RecordId)
    request.set_RR(RR)
    request.set_Type(Type)
    request.set_Value(Value)
    response = client.do_action_with_exception(request)
Example #16
0
 def update_dns_resolve(self, ip, recordId, type):
     request = UpdateDomainRecordRequest()
     request.set_accept_format('json')
     request.set_Value(ip)
     request.set_Type(type)
     request.set_RR(self.get_data()['tertiaryDomain'])
     request.set_RecordId(recordId)
     response = self.client.do_action_with_exception(request)
     logger.info("域名解析修改成功:%s",ip)
Example #17
0
 def update(RecordId, RR, Type, Value):
     from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
     request = UpdateDomainRecordRequest()
     request.set_accept_format("json")
     request.set_RecordId(RecordId)
     request.set_RR(RR)
     request.set_Type(Type)
     request.set_Value(Value)
     DDNSUnit.response(request)
Example #18
0
    def modify_record(self,
                      old_rr=None,
                      new_rr=None,
                      type=None,
                      line=None,
                      value=None,
                      ttl=None,
                      mx=None):
        """
        修改记录
        :return: True|False
        """
        try:
            record_id = self.get_record_id(old_rr)
            if not record_id:
                return False

            if type == "显示URL":
                type = "REDIRECT_URL"

            if type == "隐性URL":
                type = "FORWARD_URL"

            client = AcsClient(self.key, self.secret, 'cn-hangzhou')
            request = UpdateDomainRecordRequest()
            request.set_accept_format('json')
            request.set_RecordId(record_id)
            request.set_RR(new_rr + "." + self.prefix_domain)
            request.set_Type(type)
            request.set_Value(value)
            request.set_Line(self.record_line(value=line))
            request.set_TTL(600 if int(ttl) < 600 else int(ttl))

            if type == "MX":
                request.set_Priority(mx)

            try:
                response = client.do_action_with_exception(request)
                response = json.loads(response)

                if "Code" in response.keys():
                    print(F"modify record failed: {response}")
                    print(response)
                    return False

                print(F"modify record success: [{old_rr} -> {new_rr}]")
                return True

            except ServerException as e:
                print(F"No changes for record: {e}")
                return True

        except Exception:
            print(F"modify record unknown exception")
            print(traceback.format_exc())
            return False
Example #19
0
def update_record(client, record, ip):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(record['RecordId'])
    request.set_RR(record['RR'])
    request.set_Type("A")
    request.set_Value(ip)
    response = client.do_action_with_exception(request)
    r = response is not None and 'RequestId' in to_dict(response)
    print('     - [{}] {}'.format(r, record['RR']))
Example #20
0
def UpdateRecords(RecordID, ResolutionRecord, RecordType, RecordValue):
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(RecordID)
    request.set_RR(ResolutionRecord)
    request.set_Type(RecordType)
    request.set_Value(RecordValue)
    response = client.do_action_with_exception(request)
    records = json.loads(response)
    print(records)
Example #21
0
 def update_record(self, index: int, record_id: str, ip: str):
     """ update domain item to target ip address """
     req = UpdateDomainRecordRequest()
     req.set_RR(self._config.rr_list[index])
     req.set_RecordId(record_id)
     req.set_Type('A')
     req.set_Value(ip)
     req.set_Line('default')
     resp = self._client.do_action_with_exception(req).decode()
     logger.debug(f'update domain response: {resp}')
Example #22
0
def update_domain_record(client, ip, record):
    """update specific domain record"""
    request = UpdateDomainRecordRequest()
    request.set_accept_format("json")

    request.set_RecordId(record["RecordId"])
    request.set_RR(record["RR"])
    request.set_Type(record["Type"])
    request.set_Value(ip)

    return client.do_action_with_exception(request)
Example #23
0
def update_domain_record(client, rid, value):
    """update specific domain record"""
    request = UpdateDomainRecordRequest()
    request.set_accept_format("json")

    request.set_RecordId(rid)
    request.set_RR("_acme-challenge")
    request.set_Type("TXT")
    request.set_Value(value)

    return client.do_action_with_exception(request)
Example #24
0
def set_dns_record(client: AcsClient, record: dict, value: str):
    request = UpdateDomainRecordRequest()
    request.set_accept_format("json")
    request.set_RecordId(record["RecordId"])
    request.set_RR(record["RR"])
    request.set_Type(record["Type"])
    request.set_Value(value)
    client.do_action_with_exception(request)
    print("Updated [%s]:\n%s %s %s\n" %
          ((record["RR"] + "." + record["DomainName"]), record["RecordId"],
           record["Type"], value))
Example #25
0
def aliupdate(gy, sy, _recordid, _rr, _type, _value):
    credentials = AccessKeyCredential(gy, sy)
    client = AcsClient(region_id='cn-hangzhou', credential=credentials)
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(_recordid)
    request.set_RR(_rr)
    request.set_Type(_type)
    request.set_Value(_value)
    response = client.do_action_with_exception(request)
    # python2:  print(response)
    print(str(response, encoding='utf-8'))
Example #26
0
    def setDnsRecord(self, ip):
        request = UpdateDomainRecordRequest()
        request.set_accept_format('json')

        request.set_Type(self.config['Type'])
        request.set_Value(ip)
        request.set_RR(self.config['RR'])
        request.set_RecordId(self.config['RecordId'])

        response = self.client.do_action_with_exception(request)
        # python2:  print(response) 
        print(str(response, encoding='utf-8'))
def updata_ip(new_cloud_date, my_ip):
    client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId(new_cloud_date["RecordId"])
    request.set_RR(new_cloud_date['RR'])
    request.set_Type(new_cloud_date["Type"])
    request.set_Value(str(my_ip))

    response = client.do_action_with_exception(request)

    print('Host-RR:' + new_cloud_date['RR'], "IP updata ip success!")
Example #28
0
 def __update_record(self, record_id, record, value, record_type, ttl):
     '''Update record.'''
     req = UpdateDomainRecordRequest()
     req.set_RecordId(record_id)
     req.set_accept_format('json')
     req.set_RR(record)
     req.set_Type(record_type)
     req.set_TTL(ttl)
     req.set_Value(value)
     js = json.loads(self.__bs.do_action_with_exception(req).decode())
     print('[+]%s.%s -> %s;%s;%d' %
           (record, self.__domain, value, record_type, ttl))
Example #29
0
    def update_record(self, *args, **kwargs):
        request = UpdateDomainRecordRequest()
        request.set_accept_format('json')

        request.set_RecordId(kwargs.get('record_id'))
        request.set_RR(kwargs.get('domain_rr'))
        request.set_Type(kwargs.get('domain_type'))
        request.set_Value(kwargs.get('domain_value'))
        request.set_TTL(kwargs.get('domain_ttl'))
        request.set_Line(kwargs.get('line'))

        response = self.__client.do_action_with_exception(request)
        return json.loads(str(response, encoding="utf8")).get('RecordId')
    def update_record(accessKeyId, accessSecret, recordid, RR, Type, target):

        client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')

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

        request.set_RecordId(recordid)
        request.set_RR(RR)
        request.set_Type(Type)
        request.set_Value(target)

        response = client.do_action_with_exception(request)