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))
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']
def update_dns_record(ali_api_id, ali_api_secret, ip, record_id, request_sub_domain): client = AcsClient(ali_api_id, ali_api_secret, 'cn-hangzhou') request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(record_id) 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("update dns failed. do_action_with_exception") return False result = str(response, encoding='utf-8') log.info("update dns record result: \r\n" + result) json_obj = json.loads(result) if len(json_obj['RecordId']) == 0: log.error("update dns failed. error code " + json_obj['code']) return False return True
def modify_record_name(domain_name, name, record_id, new_ip_addr): request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(record_id) request.set_RR(name) request.set_Type("A") request.set_Value(new_ip_addr) with open(log_file, "a") as logfile: try: response = client.do_action_with_exception(request) sms.dns_record_update_sms( '.'.join([name, domain_name]).replace(".", "-"), new_ip_addr.replace('.', '-')) serverchan_ip_change_msg(name, "-".join(new_ip_addr.split("."))) logfile.write( "%s \t %s \n" % (str(time.asctime(time.localtime(time.time()))), response)) r_j = json.loads(response.decode()) request_id = r_j["RequestId"] record_id = r_j["RecordId"] insert_change(request_id=request_id, record_id=record_id, domain=domain_name, name=name, ip_addr=new_ip_addr) exist_and_count(domain_name, name, record_id) OK_response("200.3 OK") except Exception as e: logfile.write("%s \t %s \n" % (str(time.asctime(time.localtime( time.time()))), traceback.print_exc())) code = "503.4" serverchan_error_msg(domain_name, code, e) error_response(code)
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"))
def update_domain_record(client, record_id, rr, value): """ 更新解析记录 :param client :param record_id: :param rr: :param value: :return: """ request = UpdateDomainRecordRequest() request.set_RecordId(record_id) request.set_RR(rr) request.set_Type('A') request.set_Value(value) response = client.do_action_with_exception(request) return response
def update_domain_record(record): if record['Value'] == ip: return log.write('\n') log.write(asctime(localtime(time()))) log.write('\n解析记录' + record['RR'] + ' -> \t当前IP:' + ip) log.write('\n记录IP: \t' + record['Value']) log.write('\n当前ip和记录不一致,将被替换\n') log.flush() request = UpdateDomainRecordRequest() request.set_RecordId(record['RecordId']) request.set_accept_format('json') request.set_RR(record['RR']) return request
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
def update(): print("start time:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) new_ip = get_ip() with open("./config.json", 'r') as load_f: load_dict = json.load(load_f) accessKeyId = load_dict['AccessKeyId'] accessKeySecret = load_dict['AccessKeySecret'] domain = load_dict['domain'] secondDomain = load_dict['second-level-domain'] client = AcsClient(accessKeyId, accessKeySecret, 'cn-hangzhou') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName("haifeng.ink") response = client.do_action_with_exception(request) records = json.loads(response)['DomainRecords']['Record'] old_record_id = '' old_ip = '' for record in records: if record['RR'] == secondDomain: old_ip = record['Value'] old_record_id = record['RecordId'] break if old_record_id != '' and old_ip != new_ip: request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(old_record_id) request.set_RR(secondDomain) request.set_Type('A') request.set_Value(new_ip) client.do_action_with_exception(request) print('更新ip:' + new_ip) elif old_record_id == '': request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(domain) request.set_RR(secondDomain) request.set_Type('A') request.set_Value(new_ip) response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8')) print('添加新ip:' + new_ip) else: print('不需要更新') print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
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)
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)
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]
async def dns_change_ip(request): domain = request.query.get("domain") ip = request.query.get("ip") domain_dic = config.get_domain(domain) backup_ips = domain_dic.get('ips') if ip not in backup_ips: resp = dict(msg="非法IP!修改只限已给定列表中的IP") return web.json_response(resp) record_id = request.query.get("id") domain_record, *_ = domain.split(".") request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(record_id) request.set_RR(domain_record) request.set_Type("A") request.set_Value(ip) response = dns_client.do_action_with_exception(request) if json.loads(response.decode("utf8")).get("RecordId") == record_id: resp = dict(msg="OK") return web.json_response(resp) err_resp = dict(msg="error") return web.json_response(err_resp)
def UpdateDomainRecordHelper(Client, RecordId, RR, Type, Value, Line): Request = UpdateDomainRecordRequest() Request.set_accept_format('json') #设置新的记录的信息 Request.set_RecordId(RecordId) Request.set_RR(RR) Request.set_Type(Type) Request.set_Value(Value) Request.set_Line(Line) result = ExecuteGetResults(Client,Request) #print(result) return result
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 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'))
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!")
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)
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")
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 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}')
def update_record(self, priority, ttl, record_type, value, rr, record_id): logging.info("更新域名解析记录") from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest 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 = self.client.do_action_with_exception(request) response = str(response, encoding='utf-8') logging.debug(response) return response
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'))
def updateDomainRecord(): addr = getIPv6Address() print(addr) if addr == getValueByRecordID(): print("已是最新,无需更新") return request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(recordID) request.set_RR(hostName) request.set_Type("AAAA") request.set_Value(addr) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8'))
def update_record(record_id, value): try: logging.info('UpdateDomainRecordRequest %s %s' % (SUBDOMAIN, value)) request = UpdateDomainRecordRequest() request.set_RecordId(record_id) request.set_RR(RECORD) request.set_Type(RECORD_TYPE) request.set_Line('default') request.set_Value(value) request.set_accept_format('json') response = acsClient.do_action_with_exception(request) return json.loads(response)['RecordId'] except Exception as e: logging.error(e)
def modify_record(my_ip): acs_client = AcsClient(AccessKeyId, AccessKeySecret, RegionId) for domain in domain_config: recored_id = domain.get("recored_id") prefix = domain.get("prefix").encode("utf-8") logging.info("Now set recored_id: %s, prefix: %s -> %s" % (recored_id, prefix, my_ip)) request = UpdateDomainRecordRequest() request.set_RecordId(recored_id) request.set_RR(prefix) request.set_Type("A") request.set_Value(my_ip) request.set_TTL(600) try: response = acs_client.do_action_with_exception(request) except Exception as e: logger.error("Sync to aliyun error: %s." % e) save_error_info() else: logger.info("Sync to aliyun finished, nore info: %s" % response)
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'))
def update_record(self, obj): self.client = AcsClient(obj.domain_name.account.access_id, obj.domain_name.account.access_key, 'cn-hangzhou') request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(obj.record_id) request.set_TTL(obj.ttl) request.set_Line(obj.line) request.set_Value(obj.value) request.set_Type(obj.type) request.set_RR(obj.rr) if obj.priority: request.set_Priority(obj.priority) try: response = self.client.do_action_with_exception(request) ret = json.loads(str(response, encoding='utf-8')) return {'code': 1, 'message': ret} except Exception as e: return {'code': 0, 'message': e}
def update_domain_record(client, sub_domain, current_ip, record_id): """ update aliyun dns ip address value """ request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RR(sub_domain) request.set_Value(current_ip) request.set_RecordId(record_id) request.set_Type('A') try: response = client.do_action_with_exception(request) except Exception as e_message: return 'An error occurred! Error MSG: ' + str(e_message) else: return response
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)