aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/record.py
diff options
context:
space:
mode:
authorHenrik Nordstrom <henrik@henriknordstrom.net>2010-11-17 14:11:56 +0100
committerHenrik Nordstrom <henrik@henriknordstrom.net>2011-02-10 02:59:51 +0100
commitd11dd742d8593087959b6f1e0d9cc1f956dee03e (patch)
tree9ac076b44004556cfc83682999a4774639759868 /libmproxy/record.py
parent4bae297fbbe294a962116f574ca1b8ae434e0886 (diff)
downloadmitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.tar.gz
mitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.tar.bz2
mitmproxy-d11dd742d8593087959b6f1e0d9cc1f956dee03e.zip
Simple record & playback functionality
Diffstat (limited to 'libmproxy/record.py')
-rw-r--r--libmproxy/record.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/libmproxy/record.py b/libmproxy/record.py
new file mode 100644
index 00000000..d32c8711
--- /dev/null
+++ b/libmproxy/record.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2010 Henrik Nordstrom <henrik@henriknordstrom.net>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# HENRIK NORDSTROM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+# OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#
+# Alternatively you may use this file under a GPLv3 license as follows:
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+import controller
+import utils
+import recorder
+
+class RecordMaster(controller.Master):
+ """
+ A simple master that just records to files.
+ """
+ def __init__(self, server, options):
+ self.verbosity = options.verbose
+ self.store = recorder.Recorder(options)
+ controller.Master.__init__(self, server)
+
+ def run(self):
+ try:
+ return controller.Master.run(self)
+ except KeyboardInterrupt:
+ self.shutdown()
+
+ def handle_request(self, msg):
+ msg.ack(self.store.filter_request(msg))
+
+ def handle_response(self, msg):
+ if self.verbosity > 0:
+ print >> sys.stderr, ">>",
+ print >> sys.stderr, msg.request.short()
+ print >> sys.stderr, "<<",
+ print >> sys.stderr, msg.short()
+ self.store.save_response(msg)
+ msg.ack(self.store.filter_response(msg))