Merge pull request #2118 from lymanZerga11/patch-3

Update proxyauth.py to add proxyauth metadata
This commit is contained in:
Maximilian Hils
2017-03-11 03:04:38 +01:00
committed by GitHub
2 changed files with 5 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
import binascii
import weakref
from typing import Optional
from typing import Set # noqa
from typing import MutableMapping # noqa
from typing import Tuple
import passlib.apache
@@ -46,7 +46,7 @@ class ProxyAuth:
self.htpasswd = None
self.singleuser = None
self.mode = None
self.authenticated = weakref.WeakSet() # type: Set[connections.ClientConnection]
self.authenticated = weakref.WeakKeyDictionary() # type: MutableMapping[connections.ClientConnection, Tuple[str, str]]
"""Contains all connections that are permanently authenticated after an HTTP CONNECT"""
def enabled(self) -> bool:
@@ -153,11 +153,12 @@ class ProxyAuth:
def http_connect(self, f: http.HTTPFlow) -> None:
if self.enabled():
if self.authenticate(f):
self.authenticated.add(f.client_conn)
self.authenticated[f.client_conn] = f.metadata["proxyauth"]
def requestheaders(self, f: http.HTTPFlow) -> None:
if self.enabled():
# Is this connection authenticated by a previous HTTP CONNECT?
if f.client_conn in self.authenticated:
f.metadata["proxyauth"] = self.authenticated[f.client_conn]
return
self.authenticate(f)

View File

@@ -173,3 +173,4 @@ def test_handlers():
f2 = tflow.tflow(client_conn=f.client_conn)
up.requestheaders(f2)
assert not f2.response
assert f2.metadata["proxyauth"] == ('test', 'test')