diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-09-08 12:20:40 +0200 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-09-08 12:20:40 +0200 |
commit | 2b2d21aff0bbde86df2fc85fe505f1716bf7b79e (patch) | |
tree | a561cb0ec881b5464846cad649820af2bb143f5d /libmproxy | |
parent | 8eff2df89e5be8415aeda526e70e10e023ac1b05 (diff) | |
download | mitmproxy-2b2d21aff0bbde86df2fc85fe505f1716bf7b79e.tar.gz mitmproxy-2b2d21aff0bbde86df2fc85fe505f1716bf7b79e.tar.bz2 mitmproxy-2b2d21aff0bbde86df2fc85fe505f1716bf7b79e.zip |
add --ignore ui indication
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/console/__init__.py | 16 | ||||
-rw-r--r-- | libmproxy/console/grideditor.py | 12 | ||||
-rw-r--r-- | libmproxy/flow.py | 14 | ||||
-rw-r--r-- | libmproxy/proxy/config.py | 6 |
4 files changed, 42 insertions, 6 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py index 5d55cf58..d235a327 100644 --- a/libmproxy/console/__init__.py +++ b/libmproxy/console/__init__.py @@ -129,6 +129,10 @@ class StatusBar(common.WWrap): r.append(":%s in file]"%self.master.server_playback.count()) else: r.append(":%s to go]"%self.master.server_playback.count()) + if self.master.get_ignore(): + r.append("[") + r.append(("heading_key", "I")) + r.append("gnore:%d]"%len(self.master.get_ignore())) if self.master.state.intercept_txt: r.append("[") r.append(("heading_key", "i")) @@ -795,6 +799,10 @@ class ConsoleMaster(flow.FlowMaster): for command in commands: self.load_script(command) + def edit_ignore(self, ignore): + patterns = (x[0] for x in ignore) + self.set_ignore(patterns) + def loop(self): changed = True try: @@ -851,6 +859,14 @@ class ConsoleMaster(flow.FlowMaster): self.setheaders.set ) ) + elif k == "I": + self.view_grideditor( + grideditor.IgnoreEditor( + self, + [[x] for x in self.get_ignore()], + self.edit_ignore + ) + ) elif k == "i": self.prompt( "Intercept filter: ", diff --git a/libmproxy/console/grideditor.py b/libmproxy/console/grideditor.py index 642d8638..d629ec82 100644 --- a/libmproxy/console/grideditor.py +++ b/libmproxy/console/grideditor.py @@ -493,3 +493,15 @@ class ScriptEditor(GridEditor): script.Script.parse_command(val) except script.ScriptError, v: return str(v) + + +class IgnoreEditor(GridEditor): + title = "Editing ignore patterns" + columns = 1 + headings = ("Regex (matched on hostname:port / ip:port)",) + + def is_error(self, col, val): + try: + re.compile(val, re.IGNORECASE) + except re.error as e: + return "Invalid regex: %s" % str(e)
\ No newline at end of file diff --git a/libmproxy/flow.py b/libmproxy/flow.py index 343466e2..d263ccdd 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -1,6 +1,5 @@ """ - This module provides more sophisticated flow tracking. These match requests - with their responses, and provide filtering and interception facilities. + This module provides more sophisticated flow tracking and provides filtering and interception facilities. """ from __future__ import absolute_import import base64 @@ -8,12 +7,11 @@ import hashlib, Cookie, cookielib, re, threading import os import flask import requests -from netlib import odict, wsgi, tcp +from netlib import odict, wsgi import netlib.http from . import controller, protocol, tnetstring, filt, script, version, app from .protocol import http, handle -from .proxy.connection import ServerConnection -from .proxy.primitives import ProxyError +from .proxy.config import parse_host_pattern ODict = odict.ODict ODictCaseless = odict.ODictCaseless @@ -522,6 +520,12 @@ class FlowMaster(controller.Master): for script in self.scripts: self.run_single_script_hook(script, name, *args, **kwargs) + def get_ignore(self): + return [i.pattern for i in self.server.config.ignore] + + def set_ignore(self, ignore): + self.server.config.ignore = parse_host_pattern(ignore) + def set_stickycookie(self, txt): if txt: flt = filt.parse(txt) diff --git a/libmproxy/proxy/config.py b/libmproxy/proxy/config.py index ea815c69..0ff08c6f 100644 --- a/libmproxy/proxy/config.py +++ b/libmproxy/proxy/config.py @@ -10,6 +10,10 @@ CONF_BASENAME = "mitmproxy" CONF_DIR = "~/.mitmproxy" +def parse_host_pattern(patterns): + return [re.compile(p, re.IGNORECASE) for p in patterns] + + class ProxyConfig: def __init__(self, confdir=CONF_DIR, ca_file=None, clientcerts=None, no_upstream_cert=False, body_size_limit=None, @@ -41,7 +45,7 @@ class ProxyConfig: self.get_upstream_server = get_upstream_server self.http_form_in = http_form_in self.http_form_out = http_form_out - self.ignore = [re.compile(i, re.IGNORECASE) for i in ignore] + self.ignore = parse_host_pattern(ignore) self.authenticator = authenticator self.confdir = os.path.expanduser(confdir) self.ca_file = ca_file or os.path.join(self.confdir, CONF_BASENAME + "-ca.pem") |