aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZack B <zbrdge@gmail.com>2014-07-01 14:37:52 -0700
committerZack B <zbrdge@gmail.com>2014-07-01 14:37:52 -0700
commit2704963e6134d63304dfca5cf5893017ffd739e7 (patch)
tree76d6bbc5538980050e59144c77c15af4e2f02cd6
parentc039e4a2e322ee4e0a173f164be598dc630d3579 (diff)
downloadmitmproxy-2704963e6134d63304dfca5cf5893017ffd739e7.tar.gz
mitmproxy-2704963e6134d63304dfca5cf5893017ffd739e7.tar.bz2
mitmproxy-2704963e6134d63304dfca5cf5893017ffd739e7.zip
add resolver for FreeBSD using pfctl
-rw-r--r--libmproxy/platform/__init__.py3
-rw-r--r--libmproxy/platform/osx.py4
-rw-r--r--libmproxy/platform/pf.py8
3 files changed, 14 insertions, 1 deletions
diff --git a/libmproxy/platform/__init__.py b/libmproxy/platform/__init__.py
index 09197ded..79f2f5df 100644
--- a/libmproxy/platform/__init__.py
+++ b/libmproxy/platform/__init__.py
@@ -7,3 +7,6 @@ if sys.platform == "linux2":
elif sys.platform == "darwin":
import osx
resolver = osx.Resolver
+elif "freebsd" in sys.platform:
+ import osx
+ resolver = osx.Resolver
diff --git a/libmproxy/platform/osx.py b/libmproxy/platform/osx.py
index dda5d9af..3a91ac2b 100644
--- a/libmproxy/platform/osx.py
+++ b/libmproxy/platform/osx.py
@@ -7,6 +7,10 @@ import pf
structures returned, and compiling userspace tools to test and work with
this turns out to be a pain in the ass. Parsing pfctl output is short,
simple, and works.
+
+ Note: Also Tested with FreeBSD 10 pkgng Python 2.7.x.
+ Should work almost exactly as on Mac OS X and except with some changes to
+ the output processing of pfctl (see pf.py).
"""
class Resolver:
diff --git a/libmproxy/platform/pf.py b/libmproxy/platform/pf.py
index 062d3311..32529e59 100644
--- a/libmproxy/platform/pf.py
+++ b/libmproxy/platform/pf.py
@@ -1,3 +1,4 @@
+import sys
def lookup(address, port, s):
"""
@@ -11,6 +12,11 @@ def lookup(address, port, s):
if "ESTABLISHED:ESTABLISHED" in i and spec in i:
s = i.split()
if len(s) > 4:
- s = s[4].split(":")
+ if "freebsd" in sys.platform:
+ # strip parentheses for FreeBSD pfctl
+ s = s[3][1:-1].split(":")
+ else:
+ s = s[4].split(":")
+
if len(s) == 2:
return s[0], int(s[1])