aboutsummaryrefslogtreecommitdiffstats
path: root/examples/complex/flowbasic.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-11-21 02:16:20 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-11-21 02:28:10 +0100
commit9af8f4bb31c94a25780a4189bffa406906249626 (patch)
treecf52f1c312b7bac3d83d796d6b03bb33b4556f26 /examples/complex/flowbasic.py
parentf74e561524d04c93cd7953f34e78ebe67eaa58a8 (diff)
downloadmitmproxy-9af8f4bb31c94a25780a4189bffa406906249626.tar.gz
mitmproxy-9af8f4bb31c94a25780a4189bffa406906249626.tar.bz2
mitmproxy-9af8f4bb31c94a25780a4189bffa406906249626.zip
organize examples
This commit is largely based on work by Thiago Arrais (@thiagoarrais) and Shane Bradfield (@l33tLumberjack). I wasn't really able to get their PR reasonably merged onto the latest master, so I reapplied their changes manually here and did some further improvements on that.
Diffstat (limited to 'examples/complex/flowbasic.py')
-rw-r--r--examples/complex/flowbasic.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/complex/flowbasic.py b/examples/complex/flowbasic.py
new file mode 100644
index 00000000..25b0b1a9
--- /dev/null
+++ b/examples/complex/flowbasic.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+"""
+ This example shows how to build a proxy based on mitmproxy's Flow
+ primitives.
+
+ Heads Up: In the majority of cases, you want to use inline scripts.
+
+ Note that request and response messages are not automatically replied to,
+ so we need to implement handlers to do this.
+"""
+from mitmproxy import controller, options, master
+from mitmproxy.proxy import ProxyServer, ProxyConfig
+
+
+class MyMaster(master.Master):
+ def run(self):
+ try:
+ master.Master.run(self)
+ except KeyboardInterrupt:
+ self.shutdown()
+
+ @controller.handler
+ def request(self, f):
+ print("request", f)
+
+ @controller.handler
+ def response(self, f):
+ print("response", f)
+
+ @controller.handler
+ def error(self, f):
+ print("error", f)
+
+ @controller.handler
+ def log(self, l):
+ print("log", l.msg)
+
+
+opts = options.Options(cadir="~/.mitmproxy/")
+config = ProxyConfig(opts)
+server = ProxyServer(config)
+m = MyMaster(opts, server)
+m.run()