Ejemplo n.º 1
0
 def test_create_reverses_should_use_explicit_name(self):
     r = self.z.create_reverse_zones(
         {'212.122.41.128/25': '128-25.41.122.212.in-addr.arpa.'})
     z = r[ip.IPNetwork('212.122.41.128/25')]
     self.assertEqual(z.name, '128-25.41.122.212.in-addr.arpa')
     self.assertEqual(z.origin, '128-25.41.122.212.in-addr.arpa')
     self.assertEqual(z.prefix, ip.IPNetwork('212.122.41.128/25'))
Ejemplo n.º 2
0
 def test_add_ptr_strips_prefix(self):
     z = ReverseZone('1.0.1.0.8.4.2.0.2.0.a.2.ip6.arpa',
                     ip.IPNetwork('2a02:238:101::/48'))
     z.add_ptr(ip.IPAddress('2a02:248:101:63::5b'), 'vm00')
     self.assertEqual(
         RR.PTR('b.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.6.0.0', 'vm00'),
         z.records[0])
Ejemplo n.º 3
0
    def validate(self, value):
        """ ensure valid ip network """
        super(IPNetworkField, self).validate(value)

        try:
            ip.IPNetwork(value)
        except (ip.AddrFormatError, ValueError):
            raise ValidationError(_('Invalid ip network'))
Ejemplo n.º 4
0
 def enumerate_reverse_zones(self, netlist):
     """Generates (prefix, ReverseZone) pairs for all configured zones."""
     for prefix, name in netlist.items():
         prefix = ip.IPNetwork(prefix)
         default_name = self.default_reverse_name(prefix)
         yield (prefix,
                ReverseZone((name or default_name).rstrip('.'),
                            prefix=prefix,
                            strip_suffix=default_name,
                            parent_zones=self))
Ejemplo n.º 5
0
def rand_ipv6_ip(network=False):
    """This uses the IPv6 documentation range of 2001:DB8::/32"""
    ran_add = ["%x" % random.randrange(0, 16**4) for i in range(6)]
    address = "2001:0DB8:" + ":".join(ran_add)
    if network:
        mask_length = six.text_type(random.randint(32, 128))
        address = '/'.join((address, mask_length))
        ip_network = ip.IPNetwork(address)
        return '/'.join((six.text_type(ip_network.network), mask_length))
    return address
Ejemplo n.º 6
0
def rand_ip(network=False):
    """This uses the TEST-NET-3 range of reserved IP addresses.

    Using this range, which are reserved solely for use in
    documentation and example source code, should avoid any potential
    conflicts in real-world testing.
    """
    test_net_3 = '203.0.113.'
    address = test_net_3 + six.text_type(random.randint(0, 255))
    if network:
        mask_length = six.text_type(random.randint(24, 32))
        address = '/'.join((address, mask_length))
        ip_network = ip.IPNetwork(address)
        return '/'.join((six.text_type(ip_network.network), mask_length))
    return address
Ejemplo n.º 7
0
 def test_add_reverse_to_correct_zone(self):
     self.z.add_reverse(ip.IPAddress('2a02:248:101:63::5b'), 'vm00.ipv6')
     self.assertEqual(
         'vm00.ipv6.gocept.net.', self.z.reverse_zones[ip.IPNetwork(
             '2a02:248:101::/48')].records[0].value)
Ejemplo n.º 8
0
 def test_default_ipv6_reverse_name(self):
     self.assertEqual(
         '1.0.1.0.8.4.2.0.2.0.a.2.ip6.arpa.',
         self.z.default_reverse_name(ip.IPNetwork('2a02:248:101::/48')))
Ejemplo n.º 9
0
 def test_default_ipv4_reverse_name(self):
     self.assertEqual(
         '16.172.in-addr.arpa.',
         self.z.default_reverse_name(ip.IPNetwork('172.16.0.0/16')))
Ejemplo n.º 10
0
 def test_create_implicit_ipv4_reverse_zone_name(self):
     r = self.z.create_reverse_zones({'195.62.125.0/24': ''})
     zone = r[ip.IPNetwork('195.62.125.0/24')]
     self.assertEqual(zone.name, '125.62.195.in-addr.arpa')
     self.assertEqual(zone.origin, '125.62.195.in-addr.arpa')
     self.assertEqual(zone.prefix, ip.IPNetwork('195.62.125.0/24'))
Ejemplo n.º 11
0
 def test_add_pre_strips_correct_prefix_for_cidr_zones(self):
     z = ReverseZone('128-25.41.122.212.in-addr.arpa',
                     prefix=ip.IPNetwork('212.122.41.128/25'),
                     strip_suffix='41.122.212.in-addr.arpa')
     z.add_ptr(ip.IPAddress('212.122.41.152'), 'rt.gocept.com.')
     self.assertEqual(RR.PTR('152', 'rt.gocept.com.'), z.records[0])
Ejemplo n.º 12
0
 def test_reverse_zone_is_public(self):
     r = ReverseZone('125.62.195.in-addr.arpa',
                     ip.IPNetwork('195.62.125.0/24'))
     self.assertFalse(r.private)
Ejemplo n.º 13
0
 def test_reverse_zone_is_private(self):
     r = ReverseZone('22.172.in-addr.arpa', ip.IPNetwork('172.22.0.0/16'))
     self.assertTrue(r.private)
Ejemplo n.º 14
0
 def to_internal_value(self, value):
     try:
         return ip.IPNetwork(value)
     except (ip.AddrFormatError, ValueError):
         raise ValidationError(_('Invalid ip network'))