def setupAll(cls): cls.chain = [] super(ChainProxTest, cls).setupAll() for _ in range(cls.n): config = ProxyConfig(**cls.get_proxy_config()) tmaster = cls.masterclass(config) proxy = ProxyThread(tmaster) proxy.start() cls.chain.insert(0, proxy) # Patch the orginal proxy to upstream mode cls.config = cls.proxy.tmaster.config = cls.proxy.tmaster.server.config = ProxyConfig(**cls.get_proxy_config())
class ChainProxTest(ProxTestBase): """ Chain n instances of mitmproxy in a row - because we can. """ n = 2 chain_config = [ lambda port: ProxyConfig(get_upstream_server=lambda c: (False, False, "127.0.0.1", port), http_form_in="absolute", http_form_out="absolute") ] * n @classmethod def setupAll(cls): super(ChainProxTest, cls).setupAll() cls.chain = [] for i in range(cls.n): config = cls.chain_config[i](cls.proxy.port if i == 0 else cls.chain[-1].port) tmaster = cls.masterclass(config) tmaster.start_app(APP_HOST, APP_PORT, cls.externalapp) cls.chain.append(ProxyThread(tmaster)) cls.chain[-1].start() @classmethod def teardownAll(cls): super(ChainProxTest, cls).teardownAll() for p in cls.chain: p.tmaster.server.shutdown() def setUp(self): super(ChainProxTest, self).setUp() for p in self.chain: p.tmaster.clear_log() p.tmaster.state.clear()
def setup_class(self): self.config = ProxyConfig(**self.get_proxy_config()) tmaster = tservers.TestMaster(self.config) tmaster.start_app(APP_HOST, APP_PORT) self.proxy = tservers.ProxyThread(tmaster) self.proxy.start()
def __init__(self, ip, port, uri_opener, handler_klass=ProxyHandler, ca_certs=CA_CERT_DIR, name='ProxyThread'): """ :param ip: IP address to bind :param port: Port to bind :param uri_opener: The uri_opener that will be used to open the requests that arrive from the browser :param handler_klass: A class that will know how to handle requests from the browser """ Process.__init__(self) self.daemon = True self.name = name # Internal vars self._server = None self._running = False self._uri_opener = uri_opener self._ca_certs = ca_certs # Stats self.total_handled_requests = 0 # User configured parameters try: self._config = ProxyConfig(cadir=self._ca_certs, ssl_version_client='SSLv23', ssl_version_server='SSLv23', host=ip, port=port) except AttributeError as ae: if str(ae) == "'module' object has no attribute '_lib'": # This is a rare issue with the OpenSSL setup that some users # (mostly in mac os) find. Not related with w3af/mitmproxy but # with some broken stuff they have # # https://github.com/mitmproxy/mitmproxy/issues/281 # https://github.com/andresriancho/w3af/issues/10716 # # AttributeError: 'module' object has no attribute '_lib' raise ProxyException(self.INCORRECT_SETUP % ae) else: # Something unexpected, raise raise # Setting these options together with ssl_version_client and # ssl_version_server set to SSLv23 means that the proxy will allow all # types (including insecure) of SSL connections self._config.openssl_options_client = None self._config.openssl_options_server = None # Start the proxy server try: self._server = ProxyServer(self._config) except socket.error, se: raise ProxyException('Socket error while starting proxy: "%s"' % se.strerror)
def setupAll(cls): cls.server = libpathod.test.Daemon(ssl=cls.ssl, ssloptions=cls.ssloptions) cls.server2 = libpathod.test.Daemon(ssl=cls.ssl, ssloptions=cls.ssloptions) cls.config = ProxyConfig(**cls.get_proxy_config()) tmaster = cls.masterclass(cls.config) tmaster.start_app(APP_HOST, APP_PORT) cls.proxy = ProxyThread(tmaster) cls.proxy.start()
def setupAll(cls): cls.server = libpathod.test.Daemon(ssl=cls.ssl, ssloptions=cls.ssloptions) cls.server2 = libpathod.test.Daemon(ssl=cls.ssl, ssloptions=cls.ssloptions) pconf = cls.get_proxy_config() cls.confdir = os.path.join(tempfile.gettempdir(), "mitmproxy") config = ProxyConfig(no_upstream_cert=cls.no_upstream_cert, confdir=cls.confdir, authenticator=cls.authenticator, certforward=cls.certforward, **pconf) tmaster = cls.masterclass(config) tmaster.start_app(APP_HOST, APP_PORT, cls.externalapp) cls.proxy = ProxyThread(tmaster) cls.proxy.start()
def __init__(self, ip, port, uri_opener, handler_klass=ProxyHandler, ca_certs=CA_CERT_DIR, name='ProxyThread'): """ :param ip: IP address to bind :param port: Port to bind :param uri_opener: The uri_opener that will be used to open the requests that arrive from the browser :param handler_klass: A class that will know how to handle requests from the browser """ Process.__init__(self) self.daemon = True self.name = name # Internal vars self._server = None self._running = False self._uri_opener = uri_opener self._ca_certs = ca_certs # Stats self.total_handled_requests = 0 # User configured parameters self._config = ProxyConfig(cadir=self._ca_certs, ssl_version_client='all', ssl_version_server='all', host=ip, port=port) # Start the proxy server try: self._server = ProxyServer(self._config) except socket.error, se: raise ProxyException('Socket error while starting proxy: "%s"' % se.strerror)