aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2010-03-01 15:42:38 +1300
committerAldo Cortesi <aldo@nullcube.com>2010-03-01 15:42:38 +1300
commitf457342aab854d4cb34f918ba07b24168df9269c (patch)
treeed6d35f8f422f3059ef716a4d95cebf036a69a31 /libmproxy/console.py
parentfbe6e0a820c097803c04402e0f731bc104b4e223 (diff)
downloadmitmproxy-f457342aab854d4cb34f918ba07b24168df9269c.tar.gz
mitmproxy-f457342aab854d4cb34f918ba07b24168df9269c.tar.bz2
mitmproxy-f457342aab854d4cb34f918ba07b24168df9269c.zip
Add mitmproxy command line flags for a number of filter expressions.
For now, these are supported: intercept, limit, sticky cookies, beep
Diffstat (limited to 'libmproxy/console.py')
-rw-r--r--libmproxy/console.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/libmproxy/console.py b/libmproxy/console.py
index 8507c1e3..7c12cc0c 100644
--- a/libmproxy/console.py
+++ b/libmproxy/console.py
@@ -14,7 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import Queue, mailcap, mimetypes, tempfile, os, subprocess, threading
-import os.path
+import os.path, sys
import cStringIO
import urwid.curses_display
import urwid
@@ -609,6 +609,8 @@ class State:
if not f:
return False
f.request = req
+ if self.focus is None:
+ self.set_focus(0)
return f
def add_response(self, resp):
@@ -618,6 +620,8 @@ class State:
f.response = resp
f.waiting = False
f.backup()
+ if self.focus is None:
+ self.set_focus(0)
return f
def add_error(self, err):
@@ -661,7 +665,7 @@ class State:
return self.flow_map.get(connection)
def get_focus(self):
- if not self.view:
+ if not self.view or self.focus is None:
return None, None
return self.view[self.focus], self.focus
@@ -762,6 +766,26 @@ class ConsoleMaster(controller.Master):
controller.Master.__init__(self, server)
self.state = State()
+ r = self.set_limit(options.limit)
+ if r:
+ print >> sys.stderr, "Limit error:", r
+ sys.exit(1)
+
+ r = self.set_intercept(options.intercept)
+ if r:
+ print >> sys.stderr, "Intercept error:", r
+ sys.exit(1)
+
+ r = self.set_beep(options.beep)
+ if r:
+ print >> sys.stderr, "Beep error:", r
+ sys.exit(1)
+
+ r = self.set_stickycookie(options.sticky)
+ if r:
+ print >> sys.stderr, "Sticky cookies error:", r
+ sys.exit(1)
+
self.stickycookie = None
self.stickyhosts = {}
@@ -974,7 +998,6 @@ class ConsoleMaster(controller.Master):
self.state.set_limit(f)
else:
self.state.set_limit(None)
- self.sync_list_view()
def set_intercept(self, txt):
if txt:
@@ -983,7 +1006,6 @@ class ConsoleMaster(controller.Master):
return "Invalid filter expression."
else:
self.state.intercept = None
- self.sync_list_view()
def set_beep(self, txt):
if txt:
@@ -1040,9 +1062,11 @@ class ConsoleMaster(controller.Master):
self.view_help()
elif k == "l":
self.prompt("Limit: ", self.set_limit)
+ self.sync_list_view()
k = None
elif k == "i":
self.prompt("Intercept: ", self.set_intercept)
+ self.sync_list_view()
k = None
elif k == "B":
self.prompt("Beep: ", self.set_beep)