diff options
Diffstat (limited to 'libmproxy/record.py')
-rw-r--r-- | libmproxy/record.py | 68 |
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)) |