def get_addAndModifyDomainList(ip, domainList): addDomainList = [] modifyDomainList = [] for domain in domainList: domain_name = domain['DomainName'] # logger.debug('domain:{}',domain_name) describeDomainRecordsRequest = DescribeDomainRecordsRequest() describeDomainRecordsRequest.set_TypeKeyWord(type_keyWord) describeDomainRecordsRequest.set_RRKeyWord(rr_keyWord) describeDomainRecordsRequest.set_PageNumber(1) describeDomainRecordsRequest.set_PageSize(10) describeDomainRecordsRequest.set_DomainName(domain_name) describeDomainRecordsResponse = client.do_action_with_exception( describeDomainRecordsRequest) describeDomainRecords = json.loads( str(describeDomainRecordsResponse, encoding='utf-8')) # logger.debug('domain:{}',describeDomainRecords) if describeDomainRecords['TotalCount'] > 0: record = describeDomainRecords['DomainRecords']['Record'][0] # logger.debug('record :{}', record) if ip != record['Value']: {'domain_name': domain_name, 'old_ip': record['Value']} modifyDomainList.append({ 'domain_name': domain_name, 'old_ip': record['Value'] }) else: addDomainList.append(domain_name) logger.debug('addDomainList:{}', addDomainList) logger.debug('modifyDomainList:{}', modifyDomainList) return addDomainList, modifyDomainList
def __getRecordValue(self): self.__requireParmSet() # create request and set parm request = DescribeDomainRecordsRequest() request.set_DomainName(self.domain_name) request.set_TypeKeyWord(self.record_type) request.set_RRKeyWord(self.sub_domain_name) # execute res = self.__tryExecute(request) if res[0]: print "ok: " + res[1] resJsonObj = json.loads(res[1]) for record in resJsonObj["DomainRecords"]["Record"]: if record["RR"] == self.sub_domain_name: self.has_remote_record = True self.record_id = record["RecordId"] self.remote_record_value = record["Value"] return True, record["Value"] self.has_remote_record = False self.record_id = "" self.remote_record_value = "" return True, None else: print "error: " + res[1] return res
def get_dns_list(self): request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.get_data()['domainName']) request.set_RRKeyWord(self.get_data()['tertiaryDomain']) response = self.client.do_action_with_exception(request) res_json = json.loads(str(response, encoding='utf-8')) return res_json['DomainRecords']['Record']
def _get_domain_records_by_page(self, domain, rr, record_type, page_no): desc_domain_req = DescribeDomainRecordsRequest() desc_domain_req.set_DomainName(domain) desc_domain_req.set_accept_format("JSON") desc_domain_req.set_PageNumber(page_no) if rr is not None: desc_domain_req.set_RRKeyWord(rr) if record_type is not None: desc_domain_req.set_TypeKeyWord(record_type) desc_domain_res = self.clt.do_action_with_exception(desc_domain_req) return json.loads(desc_domain_res)
def get_record(self, index: int): """ get the domain record on ali yun control center """ req = DescribeDomainRecordsRequest() req.set_DomainName(self._config.domain) req.set_RRKeyWord(self._config.rr_list[index]) resp = self._client.do_action_with_exception(req).decode() dic = json.loads(resp) records = dic['DomainRecords']['Record'] if not records: raise Exception('record not exist') record = records[0] return record
def get_record(rr=None): client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName("henqy.club") if not rr: pass else: request.set_RRKeyWord(rr) response = client.do_action_with_exception(request) record = loads(response)['DomainRecords']['Record'] return record
def get_dns_record(client: AcsClient, subdomain: str, topdomain: str): result = {"ipv4": None, "ipv6": None} request = DescribeDomainRecordsRequest() request.set_accept_format("json") request.set_DomainName(topdomain) request.set_RRKeyWord(subdomain) response = client.do_action_with_exception(request) response = json.loads(response) for record in response["DomainRecords"]["Record"]: if result["ipv4"] is None and record["Type"] == "AA": result["ipv4"] = record if result["ipv6"] is None and record["Type"] == "AAAA": result["ipv6"] = record return result
def _find_domain_record_id(self, domain, rr='', typ='', value=''): request = DescribeDomainRecordsRequest() request.set_accept_format("json") request.set_DomainName(domain) request.set_TypeKeyWord(typ) request.set_RRKeyWord(rr) request.set_ValueKeyWord(value) records = json.loads(self._client.do_action_with_exception(request)) for record in records['DomainRecords']['Record']: if record['RR'] == rr: return record['RecordId'] raise errors.PluginError( 'Unexpected error determining record identifier for {0}: {1}'. format(rr, 'record not found'))
def get_domain_records(self, domain_name: str, host_record_keyword: str = None, type_keyword: str = 'A', value_keyword: str = None) -> dict: if not self._data_valid(domain_name): raise RuntimeError('缺少域名名称') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(domain_name) # request.set_PageSize('100') if self._data_valid(host_record_keyword): request.set_RRKeyWord(host_record_keyword) request.set_TypeKeyWord(type_keyword) if self._data_valid(value_keyword): request.set_ValueKeyWord(value_keyword) response = self.client.do_action_with_exception(request) # type: bytes response_data = json.loads(response.decode('utf-8')) return response_data
def get_domain_record(keyID, keySecret, domainName, recordName): from aliyunsdkcore.client import AcsClient from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest client = AcsClient(keyID, keySecret, 'cn-hangzhou') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(domainName) request.set_RRKeyWord(recordName) response = client.do_action_with_exception(request) records = json.loads(str(response, encoding='utf-8'))["DomainRecords"]["Record"] records = filter( lambda record: record["RR"] == recordName and record["Type"] == "A", records) records = list(records) assert len(records) == 1, "找不到域名%s的A记录%s" % (domainName, recordName) return records[0]
def get_domain_ip(domainname, rrkeyworld, _type): try: request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_TypeKeyWord(_type) request.set_DomainName(domainname) request.set_RRKeyWord(rrkeyworld) response = client.do_action_with_exception(request) try: source_data = str(response, encoding='utf-8') print('请求数据成功') except Exception as e: print('请求数据失败') print(e) sys.exit() try: datas = json.loads(source_data)['DomainRecords']['Record'][0] print('找到主机记录') except Exception: print('没有找到主机记录') sys.exit() if datas: print('\t域名\t: ' + str(datas['RR'] + '.' + datas['DomainName'])) print('\t类型\t: ' + str(datas['Type'])) print('\t记录值\t: ' + str(datas['Value'])) print('\tTTL\t: ' + str(datas['TTL'])) print('\tStatus\t: ' + str(datas['Status'])) return str(datas['Value']), str(datas['RR']), str( datas['RecordId']), str(datas['Type']) else: print('请求数据失败') print(source_data) except Exception as e: print('请求数据失败') print(e)
class AliDNS(): def __init__(self): with open(os.path.abspath('config.json'), 'r') as f: self.config = json.load(f) self.AccessKeyId = self.config['AccessKeyId'] self.AccessKeySecret = self.config['AccessKeySecret'] self.Region = self.config['Region'] self.client = AcsClient(self.AccessKeyId, self.AccessKeySecret, self.Region) def Get_RecordId(self, DomainName, RR): ''' 获取域名的RecordId''' self.request = CommonRequest() self.request.set_domain('alidns.aliyuncs.com') self.request.set_version('2015-01-09') self.request.set_action_name('DescribeDomainRecords') self.request.add_query_param('DomainName', DomainName) try: response = self.client.do_action_with_exception(self.request) jsonObj = json.loads(response.decode("UTF-8")) records = jsonObj["DomainRecords"]["Record"] for code in records: if code["RR"] == RR: return code["RecordId"] except: Logger().info("Error") def Add_Domain_Record(self, RR, value, DomainName, Type): '''新增域名解析方法: RR:二级域名记录值; value:所要解析的IP地址; DominName:主域名 ''' self.request.set_accept_format('json') self.request.set_domain('alidns.aliyuncs.com') self.request.set_method('POST') self.request.set_version('2015-01-09') self.request.set_action_name('AddDomainRecord') self.request.add_query_param('RR', RR) self.request.add_query_param('Type', Type) self.request.add_query_param('Value', value) self.request.add_query_param('DomainName', DomainName) response = self.client.do_action(self.request) jsonObj = json.loads(response.decode("UTF-8")) Logger().info(jsonObj) def update_Domain_Record(self, RR, value, Type, DomainName): '''修改域名解析记录''' self.request = CommonRequest() record_id = self.Get_RecordId(RR=RR, DomainName=DomainName) self.request.set_accept_format('json') self.request.set_domain('alidns.aliyuncs.com') self.request.set_method('POST') self.request.set_version('2015-01-09') self.request.set_action_name('UpdateDomainRecord') self.request.add_query_param('RR', RR) self.request.add_query_param('Type', Type) self.request.add_query_param('Value', value) self.request.add_query_param('RecordId', record_id) response = self.client.do_action(self.request) jsonObj = json.loads(response.decode("UTF-8")) Logger().info(jsonObj) def Get_Result(self, keyword, domain, Type): self.request = DescribeDomainRecordsRequest() self.request.set_accept_format('json') self.request.set_RRKeyWord(keyword) self.request.set_DomainName(domain) response = self.client.do_action_with_exception(self.request) jsonObj = json.loads(response.decode("UTF-8")) try: for i in jsonObj['DomainRecords']['Record']: if i['Type'] == Type and i['RR'] == keyword: return i['Value'] except: return '127.0.0.1' def run(self): while 1: value = GetIP().getLocalHost() for i in range(len(self.config['args'])): Type, domain = self.config['args'][i]['Type'], self.config['args'][i]['domain'] for r in self.config['args'][i]['RR']: domainIP = self.Get_Result(r, domain, Type) if domainIP == value: Logger().info('{}.{}:当前解析记录无异常'.format(r, domain)) elif domainIP == '127.0.0.1': continue else: Logger().info('{}.{}:当前解析地址为:{}'.format(r, domain, domainIP)) Logger().info('{}.{}:域名当前解析地址与本地地址不致,开修改解析记录'.format(r, domain)) self.update_Domain_Record(RR=r, value=value, Type=Type, DomainName=domain) Logger().info('进程休眠中...') time.sleep(1800)
form = cgi.FieldStorage() access_key_id = form.getvalue('access_key_id') access_secret = form.getvalue('access_secret') dns_domain_name = form.getvalue('dns_domain_name') dns_rr = form.getvalue('dns_rr') dns_type = form.getvalue('dns_type') dns_value = form.getvalue('dns_value') client = AcsClient(access_key_id, access_secret, 'cn-hangzhou') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(dns_domain_name) request.set_RRKeyWord(dns_rr) response = client.do_action_with_exception(request) data2 = json.loads(str(response, encoding='utf-8')) dns_record_id = data2['DomainRecords']["Record"][0]["RecordId"] old_value = data2['DomainRecords']["Record"][0]["Value"] if old_value != dns_value: request2 = UpdateDomainRecordRequest() request2.set_accept_format('json') request2.set_Value(dns_value) request2.set_Type(dns_type) request2.set_RR(dns_rr) request2.set_RecordId(dns_record_id)