diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2013-03-03 10:37:28 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2013-03-03 10:37:28 +1300 |
commit | 0acab862a65ef4a1823a1bfb702d8be1e3d7b83d (patch) | |
tree | 4dbf39ed4e38c6e752080ac699a57029ae326340 /netlib/http.py | |
parent | 97537417f01c17903fb4cebd59991eea57faa5e6 (diff) | |
download | mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.tar.gz mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.tar.bz2 mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.zip |
Integrate HTTP auth, test to 100%
Diffstat (limited to 'netlib/http.py')
-rw-r--r-- | netlib/http.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/netlib/http.py b/netlib/http.py index bc09c8a1..10b6a402 100644 --- a/netlib/http.py +++ b/netlib/http.py @@ -1,4 +1,4 @@ -import string, urlparse +import string, urlparse, binascii import odict class HttpError(Exception): @@ -169,6 +169,26 @@ def parse_http_protocol(s): return major, minor +def parse_http_basic_auth(s): + words = s.split() + if len(words) != 2: + return None + scheme = words[0] + try: + user = binascii.a2b_base64(words[1]) + except binascii.Error: + return None + parts = user.split(':') + if len(parts) != 2: + return None + return scheme, parts[0], parts[1] + + +def assemble_http_basic_auth(scheme, username, password): + v = binascii.b2a_base64(username + ":" + password) + return scheme + " " + v + + def parse_init(line): try: method, url, protocol = string.split(line) |