diff options
author | Jan Cholasta <jcholast@redhat.com> | 2011-09-30 10:09:55 +0200 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2011-10-05 10:58:42 +0200 |
commit | 087251c88b3a6da9c2b6953bf21188a31d8f9d37 (patch) | |
tree | f10137f22a27f03d02b4594f0d31c7df1e17a464 /ipapython/ipautil.py | |
parent | 49de0c0575ac9ba224b2a06b961cf848089ab574 (diff) | |
download | freeipa-087251c88b3a6da9c2b6953bf21188a31d8f9d37.tar.gz freeipa-087251c88b3a6da9c2b6953bf21188a31d8f9d37.tar.xz freeipa-087251c88b3a6da9c2b6953bf21188a31d8f9d37.zip |
Add a function for formatting network locations of the form host:port for use in URLs.
If the host part is a literal IPv6 address, it must be enclosed in square
brackets (RFC 2732).
ticket 1869
Diffstat (limited to 'ipapython/ipautil.py')
-rw-r--r-- | ipapython/ipautil.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py index cfc979edb..dfeaa9e0b 100644 --- a/ipapython/ipautil.py +++ b/ipapython/ipautil.py @@ -151,6 +151,24 @@ class CheckedIPAddress(netaddr.IPAddress): def valid_ip(addr): return netaddr.valid_ipv4(addr) or netaddr.valid_ipv6(addr) +def format_netloc(host, port=None): + """ + Format network location (host:port). + + If the host part is a literal IPv6 address, it must be enclosed in square + brackets (RFC 2732). + """ + host = str(host) + try: + socket.inet_pton(socket.AF_INET6, host) + host = '[%s]' % host + except socket.error: + pass + if port is None: + return host + else: + return '%s:%s' % (host, str(port)) + def realm_to_suffix(realm_name): s = realm_name.split(".") terms = ["dc=" + x.lower() for x in s] |