diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-08-13 13:51:38 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-08-13 13:51:38 +1200 |
commit | 25f12b0e5debc7b052e0a5d002a88b045d8f6f6a (patch) | |
tree | 2c5274591d4ae2473fc2b994582b7b579ca7803c /examples/flowbasic | |
parent | 4d02ae0582dead00ad24a644ba712c79f56d04fd (diff) | |
download | mitmproxy-25f12b0e5debc7b052e0a5d002a88b045d8f6f6a.tar.gz mitmproxy-25f12b0e5debc7b052e0a5d002a88b045d8f6f6a.tar.bz2 mitmproxy-25f12b0e5debc7b052e0a5d002a88b045d8f6f6a.zip |
Add a basic Flow processor example.
Diffstat (limited to 'examples/flowbasic')
-rwxr-xr-x | examples/flowbasic | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/flowbasic b/examples/flowbasic new file mode 100755 index 00000000..d3981329 --- /dev/null +++ b/examples/flowbasic @@ -0,0 +1,39 @@ +#!/usr/bin/env python +""" + This example shows how to build a proxy based on mitmproxy's Flow + primitives. + + Note that request and response messages are not automatically acked, so we + need to implement handlers to do this. +""" +import os +from libmproxy import proxy, flow + +class MyMaster(flow.FlowMaster): + def run(self): + try: + flow.FlowMaster.run(self) + except KeyboardInterrupt: + self.shutdown() + + def handle_request(self, r): + f = flow.FlowMaster.handle_request(self, r) + if f: + r._ack() + return f + + def handle_response(self, r): + f = flow.FlowMaster.handle_response(self, r) + if f: + r._ack() + print f + return f + + +ssl_config = proxy.SSLConfig( + cacert = os.path.expanduser("~/.mitmproxy/mitmproxy-ca.pem") +) +state = flow.State() +server = proxy.ProxyServer(ssl_config, 8080) +m = MyMaster(server, state) +m.run() |