diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-02-05 20:26:47 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-02-05 20:26:47 +0100 |
commit | f26d91cb814436fa5c1290459f5313e6831bd53c (patch) | |
tree | e54d13d395f7746b5b92637dd642645ceb34cd58 /libmproxy/proxy.py | |
parent | 9a55cd733268ff66c19ff6fead18291ec8342d8c (diff) | |
download | mitmproxy-f26d91cb814436fa5c1290459f5313e6831bd53c.tar.gz mitmproxy-f26d91cb814436fa5c1290459f5313e6831bd53c.tar.bz2 mitmproxy-f26d91cb814436fa5c1290459f5313e6831bd53c.zip |
add skeleton to change destinatin server during intercept, fix all testcases on windows
Diffstat (limited to 'libmproxy/proxy.py')
-rw-r--r-- | libmproxy/proxy.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index 53e3f575..6ff02a36 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -30,6 +30,7 @@ class ProxyError(Exception): def __str__(self): return "ProxyError(%s, %s)" % (self.code, self.msg) + class Log: def __init__(self, msg): self.msg = msg @@ -104,8 +105,9 @@ class ClientConnection(tcp.BaseHandler, stateobject.SimpleStateObject): class ServerConnection(tcp.TCPClient, stateobject.SimpleStateObject): - def __init__(self, address): + def __init__(self, address, priority): tcp.TCPClient.__init__(self, address) + self.priority = priority self.peername = None self.timestamp_start = None @@ -145,7 +147,7 @@ class ServerConnection(tcp.TCPClient, stateobject.SimpleStateObject): @classmethod def _from_state(cls, state): - f = cls(tuple()) + f = cls(tuple(), None) f._load_state(state) return f @@ -190,7 +192,7 @@ class RequestReplayThread(threading.Thread): def run(self): try: r = self.flow.request - server = ServerConnection(self.flow.server_conn.address()) + server = ServerConnection(self.flow.server_conn.address(), None) server.connect() if self.flow.server_conn.ssl_established: server.establish_ssl(self.config.clientcerts, @@ -202,6 +204,7 @@ class RequestReplayThread(threading.Thread): self.flow.error = protocol.primitives.Error(str(v)) self.channel.ask("error", self.flow.error) + class ConnectionHandler: def __init__(self, config, client_connection, client_address, server, channel, server_version): self.config = config @@ -310,18 +313,17 @@ class ConnectionHandler: @type priority: AddressPriority """ address = tcp.Address.wrap(address) - self.log("Set server address: %s:%s" % (address.host, address.port)) - if self.server_conn and (self.server_address_priority > priority): + self.log("Try to set server address: %s:%s" % (address.host, address.port)) + if self.server_conn and (self.server_conn.priority > priority): self.log("Server address priority too low (is: %s, got: %s)" % (self.server_address_priority, priority)) return - self.address_priority = priority - if self.server_conn and (self.server_conn.address == address): + self.server_conn.priority = priority # Possibly increase priority self.log("Addresses match, skip.") return - server_conn = ServerConnection(address) + server_conn = ServerConnection(address, priority) if self.server_conn and self.server_conn.connection: self.del_server_connection() self.server_conn = server_conn |