diff options
author | Ujjwal Verma <ujjwalverma1111@gmail.com> | 2017-02-20 21:02:43 +0530 |
---|---|---|
committer | Ujjwal Verma <ujjwalverma1111@gmail.com> | 2017-02-20 21:02:43 +0530 |
commit | 11134b669e649231d7ad79642fea80b7e9f796d7 (patch) | |
tree | e01956ca5dbb0c8038893d0e65da425061214dc8 | |
parent | 18401dda8f293434410fba066afe9235740be98b (diff) | |
download | mitmproxy-11134b669e649231d7ad79642fea80b7e9f796d7.tar.gz mitmproxy-11134b669e649231d7ad79642fea80b7e9f796d7.tar.bz2 mitmproxy-11134b669e649231d7ad79642fea80b7e9f796d7.zip |
Absolute IPv6 addresses supported
-rw-r--r-- | mitmproxy/net/check.py | 9 | ||||
-rw-r--r-- | test/mitmproxy/net/test_check.py | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/mitmproxy/net/check.py b/mitmproxy/net/check.py index f793d397..ac2b6830 100644 --- a/mitmproxy/net/check.py +++ b/mitmproxy/net/check.py @@ -1,4 +1,5 @@ import re +from ipaddress import ip_address # Allow underscore in host name _label_valid = re.compile(b"(?!-)[A-Z\d\-_]{1,63}(?<!-)$", re.IGNORECASE) @@ -16,7 +17,13 @@ def is_valid_host(host: bytes) -> bool: return False if host and host[-1:] == b".": host = host[:-1] - return all(_label_valid.match(x) for x in host.split(b".")) + if all(_label_valid.match(x) for x in host.split(b".")): + return True + try: + ip_address(host.decode('idna')) + return True + except ValueError: + return False def is_valid_port(port): diff --git a/test/mitmproxy/net/test_check.py b/test/mitmproxy/net/test_check.py index 9dbc02e0..0ffd6b2e 100644 --- a/test/mitmproxy/net/test_check.py +++ b/test/mitmproxy/net/test_check.py @@ -11,3 +11,4 @@ def test_is_valid_host(): assert check.is_valid_host(b"one.two.") # Allow underscore assert check.is_valid_host(b"one_two") + assert check.is_valid_host(b"::1") |