def isString(cls, address):
     """Test if address is a valid string for address family"""
     try:
         win.inet_pton(cls.af, address)
         return True
     except socket.error:
         return False
Пример #2
0
 def _as_v6(self, value):
     if platform.system() == "Windows":
         import win_inet_pton
         return Address(True,
                        win_inet_pton.inet_pton(socket.AF_INET6, value))
     else:
         return Address(True, socket.inet_pton(socket.AF_INET6, value))
    def fromString(cls, address):
        """Create address from string

        Raises socket.error on failure"""
        shiftword = lambda x, y: (2 ** 32) * x + y
        structdesc = ">{:d}L".format(cls.bits / 32)
        return cls(reduce(shiftword, struct.unpack(structdesc,
                   win.inet_pton(cls.af, address))))
Пример #4
0
def ip_to_integer(ip_address):
    # try parsing the IP address first as IPv4, then as IPv6
    for version in (socket.AF_INET, socket.AF_INET6):
        try:
            ip_hex = win_inet_pton.inet_pton(version, ip_address) if platform == 'Windows' else socket.inet_pton(version, ip_address)
            ip_integer = int(binascii.hexlify(ip_hex), 16)

            return ip_integer, 4 if version == socket.AF_INET else 6
        except:
            pass

    raise ValueError("invalid IP address")
Пример #5
0
def ip_to_integer(ip_address):
    # try parsing the IP address first as IPv4, then as IPv6
    for version in (socket.AF_INET, socket.AF_INET6):
        try:
            ip_hex = win_inet_pton.inet_pton(version, ip_address) if platform == 'Windows' else socket.inet_pton(version, ip_address)
            ip_integer = int(binascii.hexlify(ip_hex), 16)

            return ip_integer, 4 if version == socket.AF_INET else 6
        except:
            pass

    raise ValueError("invalid IP address")
Пример #6
0
 def private_ip(self, ip):
     f = unpack('!I', inet_pton(AF_INET, ip))[0]
     private = (
         [2130706432, 4278190080
          ],  # 127.0.0.0,   255.0.0.0   http://tools.ietf.org/html/rfc3330
         [3232235520, 4294901760
          ],  # 192.168.0.0, 255.255.0.0 http://tools.ietf.org/html/rfc1918
         [2886729728, 4293918720
          ],  # 172.16.0.0,  255.240.0.0 http://tools.ietf.org/html/rfc1918
         [167772160, 4278190080
          ],  # 10.0.0.0,    255.0.0.0   http://tools.ietf.org/html/rfc1918
     )
     for net in private:
         if (f & net[1]) == net[0]:
             return True
     return False