Example #1
0
def unconnected_proxyserver(mocker):
    mocker.patch("twisted.test.iosim.FakeTransport.startTLS")
    mocker.patch("pappyproxy.proxy.load_certs_from_dir", new=mock_generate_cert)
    factory = ProxyServerFactory()
    protocol = factory.buildProtocol(('127.0.0.1', 0))
    protocol.makeConnection(FakeTransport(protocol, True))
    return protocol
Example #2
0
def unconnected_proxyserver(mocker):
    mocker.patch("twisted.test.iosim.FakeTransport.startTLS")
    mocker.patch("pappyproxy.proxy.load_certs_from_dir",
                 new=mock_generate_cert)
    factory = ProxyServerFactory()
    protocol = factory.buildProtocol(('127.0.0.1', 0))
    protocol.makeConnection(FakeTransport(protocol, True))
    return protocol
Example #3
0
def proxyserver(mocker):
    mocker.patch("twisted.test.iosim.FakeTransport.startTLS")
    mocker.patch("pappyproxy.proxy.load_certs_from_dir", new=mock_generate_cert)
    factory = ProxyServerFactory()
    protocol = factory.buildProtocol(('127.0.0.1', 0))
    protocol.makeConnection(FakeTransport(protocol, True))
    protocol.lineReceived('CONNECT https://www.AAAA.BBBB:443 HTTP/1.1')
    protocol.lineReceived('')
    protocol.transport.getOutBuffer()
    return protocol
Example #4
0
def proxyserver(mocker):
    mocker.patch("twisted.test.iosim.FakeTransport.startTLS")
    mocker.patch("pappyproxy.proxy.load_certs_from_dir",
                 new=mock_generate_cert)
    factory = ProxyServerFactory()
    protocol = factory.buildProtocol(('127.0.0.1', 0))
    protocol.makeConnection(FakeTransport(protocol, True))
    protocol.lineReceived('CONNECT https://www.AAAA.BBBB:443 HTTP/1.1')
    protocol.lineReceived('')
    protocol.transport.getOutBuffer()
    return protocol
Example #5
0
    def setUp(self, mocker, int_macros={}, socks_config=None, http_config=None, in_scope=True):
        self.mocker = mocker
        self.conn_info = {}

        # Mock config
        self.mock_config = pappyproxy.config.PappyConfig()
        self.mock_config.socks_proxy = socks_config
        self.mock_config.http_proxy = http_config
        self.mock_session = pappyproxy.pappy.PappySession(self.mock_config)
        mocker.patch.object(pappyproxy.pappy, 'session', new=self.mock_session)
        mocker.patch("pappyproxy.proxy.load_certs_from_dir", new=mock_generate_cert)

        # Listening server
        self.server_factory = ProxyServerFactory()
        self.server_factory.save_all = True
        self.server_factory.intercepting_macros = int_macros

        self.server_protocol = self.server_factory.buildProtocol(('127.0.0.1', 0))
        self.server_transport = TLSStringTransport()
        self.server_protocol.makeConnection(self.server_transport)

        # Other mocks
        self.req_save = mocker.patch.object(pappyproxy.http.Request, 'async_deep_save', autospec=True, side_effect=mock_req_async_save)
        self.submit_request = mocker.patch('pappyproxy.http.Request.submit_request',
                                           new=self.gen_mock_submit_request())
        self.get_endpoint = mocker.patch('pappyproxy.proxy.get_endpoint')
        self.in_scope = mocker.patch('pappyproxy.context.in_scope').return_value = in_scope
Example #6
0
    def setUp(self,
              mocker,
              int_macros={},
              socks_config=None,
              http_config=None,
              in_scope=True):
        self.mocker = mocker
        self.conn_info = {}

        # Mock config
        self.mock_config = pappyproxy.config.PappyConfig()
        self.mock_config.socks_proxy = socks_config
        self.mock_config.http_proxy = http_config
        self.mock_session = pappyproxy.pappy.PappySession(self.mock_config)
        mocker.patch.object(pappyproxy.pappy, 'session', new=self.mock_session)
        mocker.patch("pappyproxy.proxy.load_certs_from_dir",
                     new=mock_generate_cert)

        # Listening server
        self.server_factory = ProxyServerFactory()
        self.server_factory.save_all = True
        self.server_factory.intercepting_macros = int_macros

        self.server_protocol = self.server_factory.buildProtocol(
            ('127.0.0.1', 0))
        self.server_transport = TLSStringTransport()
        self.server_protocol.makeConnection(self.server_transport)

        # Other mocks
        self.req_save = mocker.patch.object(pappyproxy.http.Request,
                                            'async_deep_save',
                                            autospec=True,
                                            side_effect=mock_req_async_save)
        self.submit_request = mocker.patch(
            'pappyproxy.http.Request.submit_request',
            new=self.gen_mock_submit_request())
        self.get_endpoint = mocker.patch('pappyproxy.proxy.get_endpoint')
        self.in_scope = mocker.patch(
            'pappyproxy.context.in_scope').return_value = in_scope
Example #7
0
def gen_server_factory(int_macros={}):
    factory = ProxyServerFactory()
    factory.save_all = True
    factory.intercepting_macros = int_macros
    return factory
Example #8
0
class TestProxyConnection(object):
    @property
    def client_protocol(self):
        if 'protocol' not in self.conn_info:
            raise Exception(
                'Connection to server not made. Cannot write data as server.')
        return self.conn_info['protocol']

    @property
    def client_factory(self):
        if 'protocol' not in self.conn_info:
            raise Exception(
                'Connection to server not made. Cannot write data as server.')
        return self.conn_info['factory']

    def setUp(self,
              mocker,
              int_macros={},
              socks_config=None,
              http_config=None,
              in_scope=True):
        self.mocker = mocker
        self.conn_info = {}

        # Mock config
        self.mock_config = pappyproxy.config.PappyConfig()
        self.mock_config.socks_proxy = socks_config
        self.mock_config.http_proxy = http_config
        self.mock_session = pappyproxy.pappy.PappySession(self.mock_config)
        mocker.patch.object(pappyproxy.pappy, 'session', new=self.mock_session)
        mocker.patch("pappyproxy.proxy.load_certs_from_dir",
                     new=mock_generate_cert)

        # Listening server
        self.server_factory = ProxyServerFactory()
        self.server_factory.save_all = True
        self.server_factory.intercepting_macros = int_macros

        self.server_protocol = self.server_factory.buildProtocol(
            ('127.0.0.1', 0))
        self.server_transport = TLSStringTransport()
        self.server_protocol.makeConnection(self.server_transport)

        # Other mocks
        self.req_save = mocker.patch.object(pappyproxy.http.Request,
                                            'async_deep_save',
                                            autospec=True,
                                            side_effect=mock_req_async_save)
        self.submit_request = mocker.patch(
            'pappyproxy.http.Request.submit_request',
            new=self.gen_mock_submit_request())
        self.get_endpoint = mocker.patch('pappyproxy.proxy.get_endpoint')
        self.in_scope = mocker.patch(
            'pappyproxy.context.in_scope').return_value = in_scope

    def gen_mock_submit_request(self):
        orig = Request.submit_request

        def f(request,
              save_request=False,
              intercepting_macros={},
              stream_transport=None):
            return orig(request,
                        save_request=save_request,
                        intercepting_macros=intercepting_macros,
                        stream_transport=stream_transport,
                        _factory_string_transport=True,
                        _conn_info=self.conn_info)

        return f

    def perform_connect_request(self):
        self.write_as_browser(
            'CONNECT https://www.AAAA.BBBB:443 HTTP/1.1\r\n\r\n')
        assert self.read_as_browser(
        ) == 'HTTP/1.1 200 Connection established\r\n\r\n'

    def write_as_browser(self, data):
        self.server_protocol.dataReceived(data)

    def read_as_browser(self):
        s = self.server_protocol.transport.value()
        self.server_protocol.transport.clear()
        return s

    def write_as_server(self, data):
        self.client_protocol.dataReceived(data)

    def read_as_server(self):
        s = self.client_protocol.transport.value()
        self.client_protocol.transport.clear()
        return s
Example #9
0
def gen_server_factory(int_macros={}):
    factory = ProxyServerFactory()
    factory.save_all = True
    factory.intercepting_macros = int_macros
    return factory
Example #10
0
class TestProxyConnection(object):

    @property
    def client_protocol(self):
        if 'protocol' not in self.conn_info:
            raise Exception('Connection to server not made. Cannot write data as server.')
        return self.conn_info['protocol']

    @property
    def client_factory(self):
        if 'protocol' not in self.conn_info:
            raise Exception('Connection to server not made. Cannot write data as server.')
        return self.conn_info['factory']
    
    def setUp(self, mocker, int_macros={}, socks_config=None, http_config=None, in_scope=True):
        self.mocker = mocker
        self.conn_info = {}

        # Mock config
        self.mock_config = pappyproxy.config.PappyConfig()
        self.mock_config.socks_proxy = socks_config
        self.mock_config.http_proxy = http_config
        self.mock_session = pappyproxy.pappy.PappySession(self.mock_config)
        mocker.patch.object(pappyproxy.pappy, 'session', new=self.mock_session)
        mocker.patch("pappyproxy.proxy.load_certs_from_dir", new=mock_generate_cert)

        # Listening server
        self.server_factory = ProxyServerFactory()
        self.server_factory.save_all = True
        self.server_factory.intercepting_macros = int_macros

        self.server_protocol = self.server_factory.buildProtocol(('127.0.0.1', 0))
        self.server_transport = TLSStringTransport()
        self.server_protocol.makeConnection(self.server_transport)

        # Other mocks
        self.req_save = mocker.patch.object(pappyproxy.http.Request, 'async_deep_save', autospec=True, side_effect=mock_req_async_save)
        self.submit_request = mocker.patch('pappyproxy.http.Request.submit_request',
                                           new=self.gen_mock_submit_request())
        self.get_endpoint = mocker.patch('pappyproxy.proxy.get_endpoint')
        self.in_scope = mocker.patch('pappyproxy.context.in_scope').return_value = in_scope

    def gen_mock_submit_request(self):
        orig = Request.submit_request
        def f(request, save_request=False, intercepting_macros={}, stream_transport=None):
            return orig(request, save_request=save_request,
                        intercepting_macros=intercepting_macros,
                        stream_transport=stream_transport,
                        _factory_string_transport=True,
                        _conn_info=self.conn_info)
        return f
    
    def perform_connect_request(self):
        self.write_as_browser('CONNECT https://www.AAAA.BBBB:443 HTTP/1.1\r\n\r\n')
        assert self.read_as_browser() == 'HTTP/1.1 200 Connection established\r\n\r\n'

    def write_as_browser(self, data):
        self.server_protocol.dataReceived(data)

    def read_as_browser(self):
        s = self.server_protocol.transport.value()
        self.server_protocol.transport.clear()
        return s

    def write_as_server(self, data):
        self.client_protocol.dataReceived(data)

    def read_as_server(self):
        s = self.client_protocol.transport.value()
        self.client_protocol.transport.clear()
        return s