Split mitmproxy and mitmdump - mitmdump is the non-interactive verison of mitmproxy.

This commit is contained in:
Aldo Cortesi 2010-03-01 14:48:06 +13:00
parent 6300a57212
commit b91156723b
4 changed files with 65 additions and 24 deletions

62
mitmdump Executable file
View File

@ -0,0 +1,62 @@
#!/usr/bin/env python
# Copyright (C) 2010 Aldo Cortesi
#
# 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, os.path
from libmproxy import proxy, controller, console, utils
from optparse import OptionParser, OptionGroup
if __name__ == '__main__':
parser = OptionParser(
usage = "%prog [options] output",
version="%prog 0.1",
)
parser.add_option(
"-c", "--cert", action="store",
type = "str", dest="cert", default="~/.mitmproxy/cert.pem",
help = "SSL certificate file."
)
parser.add_option(
"-p", "--port", action="store",
type = "int", dest="port", default=8080,
help = "Port."
)
parser.add_option("-q", "--quiet",
action="store_true", dest="quiet",
help="Quiet.")
parser.add_option("-v", "--verbose",
action="count", dest="verbose", default=1,
help="Increase verbosity. Can be passed multiple times.")
options, args = parser.parse_args()
if options.quiet:
options.verbose = 0
certpath = os.path.expanduser(options.cert)
if not os.path.exists(certpath):
print >> sys.stderr, "Creating bogus certificate at %s"%options.cert
utils.make_bogus_cert(certpath)
proxy.config = proxy.Config(
certpath
)
server = proxy.ProxyServer(options.port)
m = controller.DumpMaster(server, options.verbose)
if options.verbose > 0:
print >> sys.stderr, "Running on port %s"%options.port
m.run()

View File

@ -25,11 +25,6 @@ if __name__ == '__main__':
usage = "%prog [options] output",
version="%prog 0.1",
)
parser.add_option(
"-d", "--dump", action="store_true",
dest="dump", default=False,
help = "Just dump data to screen."
)
parser.add_option(
"-c", "--cert", action="store",
type = "str", dest="cert", default="~/.mitmproxy/cert.pem",
@ -40,21 +35,10 @@ if __name__ == '__main__':
type = "int", dest="port", default=8080,
help = "Port."
)
parser.add_option("-q", "--quiet",
action="store_true", dest="quiet",
help="Quiet.")
parser.add_option(
"-t", "--terminal-backround", action="store_true", dest="terminal_background",
default=False, help="Uses the standard terminal background instead of setting an own. Useful for transparent terminals.")
parser.add_option("-v", "--verbose",
action="count", dest="verbose", default=1,
help="Increase verbosity. Can be passed multiple times.")
options, args = parser.parse_args()
if options.quiet:
options.verbose = 0
certpath = os.path.expanduser(options.cert)
if not os.path.exists(certpath):
@ -65,10 +49,5 @@ if __name__ == '__main__':
certpath
)
server = proxy.ProxyServer(options.port)
if options.dump:
m = controller.DumpMaster(server, options.verbose)
else:
m = console.ConsoleMaster(server, options)
if options.verbose > 0:
print >> sys.stderr, "Running on port %s"%options.port
m.run()

View File

@ -79,7 +79,7 @@ setup(
url = "http://corte.si/software",
packages = packages,
package_data = package_data,
scripts = ["mitmproxy"],
scripts = ["mitmproxy", "mitmdump"],
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python",

2
todo
View File

@ -6,10 +6,10 @@ Future:
- On-the-fly generation of keys, signed with a CA
- Pass-through fast-track for things that don't match filter?
- Reading contents from file
- Saving contents to file
- Shortcut for viewing in pager
- Serializing and de-serializing requests and responses.
- Use real non-blocking input handling to minimize cpu load.
- Upstream proxies.
Bugs: