aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-06-30 15:42:10 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-06-30 15:42:10 +1200
commit16e87a81acf2f6992a47d54b6f2cad61c8b8ff2b (patch)
tree1f57afd0b226ff83ade97d9d949473a1d773629e /libmproxy
parent38ebc8159008ca6b92c4de62e8228493d9b57673 (diff)
downloadmitmproxy-16e87a81acf2f6992a47d54b6f2cad61c8b8ff2b.tar.gz
mitmproxy-16e87a81acf2f6992a47d54b6f2cad61c8b8ff2b.tar.bz2
mitmproxy-16e87a81acf2f6992a47d54b6f2cad61c8b8ff2b.zip
Stub out a transparent resolver for OSX.
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/platform/__init__.py4
-rw-r--r--libmproxy/platform/osx.py54
2 files changed, 57 insertions, 1 deletions
diff --git a/libmproxy/platform/__init__.py b/libmproxy/platform/__init__.py
index 93423e91..15ac9c1a 100644
--- a/libmproxy/platform/__init__.py
+++ b/libmproxy/platform/__init__.py
@@ -4,4 +4,6 @@ resolver = None
if sys.platform == "linux2":
import linux
resolver = linux.Resolver()
-
+#elif sys.platform == "darwin":
+# import osx
+# resolver = osx.Resolver()
diff --git a/libmproxy/platform/osx.py b/libmproxy/platform/osx.py
new file mode 100644
index 00000000..fa51a2db
--- /dev/null
+++ b/libmproxy/platform/osx.py
@@ -0,0 +1,54 @@
+import socket, struct
+
+# Python socket module does not have this constant
+DIOCNATLOOK = 23
+
+class Resolver:
+ def original_addr(self, csock):
+ """
+ The following sttruct defintions are plucked from the current XNU source, found here:
+
+ http://www.opensource.apple.com/source/xnu/xnu-1699.26.8/bsd/net/pfvar.h
+
+
+ union pf_state_xport {
+ u_int16_t port;
+ u_int16_t call_id;
+ u_int32_t spi;
+ };
+
+ struct pf_addr {
+ union {
+ struct in_addr v4;
+ struct in6_addr v6;
+ u_int8_t addr8[16];
+ u_int16_t addr16[8];
+ u_int32_t addr32[4];
+ } pfa;
+
+ struct pfioc_natlook {
+ struct pf_addr saddr;
+ struct pf_addr daddr;
+ struct pf_addr rsaddr;
+ struct pf_addr rdaddr;
+ #ifndef NO_APPLE_EXTENSIONS
+ union pf_state_xport sxport;
+ union pf_state_xport dxport;
+ union pf_state_xport rsxport;
+ union pf_state_xport rdxport;
+ sa_family_t af;
+ u_int8_t proto;
+ u_int8_t proto_variant;
+ u_int8_t direction;
+ #else
+ u_int16_t sport;
+ u_int16_t dport;
+ u_int16_t rsport;
+ u_int16_t rdport;
+ sa_family_t af;
+ u_int8_t proto;
+ u_int8_t direction;
+ #endif
+ };
+ """
+ pass