diff options
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/platform/__init__.py | 3 | ||||
-rw-r--r-- | libmproxy/platform/osx.py | 4 | ||||
-rw-r--r-- | libmproxy/platform/pf.py | 8 |
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]) |