aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-07-03 02:24:00 +0200
committerMaximilian Hils <git@maximilianhils.com>2014-07-03 02:24:00 +0200
commitb0c366aa45886c645e06cb3d0498a7cb339b18e7 (patch)
treec5d3c160f1bb0c5996f94cf9c45e16fb3b6065b5
parentdf11595fad287a8ffdecd2ccc18b27478925c5b4 (diff)
parent64c265b71037ae9074bbaef33f3a168987b1090f (diff)
downloadmitmproxy-b0c366aa45886c645e06cb3d0498a7cb339b18e7.tar.gz
mitmproxy-b0c366aa45886c645e06cb3d0498a7cb339b18e7.tar.bz2
mitmproxy-b0c366aa45886c645e06cb3d0498a7cb339b18e7.zip
Merge pull request #300 from zbrdge/freebsd-platform
Freebsd 10 platform
-rw-r--r--libmproxy/platform/__init__.py3
-rw-r--r--libmproxy/platform/osx.py4
-rw-r--r--libmproxy/platform/pf.py8
-rw-r--r--test/data/pf024
-rw-r--r--test/test_platform_pf.py12
5 files changed, 25 insertions, 6 deletions
diff --git a/libmproxy/platform/__init__.py b/libmproxy/platform/__init__.py
index 09197ded..7f570133 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 sys.platform == "freebsd10":
+ 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..dc0f6104 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 sys.platform == "freebsd10":
+ # 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])
diff --git a/test/data/pf02 b/test/data/pf02
new file mode 100644
index 00000000..e4dc18b3
--- /dev/null
+++ b/test/data/pf02
@@ -0,0 +1,4 @@
+No ALTQ support in kernel
+ALTQ related functions disabled
+all tcp 127.0.0.1:8080 (5.5.5.6:80) <- 192.168.1.111:40001 FIN_WAIT_2:FIN_WAIT_2
+all tcp 127.0.0.1:8080 (5.5.5.5:80) <- 192.168.1.111:40000 ESTABLISHED:ESTABLISHED
diff --git a/test/test_platform_pf.py b/test/test_platform_pf.py
index f048fdcc..d617cd87 100644
--- a/test/test_platform_pf.py
+++ b/test/test_platform_pf.py
@@ -1,13 +1,15 @@
-import tutils
+import tutils, sys
from libmproxy.platform import pf
class TestLookup:
def test_simple(self):
- p = tutils.test_data.path("data/pf01")
- d = open(p,"rb").read()
+ if sys.platform == "freebsd10":
+ p = tutils.test_data.path("data/pf02")
+ d = open(p,"rb").read()
+ else:
+ p = tutils.test_data.path("data/pf01")
+ d = open(p,"rb").read()
assert pf.lookup("192.168.1.111", 40000, d) == ("5.5.5.5", 80)
assert not pf.lookup("192.168.1.112", 40000, d)
assert not pf.lookup("192.168.1.111", 40001, d)
-
-