def test_no_update_when_glue(self): """A record shouldn't update it's label or domain when it is a glue record""" label = 'ns99' glue = AddressRecord(label=label, domain=self.o_e, ip_str='128.193.1.10', ip_type='4') glue.save() server = "%s.%s" % (label, self.o_e) ns = Nameserver(domain=self.o_e, server=server) ns.save() self.assertTrue(ns.glue == glue) # Shouldn't be able to edit label or domain. glue.label = "ns100" self.assertRaises(ValidationError, glue.save) glue.domain = self.m_o_e self.assertRaises(ValidationError, glue.save) glue = AddressRecord.objects.get(pk=glue.pk) glue.label = "ns101" glue.domain = self.e self.assertRaises(ValidationError, glue.save) # Ip can change. glue = AddressRecord.objects.get(pk=glue.pk) glue.ip_str = "192.192.12.12" glue.save()
def populate_forward_dns(zone, root_domain, views=None): for (name, ttl, rdata) in zone.iterate_rdatas('SOA'): print str(name) + " SOA " + str(rdata) exists = SOA.objects.filter(minimum=rdata.minimum, contact=rdata.rname.to_text().strip('.'), primary=rdata.mname.to_text().strip('.'), comment="SOA for" " {0}".format(root_domain)) if exists: soa = exists[0] else: soa = SOA(serial=rdata.serial, minimum=rdata.minimum, contact=rdata.rname.to_text().strip('.'), primary=rdata.mname.to_text().strip('.'), comment="SOA for" " {0}".format(root_domain)) soa.clean() soa.save() domain_split = list(reversed(name.to_text().strip('.').split('.'))) for i in range(len(domain_split)): domain_name = domain_split[:i + 1] base_domain, created = Domain.objects.get_or_create(name= '.'.join(list(reversed(domain_name)))) null_all_soas(base_domain) base_domain.soa = soa base_domain.save() set_all_soas(base_domain, soa) names = [] for (name, ttl, rdata) in zone.iterate_rdatas('A'): names.append((name.to_text().strip('.'), rdata)) sorted_names = list(sorted(names, cmp=lambda n1, n2: -1 if len(n1[0].split('.')) > len(n2[0].split('.')) else 1)) for name, rdata in sorted_names: print str(name) + " A " + str(rdata) exists_domain = Domain.objects.filter(name=name) if exists_domain: label = '' domain = exists_domain[0] else: label = name.split('.')[0] if label.find('unused') != -1: continue parts = list(reversed(name.split('.')[1:])) domain_name = '' for i in range(len(parts)): domain_name = parts[i] + '.' + domain_name domain_name = domain_name.strip('.') # We need to check for A records who have a name with this # domain. addrs = AddressRecord.objects.filter(fqdn=domain_name, ip_type='4') clober_objects = [] if addrs: for exists_a in addrs: # It got here. It exists need_to_recreate_a = True ip_str = exists_a.ip_str exists_a.delete(check_cname=False) a = AddressRecord(label='', ip_str=ip_str, ip_type='4') clober_objects.append(a) domain, created = Domain.objects.get_or_create(name= domain_name) for a in clober_objects: a.domain = domain a.clean() try: a.save() except Exception, e: pdb.set_trace() pass if created and domain.master_domain and domain.master_domain.soa: #domain.soa = domain.master_domain.soa #domain.save() null_all_soas(domain) set_all_soas(domain, domain.master_domain.soa) a, _ = AddressRecord.objects.get_or_create(label=label, domain=domain, ip_str=rdata.to_text(), ip_type='4') if views: for view in views: a.views.add(view) try: a.save() except Exception, e: pdb.set_trace() pass
addrs = AddressRecord.objects.filter(fqdn=domain_name) clober_objects = [] if addrs: for exists_a in addrs: # It got here. It exists need_to_recreate_a = True ip_str = exists_a.ip_str ip_type = exists_a.ip_type exists_a.delete(check_cname=False) a = AddressRecord(label='', ip_str=ip_str, ip_type=ip_type) clober_objects.append(a) domain, created = Domain.objects.get_or_create(name= domain_name) for a in clober_objects: a.domain = domain a.clean() try: a.save() except Exception, e: pdb.set_trace() pass if created and domain.master_domain and domain.master_domain.soa: #domain.soa = domain.master_domain.soa #domain.save() null_all_soas(domain) set_all_soas(domain, domain.master_domain.soa) ip_upper, ip_lower = ipv6_to_longs(rdata.to_text()) if AddressRecord.objects.filter(label=label, domain=domain, ip_upper=ip_upper, ip_lower=ip_lower,
def populate_forward_dns(zone, root_domain, views=None): for (name, ttl, rdata) in zone.iterate_rdatas('SOA'): print str(name) + " SOA " + str(rdata) exists = SOA.objects.filter(minimum=rdata.minimum, contact=rdata.rname.to_text().strip('.'), primary=rdata.mname.to_text().strip('.'), comment="SOA for" " {0}".format(root_domain)) if exists: soa = exists[0] else: soa = SOA(serial=rdata.serial, minimum=rdata.minimum, contact=rdata.rname.to_text().strip('.'), primary=rdata.mname.to_text().strip('.'), comment="SOA for" " {0}".format(root_domain)) soa.clean() soa.save() domain_split = list(reversed(name.to_text().strip('.').split('.'))) for i in range(len(domain_split)): domain_name = domain_split[:i + 1] base_domain, created = Domain.objects.get_or_create( name='.'.join(list(reversed(domain_name)))) null_all_soas(base_domain) base_domain.soa = soa base_domain.save() set_all_soas(base_domain, soa) names = [] for (name, ttl, rdata) in zone.iterate_rdatas('A'): names.append((name.to_text().strip('.'), rdata)) sorted_names = list( sorted(names, cmp=lambda n1, n2: -1 if len(n1[0].split('.')) > len(n2[0].split('.')) else 1)) for name, rdata in sorted_names: print str(name) + " A " + str(rdata) exists_domain = Domain.objects.filter(name=name) if exists_domain: label = '' domain = exists_domain[0] else: label = name.split('.')[0] if label.find('unused') != -1: continue parts = list(reversed(name.split('.')[1:])) domain_name = '' for i in range(len(parts)): domain_name = parts[i] + '.' + domain_name domain_name = domain_name.strip('.') # We need to check for A records who have a name with this # domain. addrs = AddressRecord.objects.filter(fqdn=domain_name, ip_type='4') clober_objects = [] if addrs: for exists_a in addrs: # It got here. It exists need_to_recreate_a = True ip_str = exists_a.ip_str exists_a.delete(check_cname=False) a = AddressRecord(label='', ip_str=ip_str, ip_type='4') clober_objects.append(a) domain, created = Domain.objects.get_or_create( name=domain_name) for a in clober_objects: a.domain = domain a.clean() try: a.save() except Exception, e: pdb.set_trace() pass if created and domain.master_domain and domain.master_domain.soa: #domain.soa = domain.master_domain.soa #domain.save() null_all_soas(domain) set_all_soas(domain, domain.master_domain.soa) a, _ = AddressRecord.objects.get_or_create(label=label, domain=domain, ip_str=rdata.to_text(), ip_type='4') if views: for view in views: a.views.add(view) try: a.save() except Exception, e: pdb.set_trace() pass
clober_objects = [] if addrs: for exists_a in addrs: # It got here. It exists need_to_recreate_a = True ip_str = exists_a.ip_str ip_type = exists_a.ip_type exists_a.delete(check_cname=False) a = AddressRecord(label='', ip_str=ip_str, ip_type=ip_type) clober_objects.append(a) domain, created = Domain.objects.get_or_create( name=domain_name) for a in clober_objects: a.domain = domain a.clean() try: a.save() except Exception, e: pdb.set_trace() pass if created and domain.master_domain and domain.master_domain.soa: #domain.soa = domain.master_domain.soa #domain.save() null_all_soas(domain) set_all_soas(domain, domain.master_domain.soa) ip_upper, ip_lower = ipv6_to_longs(rdata.to_text()) if AddressRecord.objects.filter(label=label, domain=domain,