示例#1
0
    def return_request_pair(self, request):
        self.end_time = datetime.datetime.now()
        log_request(console.printable_data(request.response.full_response),
                    id=self.connection_id,
                    symbol='<m',
                    verbosity_level=3)

        request.time_start = self.start_time
        request.time_end = self.end_time
        if context.in_scope(request):

            if self.save_all:
                yield request.async_deep_save()

            # if we don't copy it, when we delete a macro from the console,
            # we get a crash. We do a shallow copy to keep the macro
            # instances the same.
            to_mangle = copy.copy(self.intercepting_macros).iteritems()
            old_rsp = request.response
            for k, macro in to_mangle:
                if macro.do_rsp:
                    if macro.async_rsp:
                        mangled_rsp = yield macro.async_mangle_response(
                            request)
                    else:
                        mangled_rsp = macro.mangle_response(request)

                    if mangled_rsp is None:
                        request.response = None
                        self.data_defer.callback(request)
                        if self.save_all:
                            yield request.async_deep_save()
                        self.transport.loseConnection()
                        defer.returnValue(None)

                    request.response = mangled_rsp

            if request.response != old_rsp:
                request.response.unmangled = old_rsp

            if self.save_all:
                yield request.async_deep_save()

            # re-check after all the mangling
            context.filter_recheck()

            if request.response:
                log_request(console.printable_data(
                    request.response.full_response),
                            id=self.connection_id,
                            symbol='<',
                            verbosity_level=3)
        else:
            self.log("Response out of scope, passing along unmangled")
        self.data_defer.callback(request)
        defer.returnValue(None)
示例#2
0
 def return_response(self, response):
     self.end_time = datetime.datetime.now()
     log_request(console.printable_data(response.full_response), id=self.connection_id, symbol='<m', verbosity_level=3)
     mangled_reqrsp_pair = yield mangle.mangle_response(response, self.connection_id)
     if mangled_reqrsp_pair:
         log_request(console.printable_data(mangled_reqrsp_pair.response.full_response),
                     id=self.connection_id, symbol='<', verbosity_level=3)
         mangled_reqrsp_pair.time_start = self.start_time
         mangled_reqrsp_pair.time_end = self.end_time
         if context.in_scope(mangled_reqrsp_pair):
             yield mangled_reqrsp_pair.deep_save()
     self.data_defer.callback(mangled_reqrsp_pair)
示例#3
0
    def return_request_pair(self, request):
        self.end_time = datetime.datetime.now()
        log_request(console.printable_data(request.response.full_response), id=self.connection_id, symbol='<m', verbosity_level=3)

        request.time_start = self.start_time
        request.time_end = self.end_time
        if context.in_scope(request):

            if self.save_all:
                yield request.async_deep_save()

            # if we don't copy it, when we delete a macro from the console,
            # we get a crash. We do a shallow copy to keep the macro
            # instances the same.
            to_mangle = copy.copy(self.intercepting_macros).iteritems()
            old_rsp = request.response
            for k, macro in to_mangle:
                if macro.do_rsp:
                    if macro.async_rsp:
                        mangled_rsp = yield macro.async_mangle_response(request)
                    else:
                        mangled_rsp = macro.mangle_response(request)

                    if mangled_rsp is None:
                        request.response = None
                        self.data_defer.callback(request)
                        if self.save_all:
                            yield request.async_deep_save()
                        self.transport.loseConnection()
                        defer.returnValue(None)

                    request.response = mangled_rsp

            if request.response != old_rsp:
                request.response.unmangled = old_rsp

            if self.save_all:
                yield request.async_deep_save()

            # re-check after all the mangling
            context.filter_recheck()

            if request.response:
                log_request(console.printable_data(request.response.full_response),
                            id=self.connection_id, symbol='<', verbosity_level=3)
        else:
            self.log("Response out of scope, passing along unmangled")
        self.data_defer.callback(request)
        defer.returnValue(None)
示例#4
0
    def rawDataReceived(self, *args, **kwargs):
        data = args[0]
        if not self._response_obj.complete:
            if data:
                s = console.printable_data(data)
                dlines = s.split('\n')
                for l in dlines:
                    self.log(l, symbol='<rd', verbosity_level=3)
            self._response_obj.add_data(data)

            if self._response_obj.complete:
                self.handle_response_end()
示例#5
0
    def rawDataReceived(self, *args, **kwargs):
        data = args[0]
        if not self._response_obj.complete:
            if data:
                s = console.printable_data(data)
                dlines = s.split('\n')
                for l in dlines:
                    self.log(l, symbol='<rd', verbosity_level=3)
            self._response_obj.add_data(data)

            if self._response_obj.complete:
                self.handle_response_end()