diff options
| author | Aldo Cortesi <aldo@nullcube.com> | 2011-02-16 16:03:22 +1300 | 
|---|---|---|
| committer | Aldo Cortesi <aldo@nullcube.com> | 2011-02-16 16:03:22 +1300 | 
| commit | 27f0765cdd6bb29fe1dd00aaa24b17ae50888368 (patch) | |
| tree | ba7c7303d0397e6c315786c71f6fcb5f46082bf2 /libmproxy/flow.py | |
| parent | 33dac700fa5bc1779699d3d8f751e2e337f6f31a (diff) | |
| download | mitmproxy-27f0765cdd6bb29fe1dd00aaa24b17ae50888368.tar.gz mitmproxy-27f0765cdd6bb29fe1dd00aaa24b17ae50888368.tar.bz2 mitmproxy-27f0765cdd6bb29fe1dd00aaa24b17ae50888368.zip  | |
Extract flow-specific Master operations into FlowMaster.
Diffstat (limited to 'libmproxy/flow.py')
| -rw-r--r-- | libmproxy/flow.py | 36 | 
1 files changed, 36 insertions, 0 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py index 921abe1d..e791055f 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -4,6 +4,7 @@  """  import subprocess, base64, sys, json  import proxy, threading, netstring +import controller  class RunException(Exception):      def __init__(self, msg, returncode, errout): @@ -286,6 +287,41 @@ class State:          #end nocover +class FlowMaster(controller.Master): +    def __init__(self, server, state): +        controller.Master.__init__(self, server) +        self.state = state + +    # Handlers +    def handle_clientconnection(self, r): +        f = Flow(r) +        self.state.add_browserconnect(f) +        r.ack() +        return f + +    def handle_error(self, r): +        f = self.state.add_error(r) +        if not f: +            r.ack() +        return f + +    def handle_request(self, r): +        f = self.state.add_request(r) +        if not f: +            r.ack() +        return f + +    def handle_response(self, r): +        f = self.state.add_response(r) +        if not f: +            r.ack() +        else: +            if f.match(self.stickycookie): +                hid = (f.request.host, f.request.port) +                if f.response.headers.has_key("set-cookie"): +                    self.stickyhosts[hid] = f.response.headers["set-cookie"] +            self.process_flow(f, r) +  class FlowWriter:      def __init__(self, fo):  | 
