def reassign(objs): for obj in objs: if ip_type == '6': nibz = nibbilize(obj.ip_str) revname = ip_to_domain_name(nibz, ip_type='6') else: revname = ip_to_domain_name(obj.ip_str, ip_type='4') correct_reverse_domain = name_to_domain(revname) if correct_reverse_domain != obj.reverse_domain: # TODO, is this needed? The save() function (actually the # clean_ip function) will assign the correct reverse domain. obj.reverse_domain = correct_reverse_domain obj.save()
def update_reverse_domain(self): # We are assuming that self.clean_ip has been called already rvname = nibbilize(self.ip_str) if self.ip_type == "6" else self.ip_str rvname = ip_to_domain_name(rvname, ip_type=self.ip_type) self.reverse_domain = name_to_domain(rvname) if self.reverse_domain is None or self.reverse_domain.name in ("arpa", "in-addr.arpa", "ip6.arpa"): raise ValidationError("No reverse Domain found for {0} ".format(self.ip_str))
def update_reverse_domain(self): # We are assuming that self.clean_ip has been called already rvname = nibbilize(self.ip_str) if self.ip_type == '6' else self.ip_str rvname = ip_to_domain_name(rvname, ip_type=self.ip_type) self.reverse_domain = name_to_domain(rvname) if (self.reverse_domain is None or self.reverse_domain.name in ('arpa', 'in-addr.arpa', 'ip6.arpa')): raise ValidationError("No reverse Domain found for {0} ".format( self.ip_str))
def create_domain(self, name, ip_type=None, delegated=False): if ip_type is None: ip_type = '4' if name in ('arpa', 'in-addr.arpa', 'ip6.arpa'): pass else: name = ip_to_domain_name(name, ip_type=ip_type) d, _ = Domain.objects.get_or_create(name=name, delegated=delegated) self.assertTrue(d.is_reverse) return d
def create_domain(self, name, ip_type=None, delegated=False): if ip_type is None: ip_type = "4" if name in ("arpa", "in-addr.arpa", "ip6.arpa"): pass else: name = ip_to_domain_name(name, ip_type=ip_type) d = Domain(name=name, delegated=delegated) d.clean() self.assertTrue(d.is_reverse) return d
def reassign_reverse_ptrs(reverse_domain_1, reverse_domain_2, ip_type): """There are some formalities that need to happen when a reverse domain is added and deleted. For example, when adding say we had the ip address 128.193.4.0 and it had the reverse_domain 128.193. If we add the reverse_domain 128.193.4, our 128.193.4.0 no longer belongs to the 128.193 domain. We need to re-asign the ip to it's correct reverse domain. :param reverse_domain_1: The domain which could possibly have addresses added to it. :type reverse_domain_1: :class:`Domain` :param reverse_domain_2: The domain that has ip's which might not belong to it anymore. :type reverse_domain_2: :class:`Domain` """ if reverse_domain_2 is None or ip_type is None: return ptrs = reverse_domain_2.ptr_set.iterator() # intrs = reverse_domain_2.staticinterface_set.iterator() # TODO do the intr case for ptr in ptrs: if ip_type == '6': nibz = nibbilize(ptr.ip_str) revname = ip_to_domain_name(nibz, ip_type='6') else: revname = ip_to_domain_name(ptr.ip_str, ip_type='4') correct_reverse_domain = name_to_domain(revname) if correct_reverse_domain != ptr.reverse_domain: # TODO, is this needed? The save() function (actually the # clean_ip function) will assign the correct reverse domain. ptr.reverse_domain = correct_reverse_domain ptr.save()
def boot_strap_ipv6_reverse_domain(ip, soa=None): """ This function is here to help create IPv6 reverse domains. .. note:: Every nibble in the reverse domain should not exists for this function to exit successfully. :param ip: The ip address in nibble format :type ip: str :raises: ReverseDomainNotFoundError """ validate_reverse_name(ip, '6') for i in xrange(1, len(ip) + 1, 2): cur_reverse_domain = ip[:i] domain_name = ip_to_domain_name(cur_reverse_domain, ip_type='6') reverse_domain = Domain(name=domain_name) reverse_domain.soa = soa reverse_domain.save() return reverse_domain
def test_master_reverse_ipv6_domains(self): rds = [] rd = self.create_domain(name="1", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0.0.0", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0.0.0.3", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0.0.0.3.2", ip_type="6") rd.save() rds.append(rd) rd = self.create_domain(name="1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0" ".0.0.0.0.0.0.0.0.0.3.2.1", ip_type="6") rd.save() rds.append(rd) for rd in list(enumerate(rds)): if rd[0] == 0: self.assertEqual(rd[1].master_domain, self.i6_arpa) else: self.assertEqual(rd[1].master_domain, rds[rd[0] - 1]) self.assertTrue(rd[1].get_absolute_url()) self.assertTrue(rd[1].get_edit_url()) self.assertTrue(rd[1].get_delete_url()) try: Domain.objects.filter(name=ip_to_domain_name("1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0", ip_type="6"))[ 0 ].delete() except ValidationError, e: pass
def test_master_reverse_ipv6_domains(self): rds = [] rd = self.create_domain(name='1', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain( name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain( name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain( name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0.0.0', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0.0.0.3', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0.0.0.3.2', ip_type='6') rd.save() rds.append(rd) rd = self.create_domain(name='1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0.0' '.0.0.0.0.0.0.0.0.0.3.2.1', ip_type='6') rd.save() rds.append(rd) for rd in list(enumerate(rds)): if rd[0] == 0: self.assertEqual(rd[1].master_domain, self.i6_arpa) else: self.assertEqual(rd[1].master_domain, rds[rd[0] - 1]) self.assertTrue(rd[1].get_absolute_url()) self.assertTrue(rd[1].get_edit_url()) self.assertTrue(rd[1].get_delete_url()) try: Domain.objects.filter( name=ip_to_domain_name('1.2.8.3.0.0.0.0.4.3.4.5.6.6.5.6.7.0.0', ip_type='6'))[0].delete() except ValidationError, e: pass