| Home | Trees | Indices | Help |
|
|---|
|
|
Utilities 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) separated 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) separated 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 Tue Jan 3 23:11:32 2012 | http://epydoc.sourceforge.net |