aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/platform/linux.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy/platform/linux.py')
-rw-r--r--libmproxy/platform/linux.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/libmproxy/platform/linux.py b/libmproxy/platform/linux.py
new file mode 100644
index 00000000..d37f0fe8
--- /dev/null
+++ b/libmproxy/platform/linux.py
@@ -0,0 +1,11 @@
+import socket, struct
+
+# Python socket module does not have this constant
+SO_ORIGINAL_DST = 80
+
+class Resolver:
+ def original_addr(self, csock):
+ odestdata = csock.getsockopt(socket.SOL_IP, SO_ORIGINAL_DST, 16)
+ _, port, a1, a2, a3, a4 = struct.unpack("!HHBBBBxxxxxxxx", odestdata)
+ address = "%d.%d.%d.%d" % (a1, a2, a3, a4)
+ return address, port