Home | Trees | Indices | Help |
|
---|
|
Utitlities for dealing with ip addresses. Functions: - validate_ip: Validate a dotted-quad ip address. - ip2long: Convert a dotted-quad ip address to a network byte order 32-bit integer. - long2ip: Convert a network byte order 32-bit integer to a dotted quad ip address. - ip2hex: Convert a dotted-quad ip address to a hex encoded network byte order 32-bit integer. - hex2ip: Convert a hex encoded network byte order 32-bit integer to a dotted-quad ip address. - validate_cidr: Validate a CIDR notation ip address. - cidr2block: Convert a CIDR notation ip address into a tuple containing network block start and end addresses. Objects: - IpRange: Range of ip addresses providing ``in`` and iteration. - IpRangeList: List of IpRange objects providing ``in`` and iteration. The IpRangeList object can be used in a django settings file to allow CIDR notation and/or (start, end) ranges to be used in the INTERNAL_IPS list. Example: INTERNAL_IPS = IpRangeList( '127.0.0.1', '192.168/16', ('10.0.0.1', '10.0.0.19'), )
Version: 0.5.0-dev
|
|||
IpRange Range of ip addresses. |
|||
IpRangeList List of IpRange objects. |
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
|||
_DOTTED_QUAD_RE = re.compile(r'^
|
|||
_CIDR_RE = re.compile(r'^
|
|||
_MAX_IP = 4294967295
|
|||
_MIN_IP = 0
|
|||
__package__ =
|
|
Validate a dotted-quad ip address. The string is considered a valid dotted-quad address if it consists of one to four octets (0-255) seperated by periods (.). >>> validate_ip('127.0.0.1') True >>> validate_ip('127.0') True >>> validate_ip('127.0.0.256') False >>> validate_ip(None) Traceback (most recent call last): ... TypeError: expected string or buffer Args: s: String to validate as a dotted-quad ip address Returns: True if str is a valid dotted-quad ip address, False otherwise |
Validate a CIDR notation ip address. The string is considered a valid CIDR address if it consists of one to four octets (0-255) seperated by periods (.) followed by a forward slash (/) and a bit mask length (1-32). >>> validate_cidr('127.0.0.1/32') True >>> validate_cidr('127.0/8') True >>> validate_cidr('127.0.0.256/32') False >>> validate_cidr('127.0.0.0') False >>> validate_cidr(None) Traceback (most recent call last): ... TypeError: expected string or buffer Args: str: String to validate as a CIDR ip address Returns: True if str is a valid CIDR address, False otherwise |
Convert a dotted-quad ip address to a network byte order 32-bit integer. >>> ip2long('127.0.0.1') 2130706433 >>> ip2long('127.1') 2130706433 >>> ip2long('127') 2130706432 >>> ip2long('127.0.0.256') is None True Args: ip: Dotted-quad ip address (eg. '127.0.0.1') Returns: Network byte order 32-bit integer or None if ip is invalid |
Convert a network byte order 32-bit integer to a dotted quad ip address. >>> long2ip(2130706433) '127.0.0.1' >>> long2ip(_MIN_IP) '0.0.0.0' >>> long2ip(_MAX_IP) '255.255.255.255' >>> long2ip(None) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... TypeError: unsupported operand type(s) for >>: 'NoneType' and 'int' >>> long2ip(-1) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... TypeError: expected int between 0 and 4294967295 inclusive >>> long2ip(374297346592387463875L) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... TypeError: expected int between 0 and 4294967295 inclusive >>> long2ip(_MAX_IP + 1) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... TypeError: expected int between 0 and 4294967295 inclusive Args: l: Network byte order 32-bit integer Returns: Dotted-quad ip address (eg. '127.0.0.1') |
Convert a dotted-quad ip address to a hex encoded number. >>> ip2hex('0.0.0.1') '00000001' >>> ip2hex('127.0.0.1') '7f000001' >>> ip2hex('127.255.255.255') '7fffffff' >>> ip2hex('128.0.0.1') '80000001' >>> ip2hex('128.1') '80000001' >>> ip2hex('255.255.255.255') 'ffffffff' |
Convert a hex encoded integer to a dotted-quad ip address. >>> hex2ip('00000001') '0.0.0.1' >>> hex2ip('7f000001') '127.0.0.1' >>> hex2ip('7fffffff') '127.255.255.255' >>> hex2ip('80000001') '128.0.0.1' >>> hex2ip('ffffffff') '255.255.255.255' |
Convert a CIDR notation ip address into a tuple containing the network block start and end addresses. >>> cidr2block('127.0.0.1/32') ('127.0.0.1', '127.0.0.1') >>> cidr2block('127/8') ('127.0.0.0', '127.255.255.255') >>> cidr2block('127.0.1/16') ('127.0.0.0', '127.0.255.255') >>> cidr2block('127.1/24') ('127.1.0.0', '127.1.0.255') >>> cidr2block('127.0.0.3/29') ('127.0.0.0', '127.0.0.7') >>> cidr2block('127/0') ('0.0.0.0', '255.255.255.255') Args: cidr: CIDR notation ip address (eg. '127.0.0.1/8') Returns: Tuple of block (start, end) or None if invalid |
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Oct 17 13:43:23 2011 | http://epydoc.sourceforge.net |