aboutsummaryrefslogtreecommitdiffstats
path: root/examples/mitmproxywrapper.py
diff options
context:
space:
mode:
authorJim Shaver <dcypherd@gmail.com>2015-05-31 01:21:44 -0400
committerJim Shaver <dcypherd@gmail.com>2015-05-31 01:21:44 -0400
commitb51363b3ca43f6572acb673186e6ae78a1f48434 (patch)
treea7488b32871c142141a813dc6ff2ede172672c31 /examples/mitmproxywrapper.py
parent4fe2c069cca07aadf983f54e18dac4de492d5d69 (diff)
parent06fba18106a8f759ec6f08453e86772a170c653b (diff)
downloadmitmproxy-b51363b3ca43f6572acb673186e6ae78a1f48434.tar.gz
mitmproxy-b51363b3ca43f6572acb673186e6ae78a1f48434.tar.bz2
mitmproxy-b51363b3ca43f6572acb673186e6ae78a1f48434.zip
Merge remote-tracking branch 'upstream/master' into print-bracket-fix
Conflicts: examples/har_extractor.py examples/nonblocking.py examples/read_dumpfile libmproxy/web/app.py
Diffstat (limited to 'examples/mitmproxywrapper.py')
-rwxr-xr-xexamples/mitmproxywrapper.py60
1 files changed, 42 insertions, 18 deletions
diff --git a/examples/mitmproxywrapper.py b/examples/mitmproxywrapper.py
index 29e3ac16..7ea10715 100755
--- a/examples/mitmproxywrapper.py
+++ b/examples/mitmproxywrapper.py
@@ -14,23 +14,29 @@ import contextlib
import os
import sys
+
class Wrapper(object):
-
+
def __init__(self, port, extra_arguments=None):
self.port = port
self.extra_arguments = extra_arguments
def run_networksetup_command(self, *arguments):
- return subprocess.check_output(['sudo', 'networksetup'] + list(arguments))
+ return subprocess.check_output(
+ ['sudo', 'networksetup'] + list(arguments))
def proxy_state_for_service(self, service):
- state = self.run_networksetup_command('-getwebproxy', service).splitlines()
+ state = self.run_networksetup_command(
+ '-getwebproxy',
+ service).splitlines()
return dict([re.findall(r'([^:]+): (.*)', line)[0] for line in state])
def enable_proxy_for_service(self, service):
print('Enabling proxy on {}...'.format(service))
for subcommand in ['-setwebproxy', '-setsecurewebproxy']:
- self.run_networksetup_command(subcommand, service, '127.0.0.1', str(self.port))
+ self.run_networksetup_command(
+ subcommand, service, '127.0.0.1', str(
+ self.port))
def disable_proxy_for_service(self, service):
print('Disabling proxy on {}...'.format(service))
@@ -39,14 +45,20 @@ class Wrapper(object):
def interface_name_to_service_name_map(self):
order = self.run_networksetup_command('-listnetworkserviceorder')
- mapping = re.findall(r'\(\d+\)\s(.*)$\n\(.*Device: (.+)\)$', order, re.MULTILINE)
+ mapping = re.findall(
+ r'\(\d+\)\s(.*)$\n\(.*Device: (.+)\)$',
+ order,
+ re.MULTILINE)
return dict([(b, a) for (a, b) in mapping])
def run_command_with_input(self, command, input):
- popen = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+ popen = subprocess.Popen(
+ command,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE)
(stdout, stderr) = popen.communicate(input)
return stdout
-
+
def primary_interace_name(self):
scutil_script = 'get State:/Network/Global/IPv4\nd.show\n'
stdout = self.run_command_with_input('/usr/sbin/scutil', scutil_script)
@@ -54,13 +66,15 @@ class Wrapper(object):
return interface
def primary_service_name(self):
- return self.interface_name_to_service_name_map()[self.primary_interace_name()]
+ return self.interface_name_to_service_name_map()[
+ self.primary_interace_name()]
def proxy_enabled_for_service(self, service):
return self.proxy_state_for_service(service)['Enabled'] == 'Yes'
def toggle_proxy(self):
- new_state = not self.proxy_enabled_for_service(self.primary_service_name())
+ new_state = not self.proxy_enabled_for_service(
+ self.primary_service_name())
for service_name in self.connected_service_names():
if self.proxy_enabled_for_service(service_name) and not new_state:
self.disable_proxy_for_service(service_name)
@@ -74,8 +88,11 @@ class Wrapper(object):
service_names = []
for service_id in service_ids:
- scutil_script = 'show Setup:/Network/Service/{}\n'.format(service_id)
- stdout = self.run_command_with_input('/usr/sbin/scutil', scutil_script)
+ scutil_script = 'show Setup:/Network/Service/{}\n'.format(
+ service_id)
+ stdout = self.run_command_with_input(
+ '/usr/sbin/scutil',
+ scutil_script)
service_name, = re.findall(r'UserDefinedName\s*:\s*(.+)', stdout)
service_names.append(service_name)
@@ -102,7 +119,7 @@ class Wrapper(object):
for service_name in connected_service_names:
if not self.proxy_enabled_for_service(service_name):
self.enable_proxy_for_service(service_name)
-
+
yield
for service_name in connected_service_names:
@@ -119,15 +136,23 @@ class Wrapper(object):
def main(cls):
parser = argparse.ArgumentParser(
description='Helper tool for OS X proxy configuration and mitmproxy.',
- epilog='Any additional arguments will be passed on unchanged to mitmproxy.'
- )
- parser.add_argument('-t', '--toggle', action='store_true', help='just toggle the proxy configuration')
+ epilog='Any additional arguments will be passed on unchanged to mitmproxy.')
+ parser.add_argument(
+ '-t',
+ '--toggle',
+ action='store_true',
+ help='just toggle the proxy configuration')
# parser.add_argument('--honeyproxy', action='store_true', help='run honeyproxy instead of mitmproxy')
- parser.add_argument('-p', '--port', type=int, help='override the default port of 8080', default=8080)
+ parser.add_argument(
+ '-p',
+ '--port',
+ type=int,
+ help='override the default port of 8080',
+ default=8080)
args, extra_arguments = parser.parse_known_args()
wrapper = cls(port=args.port, extra_arguments=extra_arguments)
-
+
if args.toggle:
wrapper.toggle_proxy()
# elif args.honeyproxy:
@@ -139,4 +164,3 @@ class Wrapper(object):
if __name__ == '__main__':
Wrapper.ensure_superuser()
Wrapper.main()
-