aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy/primitives.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-03-10 17:02:09 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-03-10 17:02:09 +0100
commitb59013f6e3d80fa6bbf5640f2652559457f07d0e (patch)
treebba552a4d7f089dc422df2aff2a9095153118311 /libmproxy/proxy/primitives.py
parent982da23e9a219d055c2137f56b885c06006ca098 (diff)
parent9cc10630c8e0b0f249ed852299d3316ba42f128d (diff)
downloadmitmproxy-b59013f6e3d80fa6bbf5640f2652559457f07d0e.tar.gz
mitmproxy-b59013f6e3d80fa6bbf5640f2652559457f07d0e.tar.bz2
mitmproxy-b59013f6e3d80fa6bbf5640f2652559457f07d0e.zip
Merge branch 'absolutely_relative_proxying'
Diffstat (limited to 'libmproxy/proxy/primitives.py')
-rw-r--r--libmproxy/proxy/primitives.py43
1 files changed, 36 insertions, 7 deletions
diff --git a/libmproxy/proxy/primitives.py b/libmproxy/proxy/primitives.py
index 8dd0e16a..e49d9bb4 100644
--- a/libmproxy/proxy/primitives.py
+++ b/libmproxy/proxy/primitives.py
@@ -18,19 +18,48 @@ class ProxyServerError(Exception):
pass
+class UpstreamServerResolver(object):
+ def __call__(self, conn):
+ """
+ Returns the address of the server to connect to.
+ """
+ raise NotImplementedError
+
+
+class ConstUpstreamServerResolver(UpstreamServerResolver):
+ def __init__(self, dst):
+ self.dst = dst
+
+ def __call__(self, conn):
+ return self.dst
+
+
+class TransparentUpstreamServerResolver(UpstreamServerResolver):
+ def __init__(self, resolver, sslports):
+ self.resolver = resolver
+ self.sslports = sslports
+
+ def __call__(self, conn):
+ dst = self.resolver.original_addr(conn)
+ if not dst:
+ raise ProxyError(502, "Transparent mode failure: could not resolve original destination.")
+
+ if dst[1] in self.sslports:
+ ssl = True
+ else:
+ ssl = False
+ return [ssl, ssl] + list(dst)
+
+
class AddressPriority(object):
"""
Enum that signifies the priority of the given address when choosing the destination host.
Higher is better (None < i)
"""
- FORCE = 5
- """forward mode"""
- MANUALLY_CHANGED = 4
+ MANUALLY_CHANGED = 3
"""user changed the target address in the ui"""
- FROM_SETTINGS = 3
- """reverse proxy mode"""
- FROM_CONNECTION = 2
- """derived from transparent resolver"""
+ FROM_SETTINGS = 2
+ """upstream server from arguments (reverse proxy, forward proxy or from transparent resolver)"""
FROM_PROTOCOL = 1
"""derived from protocol (e.g. absolute-form http requests)"""