aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http_auth.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-05-28 12:12:37 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-05-28 12:12:37 +1200
commit41af65a1c478825d4df6239b33fbcb971dcf1df8 (patch)
tree9830657189938900adad330beba0478f0d0761c2 /netlib/http_auth.py
parent5265b289575d3935e8af29b5c27c963832efc8ad (diff)
parent80378306960379f12aca72309dc47437cd1a825c (diff)
downloadmitmproxy-41af65a1c478825d4df6239b33fbcb971dcf1df8.tar.gz
mitmproxy-41af65a1c478825d4df6239b33fbcb971dcf1df8.tar.bz2
mitmproxy-41af65a1c478825d4df6239b33fbcb971dcf1df8.zip
Merge branch 'Kriechi-cleanup'
Diffstat (limited to 'netlib/http_auth.py')
-rw-r--r--netlib/http_auth.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/netlib/http_auth.py b/netlib/http_auth.py
index 296e094c..0143760c 100644
--- a/netlib/http_auth.py
+++ b/netlib/http_auth.py
@@ -4,9 +4,11 @@ from . import http
class NullProxyAuth(object):
+
"""
No proxy auth at all (returns empty challange headers)
"""
+
def __init__(self, password_manager):
self.password_manager = password_manager
@@ -14,7 +16,6 @@ class NullProxyAuth(object):
"""
Clean up authentication headers, so they're not passed upstream.
"""
- pass
def authenticate(self, headers):
"""
@@ -48,7 +49,7 @@ class BasicProxyAuth(NullProxyAuth):
if not parts:
return False
scheme, username, password = parts
- if scheme.lower()!='basic':
+ if scheme.lower() != 'basic':
return False
if not self.password_manager.test(username, password):
return False
@@ -56,18 +57,21 @@ class BasicProxyAuth(NullProxyAuth):
return True
def auth_challenge_headers(self):
- return {self.CHALLENGE_HEADER:'Basic realm="%s"'%self.realm}
+ return {self.CHALLENGE_HEADER: 'Basic realm="%s"' % self.realm}
class PassMan(object):
+
def test(self, username, password_token):
return False
class PassManNonAnon(PassMan):
+
"""
Ensure the user specifies a username, accept any password.
"""
+
def test(self, username, password_token):
if username:
return True
@@ -75,9 +79,11 @@ class PassManNonAnon(PassMan):
class PassManHtpasswd(PassMan):
+
"""
Read usernames and passwords from an htpasswd file
"""
+
def __init__(self, path):
"""
Raises ValueError if htpasswd file is invalid.
@@ -90,14 +96,16 @@ class PassManHtpasswd(PassMan):
class PassManSingleUser(PassMan):
+
def __init__(self, username, password):
self.username, self.password = username, password
def test(self, username, password_token):
- return self.username==username and self.password==password_token
+ return self.username == username and self.password == password_token
class AuthAction(Action):
+
"""
Helper class to allow seamless integration int argparse. Example usage:
parser.add_argument(
@@ -106,16 +114,18 @@ class AuthAction(Action):
help="Allow access to any user long as a credentials are specified."
)
"""
+
def __call__(self, parser, namespace, values, option_string=None):
passman = self.getPasswordManager(values)
authenticator = BasicProxyAuth(passman, "mitmproxy")
setattr(namespace, self.dest, authenticator)
- def getPasswordManager(self, s): # pragma: nocover
+ def getPasswordManager(self, s): # pragma: nocover
raise NotImplementedError()
class SingleuserAuthAction(AuthAction):
+
def getPasswordManager(self, s):
if len(s.split(':')) != 2:
raise ArgumentTypeError(
@@ -126,11 +136,12 @@ class SingleuserAuthAction(AuthAction):
class NonanonymousAuthAction(AuthAction):
+
def getPasswordManager(self, s):
return PassManNonAnon()
class HtpasswdAuthAction(AuthAction):
+
def getPasswordManager(self, s):
return PassManHtpasswd(s)
-