diff options
Diffstat (limited to 'libmproxy/proxy/modes')
-rw-r--r-- | libmproxy/proxy/modes/__init__.py | 12 | ||||
-rw-r--r-- | libmproxy/proxy/modes/http_proxy.py | 28 | ||||
-rw-r--r-- | libmproxy/proxy/modes/reverse_proxy.py | 18 | ||||
-rw-r--r-- | libmproxy/proxy/modes/socks_proxy.py | 66 | ||||
-rw-r--r-- | libmproxy/proxy/modes/transparent_proxy.py | 25 |
5 files changed, 0 insertions, 149 deletions
diff --git a/libmproxy/proxy/modes/__init__.py b/libmproxy/proxy/modes/__init__.py deleted file mode 100644 index f014ed98..00000000 --- a/libmproxy/proxy/modes/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from __future__ import (absolute_import, print_function, division) -from .http_proxy import HttpProxy, HttpUpstreamProxy -from .reverse_proxy import ReverseProxy -from .socks_proxy import Socks5Proxy -from .transparent_proxy import TransparentProxy - -__all__ = [ - "HttpProxy", "HttpUpstreamProxy", - "ReverseProxy", - "Socks5Proxy", - "TransparentProxy" -] diff --git a/libmproxy/proxy/modes/http_proxy.py b/libmproxy/proxy/modes/http_proxy.py deleted file mode 100644 index e19062b9..00000000 --- a/libmproxy/proxy/modes/http_proxy.py +++ /dev/null @@ -1,28 +0,0 @@ -from __future__ import (absolute_import, print_function, division) - -from ...protocol import Layer, ServerConnectionMixin - - -class HttpProxy(Layer, ServerConnectionMixin): - - def __call__(self): - layer = self.ctx.next_layer(self) - try: - layer() - finally: - if self.server_conn: - self.disconnect() - - -class HttpUpstreamProxy(Layer, ServerConnectionMixin): - - def __init__(self, ctx, server_address): - super(HttpUpstreamProxy, self).__init__(ctx, server_address=server_address) - - def __call__(self): - layer = self.ctx.next_layer(self) - try: - layer() - finally: - if self.server_conn: - self.disconnect() diff --git a/libmproxy/proxy/modes/reverse_proxy.py b/libmproxy/proxy/modes/reverse_proxy.py deleted file mode 100644 index c8e80a10..00000000 --- a/libmproxy/proxy/modes/reverse_proxy.py +++ /dev/null @@ -1,18 +0,0 @@ -from __future__ import (absolute_import, print_function, division) - -from ...protocol import Layer, ServerConnectionMixin - - -class ReverseProxy(Layer, ServerConnectionMixin): - - def __init__(self, ctx, server_address, server_tls): - super(ReverseProxy, self).__init__(ctx, server_address=server_address) - self.server_tls = server_tls - - def __call__(self): - layer = self.ctx.next_layer(self) - try: - layer() - finally: - if self.server_conn: - self.disconnect() diff --git a/libmproxy/proxy/modes/socks_proxy.py b/libmproxy/proxy/modes/socks_proxy.py deleted file mode 100644 index e2ce44ae..00000000 --- a/libmproxy/proxy/modes/socks_proxy.py +++ /dev/null @@ -1,66 +0,0 @@ -from __future__ import (absolute_import, print_function, division) - -from netlib import socks, tcp -from netlib.exceptions import TcpException - -from ...exceptions import Socks5ProtocolException -from ...protocol import Layer, ServerConnectionMixin - - -class Socks5Proxy(Layer, ServerConnectionMixin): - - def __init__(self, ctx): - super(Socks5Proxy, self).__init__(ctx) - - def __call__(self): - try: - # Parse Client Greeting - client_greet = socks.ClientGreeting.from_file(self.client_conn.rfile, fail_early=True) - client_greet.assert_socks5() - if socks.METHOD.NO_AUTHENTICATION_REQUIRED not in client_greet.methods: - raise socks.SocksError( - socks.METHOD.NO_ACCEPTABLE_METHODS, - "mitmproxy only supports SOCKS without authentication" - ) - - # Send Server Greeting - server_greet = socks.ServerGreeting( - socks.VERSION.SOCKS5, - socks.METHOD.NO_AUTHENTICATION_REQUIRED - ) - server_greet.to_file(self.client_conn.wfile) - self.client_conn.wfile.flush() - - # Parse Connect Request - connect_request = socks.Message.from_file(self.client_conn.rfile) - connect_request.assert_socks5() - if connect_request.msg != socks.CMD.CONNECT: - raise socks.SocksError( - socks.REP.COMMAND_NOT_SUPPORTED, - "mitmproxy only supports SOCKS5 CONNECT." - ) - - # We always connect lazily, but we need to pretend to the client that we connected. - connect_reply = socks.Message( - socks.VERSION.SOCKS5, - socks.REP.SUCCEEDED, - connect_request.atyp, - # dummy value, we don't have an upstream connection yet. - connect_request.addr - ) - connect_reply.to_file(self.client_conn.wfile) - self.client_conn.wfile.flush() - - except (socks.SocksError, TcpException) as e: - raise Socks5ProtocolException("SOCKS5 mode failure: %s" % repr(e)) - - # https://github.com/mitmproxy/mitmproxy/issues/839 - address_bytes = (connect_request.addr.host.encode("idna"), connect_request.addr.port) - self.server_conn.address = tcp.Address(address_bytes, connect_request.addr.use_ipv6) - - layer = self.ctx.next_layer(self) - try: - layer() - finally: - if self.server_conn: - self.disconnect() diff --git a/libmproxy/proxy/modes/transparent_proxy.py b/libmproxy/proxy/modes/transparent_proxy.py deleted file mode 100644 index 3fdda656..00000000 --- a/libmproxy/proxy/modes/transparent_proxy.py +++ /dev/null @@ -1,25 +0,0 @@ -from __future__ import (absolute_import, print_function, division) - -from ... import platform -from ...exceptions import ProtocolException -from ...protocol import Layer, ServerConnectionMixin - - -class TransparentProxy(Layer, ServerConnectionMixin): - - def __init__(self, ctx): - super(TransparentProxy, self).__init__(ctx) - self.resolver = platform.resolver() - - def __call__(self): - try: - self.server_conn.address = self.resolver.original_addr(self.client_conn.connection) - except Exception as e: - raise ProtocolException("Transparent mode failure: %s" % repr(e)) - - layer = self.ctx.next_layer(self) - try: - layer() - finally: - if self.server_conn: - self.disconnect() |