def serialize(self, include_rrsig_info=True, consolidate_clients=True, show_servers=True, loglevel=logging.DEBUG, html_format=False): d = collections.OrderedDict() if html_format: formatter = lambda x: cgi.escape(x, True) else: formatter = lambda x: x if self.rrset.rdtype == dns.rdatatype.NSEC3: d['name'] = formatter(fmt.format_nsec3_name(self.rrset.name)) else: d['name'] = formatter(self.rrset.name.canonicalize().to_text()) d['ttl'] = self.rrset.ttl d['type'] = dns.rdatatype.to_text(self.rrset.rdtype) d['rdata'] = [] rdata_list = list(self.rrset) rdata_list.sort(cmp=self.rdata_cmp) for rdata in rdata_list: if self.rrset.rdtype == dns.rdatatype.NSEC3: d['rdata'].append(fmt.format_nsec3_rrset_text(self.rrset[0].to_text())) else: d['rdata'].append(formatter(rdata.to_text())) if include_rrsig_info: #TODO include RRSIG info... pass if show_servers: servers = tuple_to_dict(self.servers_clients) if consolidate_clients: servers = list(servers) servers.sort() d['servers'] = servers return d
def serialize(self, consolidate_clients=True, show_servers=True, loglevel=logging.DEBUG, html_format=False): d = collections.OrderedDict() if html_format: formatter = lambda x: cgi.escape(x, True) else: formatter = lambda x: x if self.rrset.rdtype == dns.rdatatype.NSEC3: d['name'] = formatter(fmt.format_nsec3_name(self.rrset.name)) else: d['name'] = formatter(self.rrset.name.canonicalize().to_text()) d['ttl'] = self.rrset.ttl d['type'] = dns.rdatatype.to_text(self.rrset.rdtype) d['rdata'] = [] rdata_list = list(self.rrset) rdata_list.sort(cmp=self.rdata_cmp) for rdata in rdata_list: if self.rrset.rdtype == dns.rdatatype.NSEC3: d['rdata'].append(fmt.format_nsec3_rrset_text(self.rrset[0].to_text())) else: d['rdata'].append(formatter(rdata.to_text())) if loglevel <= logging.INFO: servers = tuple_to_dict(self.servers_clients) if consolidate_clients: servers = list(servers) servers.sort() d['servers'] = servers tags = set() for server,client in self.servers_clients: for response in self.servers_clients[(server,client)]: tags.add(response.effective_query_tag()) d['query_options'] = list(tags) d['query_options'].sort() return d
def __unicode__(self): if self.rrset.rdtype == dns.rdatatype.NSEC3: return 'RRset for %s/%s' % (fmt.format_nsec3_name(self.rrset.name).rstrip('.'), dns.rdatatype.to_text(self.rrset.rdtype)) else: return 'RRset for %s/%s' % (fmt.humanize_name(self.rrset.name), dns.rdatatype.to_text(self.rrset.rdtype))