Exemple #1
0
    def prepare_request(self):
        """
        Prepares request for submitting
        
        Saves the associated request with a temporary start time, mangles it, then
        saves the mangled version with an update start time.
        """

        sendreq = self.request
        if context.in_scope(sendreq):
            mangle_macros = copy.copy(self.intercepting_macros)
            self.request.time_start = datetime.datetime.utcnow()
            if self.save_all:
                if self.stream_response and not mangle_macros:
                    self.request.async_deep_save()
                else:
                    yield self.request.async_deep_save()

            (sendreq,
             mangled) = yield macros.mangle_request(sendreq, mangle_macros)

            if sendreq and mangled and self.save_all:
                self.start_time = datetime.datetime.utcnow()
                sendreq.time_start = self.start_time
                yield sendreq.async_deep_save()
        else:
            self.log("Request out of scope, passing along unmangled")
        self.request = sendreq
        defer.returnValue(self.request)
Exemple #2
0
    def prepare_request(self):
        """
        Prepares request for submitting
        
        Saves the associated request with a temporary start time, mangles it, then
        saves the mangled version with an update start time.
        """

        sendreq = self.request
        if context.in_scope(sendreq):
            mangle_macros = copy.copy(self.intercepting_macros)
            self.request.time_start = datetime.datetime.utcnow()
            if self.save_all:
                if self.stream_response and not mangle_macros:
                    self.request.async_deep_save()
                else:
                    yield self.request.async_deep_save()

            (sendreq, mangled) = yield macros.mangle_request(sendreq, mangle_macros)

            if sendreq and mangled and self.save_all:
                self.start_time = datetime.datetime.utcnow()
                sendreq.time_start = self.start_time
                yield sendreq.async_deep_save()
        else:
            self.log("Request out of scope, passing along unmangled")
        self.request = sendreq
        defer.returnValue(self.request)
Exemple #3
0
def test_mangle_request_single(httprequest):
    orig_req = httprequest.copy() # in case it gets mangled
    macro = mock_int_macro(modified_req=('GET /modified HTTP/1.1\r\n\r\n'))
    expected_req = Request('GET /modified HTTP/1.1\r\n\r\n')
    (new_req, mangled) = yield macros.mangle_request(orig_req, {'testmacro': macro})
    assert new_req == expected_req
    assert httprequest == orig_req
    assert httprequest.unmangled is None
    assert new_req.unmangled == orig_req
    assert mangled
Exemple #4
0
def test_mangle_request_multiple(httprequest):
    orig_req = httprequest.copy() # in case it gets mangled
    macro = mock_int_macro(modified_req=('GET /cloud HTTP/1.1\r\n\r\n'))
    macro2 = CloudToButtMacro()
    intmacros = OrderedDict()
    intmacros['testmacro'] = macro
    intmacros['testmacro2'] = macro2
    (new_req, mangled) = yield macros.mangle_request(orig_req, intmacros)

    expected_req = Request('GET /butt HTTP/1.1\r\n\r\n')
    assert new_req == expected_req
    assert httprequest == orig_req
    assert httprequest.unmangled is None
    assert new_req.unmangled == orig_req
    assert mangled
Exemple #5
0
    def prepare_request(self):
        """
        Prepares request for submitting
        
        Saves the associated request with a temporary start time, mangles it, then
        saves the mangled version with an update start time. Also updates flags
        and values needed for submitting the request.
        """
        from pappyproxy.pappy import session

        sendreq = self.request
        if context.in_scope(sendreq):
            mangle_macros = copy.copy(self.intercepting_macros)
            self.request.time_start = datetime.datetime.utcnow()
            if self.save_all:
                if self.stream_response and not mangle_macros:
                    self.request.async_deep_save()
                else:
                    yield self.request.async_deep_save()

            (mangreq,
             mangled) = yield macros.mangle_request(sendreq, mangle_macros)
            if mangreq is None:
                self.log("Request dropped. Closing connections.")
                self.request.tags.add('dropped')
                self.request.response = None
                self.dropped_request = True
                defer.returnValue(None)
            else:
                sendreq = mangreq
                if sendreq and mangled and self.save_all:
                    self.start_time = datetime.datetime.utcnow()
                    sendreq.time_start = self.start_time
                    yield sendreq.async_deep_save()

                if session.config.http_proxy:
                    self.use_as_proxy = True
                    if (not self.stream_response) and self.sendback_function:
                        self.data_defer.addCallback(self.sendback_function)
        else:
            self.log("Request out of scope, passing along unmangled")
        self.request = sendreq
        defer.returnValue(self.request)
Exemple #6
0
    def prepare_request(self):
        """
        Prepares request for submitting
        
        Saves the associated request with a temporary start time, mangles it, then
        saves the mangled version with an update start time. Also updates flags
        and values needed for submitting the request.
        """
        from pappyproxy.pappy import session

        sendreq = self.request
        if context.in_scope(sendreq):
            mangle_macros = copy.copy(self.intercepting_macros)
            self.request.time_start = datetime.datetime.utcnow()
            if self.save_all:
                if self.stream_response and not mangle_macros:
                    self.request.async_deep_save()
                else:
                    yield self.request.async_deep_save()

            (mangreq, mangled) = yield macros.mangle_request(sendreq, mangle_macros)
            if mangreq is None:
                self.log("Request dropped. Closing connections.")
                self.request.tags.add('dropped')
                self.request.response = None
                self.dropped_request = True
                defer.returnValue(None)
            else:
                sendreq = mangreq
                if sendreq and mangled and self.save_all:
                    self.start_time = datetime.datetime.utcnow()
                    sendreq.time_start = self.start_time
                    yield sendreq.async_deep_save()

                if session.config.http_proxy:
                    self.use_as_proxy = True
                    if (not self.stream_response) and self.sendback_function:
                        self.data_defer.addCallback(self.sendback_function)
        else:
            self.log("Request out of scope, passing along unmangled")
        self.request = sendreq
        defer.returnValue(self.request)
Exemple #7
0
def test_mangle_request_simple(httprequest):
    orig_req = httprequest.copy() # in case it gets mangled
    (new_req, mangled) = yield macros.mangle_request(orig_req, {})
    assert new_req == orig_req
    assert httprequest == orig_req
    assert not mangled