aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy/proxy')
-rw-r--r--libmproxy/proxy/config.py7
-rw-r--r--libmproxy/proxy/primitives.py8
2 files changed, 14 insertions, 1 deletions
diff --git a/libmproxy/proxy/config.py b/libmproxy/proxy/config.py
index 3f579669..2074d0bf 100644
--- a/libmproxy/proxy/config.py
+++ b/libmproxy/proxy/config.py
@@ -4,7 +4,7 @@ import re
from OpenSSL import SSL
from netlib import http_auth, certutils, tcp
from .. import utils, platform, version
-from .primitives import RegularProxyMode, TransparentProxyMode, UpstreamProxyMode, ReverseProxyMode, Socks5ProxyMode
+from .primitives import RegularProxyMode, HTTPTransparentProxyMode, TransparentProxyMode, UpstreamProxyMode, ReverseProxyMode, Socks5ProxyMode
TRANSPARENT_SSL_PORTS = [443, 8443]
CONF_BASENAME = "mitmproxy"
@@ -70,6 +70,8 @@ class ProxyConfig:
self.mode = ReverseProxyMode(upstream_server)
elif mode == "upstream":
self.mode = UpstreamProxyMode(upstream_server)
+ elif mode == "httptransparent":
+ self.mode = HTTPTransparentProxyMode()
else:
self.mode = RegularProxyMode()
@@ -144,6 +146,9 @@ def process_proxy_options(parser, options):
c += 1
mode = "upstream"
upstream_server = options.upstream_proxy
+ if options.http_transparent_proxy:
+ c += 1
+ mode = "httptransparent"
if c > 1:
return parser.error(
"Transparent, SOCKS5, reverse and upstream proxy mode "
diff --git a/libmproxy/proxy/primitives.py b/libmproxy/proxy/primitives.py
index 9e7dae9a..a9718051 100644
--- a/libmproxy/proxy/primitives.py
+++ b/libmproxy/proxy/primitives.py
@@ -51,6 +51,14 @@ class RegularProxyMode(ProxyMode):
return None
+class HTTPTransparentProxyMode(ProxyMode):
+ http_form_in = "relative"
+ http_form_out = "relative"
+
+ def get_upstream_server(self, client_conn):
+ return None
+
+
class TransparentProxyMode(ProxyMode):
http_form_in = "relative"
http_form_out = "relative"