コード例 #1
0
ファイル: models.py プロジェクト: Ziaunys/chili
    def clean_ip(self, update_reverse_domain=True):
        """
        The clean method in Ip is different from the rest. It needs
        to be called with the update_reverse_domain flag. Sometimes we
        need to not update the reverse domain of an IP (i.e. when we are
        deleting a reverse_domain).
        """
        # TODO, it's a f*****g hack. Car babies.
        validate_ip_type(self.ip_type)
        self._validate_ip_str()
        if self.ip_type == '4':
            try:
                ip = ipaddr.IPv4Address(self.ip_str)
                self.ip_str = str(ip)
            except ipaddr.AddressValueError, e:
                raise ValidationError("Invalid Ip address {0}".
                                      format(self.ip_str))

            if update_reverse_domain:
                # Resolve IP to domain name.
                no_match = False
                try:
                    self.reverse_domain = (name_to_domain(
                                           ip_to_domain_name(self.ip_str,
                                                             ip_type='4')))
                except ValueError:
                    no_match = True

                if (no_match or self.reverse_domain is None or
                    self.reverse_domain.name in ('arpa', 'in-addr.arpa',
                                                 'ipv6.arpa')):
                    raise ValidationError("No reverse Domain found for {0} "
                                          .format(self.ip_str))
            self.ip_upper = 0
            self.ip_lower = int(ip)
コード例 #2
0
def ip_to_domain_name(ip, ip_type='4', uppercase=False):
    """Convert an ip to dns zone form. The ip is assumed to be in valid
    format."""
    if not isinstance(ip, basestring):
        raise ValidationError("Ip is not of type string.")
    validate_ip_type(ip_type)
    octets = ip.split('.')
    if ip_type == '4':
        name = '.in-addr.arpa'
    if ip_type == '6':
        name = '.ipv6.arpa'
    if uppercase:
        name = name.uppercase

    name = '.'.join(list(reversed(octets))) + name
    return name
コード例 #3
0
ファイル: models.py プロジェクト: ngokevin/cyder
 def clean_ip(self, update_reverse_domain=True):
     """The clean method in Ip is different from the rest. It needs
     to be called with the update_reverse_domain flag. Sometimes we
     need to not update the reverse domain of an IP (i.e. when we are
     deleting a reverse_domain).
     """
     # TODO, it's a f*****g hack. Car babies.
     validate_ip_type(self.ip_type)
     self._validate_ip_str()
     if self.ip_type == '4':
         try:
             ip = ipaddr.IPv4Address(self.ip_str)
             self.ip_str = str(ip)
         except ipaddr.AddressValueError, e:
             raise ValidationError("Invalid Ip address {0}".
                                   format(self.ip_str))
         if update_reverse_domain:
             self.reverse_domain = ip_to_reverse_domain(self.ip_str,
                                                        ip_type='4')
         self.ip_upper = 0
         self.ip_lower = int(ip)