aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy/primitives.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy/proxy/primitives.py')
-rw-r--r--libmproxy/proxy/primitives.py42
1 files changed, 37 insertions, 5 deletions
diff --git a/libmproxy/proxy/primitives.py b/libmproxy/proxy/primitives.py
index c0ae424d..b01ddde3 100644
--- a/libmproxy/proxy/primitives.py
+++ b/libmproxy/proxy/primitives.py
@@ -1,6 +1,7 @@
from __future__ import absolute_import
from netlib import socks
+
class ProxyError(Exception):
def __init__(self, code, message, headers=None):
super(ProxyError, self).__init__(message)
@@ -50,6 +51,33 @@ class RegularProxyMode(ProxyMode):
return None
+class SpoofMode(ProxyMode):
+ http_form_in = "relative"
+ http_form_out = "relative"
+
+ def get_upstream_server(self, client_conn):
+ return None
+
+ @property
+ def name(self):
+ return "spoof"
+
+
+class SSLSpoofMode(ProxyMode):
+ http_form_in = "relative"
+ http_form_out = "relative"
+
+ def __init__(self, sslport):
+ self.sslport = sslport
+
+ def get_upstream_server(self, client_conn):
+ return None
+
+ @property
+ def name(self):
+ return "sslspoof"
+
+
class TransparentProxyMode(ProxyMode):
http_form_in = "relative"
http_form_out = "relative"
@@ -61,7 +89,7 @@ class TransparentProxyMode(ProxyMode):
def get_upstream_server(self, client_conn):
try:
dst = self.resolver.original_addr(client_conn.connection)
- except Exception, e:
+ except Exception as e:
raise ProxyError(502, "Transparent mode failure: %s" % str(e))
if dst[1] in self.sslports:
@@ -87,7 +115,9 @@ class Socks5ProxyMode(ProxyMode):
guess = ""
raise socks.SocksError(
socks.REP.GENERAL_SOCKS_SERVER_FAILURE,
- guess + "Invalid SOCKS version. Expected 0x05, got 0x%x" % msg.ver)
+ guess +
+ "Invalid SOCKS version. Expected 0x05, got 0x%x" %
+ msg.ver)
def get_upstream_server(self, client_conn):
try:
@@ -117,13 +147,15 @@ class Socks5ProxyMode(ProxyMode):
"mitmproxy only supports SOCKS5 CONNECT."
)
- # We do not connect here yet, as the clientconnect event has not been handled yet.
+ # We do not connect here yet, as the clientconnect event has not
+ # been handled yet.
connect_reply = socks.Message(
socks.VERSION.SOCKS5,
socks.REP.SUCCEEDED,
socks.ATYP.DOMAINNAME,
- client_conn.address # dummy value, we don't have an upstream connection yet.
+ # dummy value, we don't have an upstream connection yet.
+ client_conn.address
)
connect_reply.to_file(client_conn.wfile)
client_conn.wfile.flush()
@@ -161,4 +193,4 @@ class UpstreamProxyMode(_ConstDestinationProxyMode):
class Log:
def __init__(self, msg, level="info"):
self.msg = msg
- self.level = level \ No newline at end of file
+ self.level = level