コード例 #1
0
 def handleResponseEnd(self):
     self._buffer = ''.join(self._buffer)
     if self.replace: #if content replace is needed
         if self.encoding == 'gzip':
             try:
                 buffer1 = StringIO.StringIO(self._buffer)
                 gzipper = gzip.GzipFile(fileobj=buffer1)
                 html = gzipper.read()
             except Exception, what:
                 print self.factory.realhost,what
                 html = self._buffer
         elif self.encoding == 'deflate':
             try:
                 html = zlib.decompress(self._buffer)
             except zlib.error:
                 html = zlib.decompress(self._buffer, -zlib.MAX_WBITS)
         else:
             html = self._buffer
         self._buffer = self.factory.rp.process(self.factory.host,self.ctype,html)
         if self.reencode and ("flash" not in self.ctype):
             newbuffer = StringIO.StringIO()
             gzipper = gzip.GzipFile(fileobj=newbuffer,mode='wb')
             gzipper.write(self._buffer)
             gzipper.close()
             self._buffer = newbuffer.getvalue()
             self.headers_to_cache["Content-Encoding"]="gzip"
             ProxyClient.handleHeader(self,"Content-Encoding","gzip")
         self.headers_to_cache["Content-Length"]=len(self._buffer)
         ProxyClient.handleHeader(self, "Content-Length", len(self._buffer))
         ProxyClient.handleResponsePart(self,self._buffer)
コード例 #2
0
ファイル: compressproxy.py プロジェクト: Eeko/resizer_proxy
 def handleResponseEnd(self):
     if self.image_parser:
         print "imageparsing ", compress_rate
         try:
           image = self.image_parser.close()
         except IOError as (error):
           print "I/O error: ", error
           print self.image_parser
           
         
         try:
             # do the compression
             format = image.format
             newsize = int(image.size[0] * compress_rate) , int(image.size[1] * compress_rate)
             image.thumbnail(newsize) # likely, image sizing like this does not work
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except NameError as (error):
             print "in exception: ", error
             # send Original C-length if just queryed for header
             buffer = " " *(int(self.clength))
         print "Header:  Content-Lengths ", len(buffer)
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         
         # all headers received and processed
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     
     ProxyClient.handleResponseEnd(self)
コード例 #3
0
ファイル: prox2.py プロジェクト: thouis/works-in-progress
 def handleResponsePart(self, buffer):
     if self.replacing is not None:
         pass
     elif self.rewriting is not None:
         self._buf += buffer
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #4
0
 def handleResponsePart(self, buffer):
     url = self.father.uri
     if needModifyPlayerApi(url) or needModifyDetailApi(
             url) or needModifyDownloadApi(url):
         self.buf += buffer
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #5
0
ファイル: proxyclient.py プロジェクト: isotoma/badgerproxy
 def handleResponseEnd(self):
     log.msg("handleResponseEnd")
     if self.rewrite:
         banner2 = banner % dict(
             height = self.config['height'],
             bannerurl = self.config['bannerurl'],
             )
         buffer = self.buffer.replace("</head>", banner2)
         ProxyClient.handleHeader(self, "Content-Length", str(len(buffer)))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
         self.rewrite = False
     ProxyClient.handleResponseEnd(self)
コード例 #6
0
ファイル: prox2.py プロジェクト: thouis/works-in-progress
 def handleResponseEnd(self):
     if self.replacing is not None:
         try:
             buffer = open(self.replacing).read()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     elif self.rewriting:
         buffer = self._buf.replace('"id": "BIRD_RED"', '"id": "BIRD_BLACK"')
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
コード例 #7
0
 def handleResponseEnd(self):
     if self.image_parser:
         image = self.image_parser.close()
         try:
             format = image.format
             image = image.rotate(180)
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
コード例 #8
0
 def handleResponseEnd(self):
     if self.image_parser:
         image = self.image_parser.close()
         try:
             format = image.format
             image = image.rotate(180)
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
コード例 #9
0
ファイル: http.py プロジェクト: KorayAgaya/HeliosBurn
 def _forward_response(self, response):
     content = self.father.response_content
     if not response.drop_connection and not response.reset_connection:
         # fix this... odd that it must exist
         if not self._finished:
             ProxyClient.handleResponsePart(self, content)
             ProxyClient.handleResponseEnd(self)
         log.msg("Response forwarded: " + str(response))
     else:
         if response.drop_connection:
             ProxyClient.handleResponsePart(self, content)
             ProxyClient.handleResponseEnd(self)
             response.transport.loseConnection()
             log.msg("Connection dropped")
         else:
             response.transport.abortConnection()
             log.msg("Connection reset")
コード例 #10
0
 def _forward_response(self, response):
     content = self.father.response_content
     if not response.drop_connection and not response.reset_connection:
         # fix this... odd that it must exist
         if not self._finished:
             ProxyClient.handleResponsePart(self, content)
             ProxyClient.handleResponseEnd(self)
         log.msg("Response forwarded: " + str(response))
     else:
         if response.drop_connection:
             ProxyClient.handleResponsePart(self, content)
             ProxyClient.handleResponseEnd(self)
             response.transport.loseConnection()
             log.msg("Connection dropped")
         else:
             response.transport.abortConnection()
             log.msg("Connection reset")
コード例 #11
0
    def handleResponseEnd(self):
        if self.needsRewrite():
            log.msg("Rewriting " + self.father.uri)

            # We might have increased or decreased the page size. Since we have not written
            # to the client yet, we can still modify the headers.
            self.rewriteResponse()
            self.header_buffer["content-length"] = len(self.buffer)
            for key in self.header_buffer.keys():
                ProxyClient.handleHeader(self, key, self.header_buffer[key])
            ProxyClient.handleEndHeaders(self)
            ProxyClient.handleResponsePart(self, self.buffer) 
            
            self.buffer = ""
            self.header_buffer = {}
        
        ProxyClient.handleResponseEnd(self)
コード例 #12
0
 def handleResponseEnd(self):
     url = self.father.uri
     if self.gziped == True:
         temp = StringIO.StringIO(self.buf)
         s = gzip.GzipFile(fileobj=temp)
         content = s.read()
     else:
         content = self.buf
     if needModifyDetailApi(url):
         content = modifyDetailApi(content)
     elif needModifyPlayerApi(url):
         content = modifyPlayerApi(content)
     elif needModifyDownloadApi(url):
         content = modifyDownloadApi(content)
     if self.buf != "":
         if self.gziped == True:
             ProxyClient.handleResponsePart(self, compress(content))
         else:
             ProxyClient.handleResponsePart(self, content)
     ProxyClient.handleResponseEnd(self)
コード例 #13
0
 def handleResponseEnd(self):
     url = self.father.uri
     if self.gziped == True:
         temp = StringIO.StringIO(self.buf)
         s = gzip.GzipFile(fileobj=temp)
         content = s.read()
     else:
         content = self.buf
     if needModifyDetailApi(url):
         content = modifyDetailApi(content)
     elif needModifyPlayerApi(url):
         content = modifyPlayerApi(content)
     elif needModifyDownloadApi(url):
         content = modifyDownloadApi(content)
     if self.buf != "":
         if self.gziped == True:
             ProxyClient.handleResponsePart(self, compress(content))
         else:
             ProxyClient.handleResponsePart(self, content)
     ProxyClient.handleResponseEnd(self)
コード例 #14
0
    def handleResponseEnd(self):
        if self._mybuffer is not None:
            b = ''.join(self._mybuffer)

        self.logDebug(
            "handleResponseEnd",
            "handleResponseEnd resplength: %d b_length: %d" %
            (self.resplength, len(b)))
        if self.ctype == 'application/vnd.ms-sync.wbxml' and self.father.args.has_key(
                'Cmd') and len(b) > 0:
            self.logDebug("handleResponseEnd",
                          "Found Content-Type: %s" % self.ctype)
            self.logDebug(
                "handleResponseEnd",
                "Processing command: %s" % self.father.args['Cmd'][0])
            cmd = self.father.args['Cmd'][0]
            #xml = wbxml.wbxml_to_xml(b)

            if cmd in self.commands:
                self.commands[cmd] = self.commands[cmd] + 1
            else:
                self.commands[cmd] = 1

            if self.encoding == 'gzip':
                self.logDebug("handleResponseEnd",
                              "It seems the response is gziped... unzipping.")
                #b = gunzip_text(b)
                content = zlib.decompress(b, 16 + zlib.MAX_WBITS)
            else:
                content = b
            dump_file_prefix = self.uuid + "." + cmd + "." + str(
                self.commands[cmd])
            FileDumper.dumpFile("response", dump_file_prefix, "wbxml", b)

            xml = pnqwbxml2xml(b)
            #xml = wbxml.wbxml_to_xml(b)
            FileDumper.dumpFile("response", dump_file_prefix, "xml", xml)

            filter = ActiveSyncResponseFilter(self.uuid)
            filter.filterCommand(cmd, self.father.getAllHeaders(),
                                 self.headers_to_cache, xml)

        if len(b) > 0:
            for buff in self._mybuffer:
                ProxyClient.handleResponsePart(self, buff)
            ProxyClient.handleResponsePart(self, "")
        else:
            ProxyClient.handleResponsePart(self, "")
        #ProxyClient.handleResponsePart(self,b)
        self.logDebug(
            "handleResponseEnd",
            "resplength: %d b_length: %d" % (self.resplength, len(b)))
        self.logDebug("handleResponseEnd", "Finished")
        self.__buffer = None
        #ProxyClient.handleResponseEnd()
        #self.handleResponseEnd(self)
        self.logDebug("handleResponseEnd", "NOT_DONE_YET")
        return NOT_DONE_YET
コード例 #15
0
    def handleResponseEnd(self):
        if self._mybuffer is not None:
            b = ''.join(self._mybuffer)

        print("uuid: %s handleResponseEnd resplength: %d b_length: %d" %
              (self.uuid, self.resplength, len(b)))
        if self.ctype == 'application/vnd.ms-sync.wbxml' and self.father.args.has_key(
                'Cmd') and len(b) > 0:
            print "Found Content-Type: %s" % self.ctype
            print "Processing command: %s" % self.father.args['Cmd'][0]
            cmd = self.father.args['Cmd'][0]
            #xml = wbxml.wbxml_to_xml(b)

            if cmd in self.commands:
                self.commands[cmd] = self.commands[cmd] + 1
            else:
                self.commands[cmd] = 1
            f = open("oper/" + cmd + "." + str(self.commands[cmd]) + '.wbxml',
                     "w")
            f.write(b)
            f.close()

            xml = pnqwbxml2xml(b)

            f = open("oper/" + cmd + "." + str(self.commands[cmd]) + '.xml',
                     "w")
            f.write(xml)
            f.close()

            doc = xmltodict.parse(xml)
            f = open("oper/" + cmd + "." + str(self.commands[cmd]) + '.dict',
                     "w")
            pprint(doc, f)
            f.close()

        if len(b) > 0:
            for buff in self._mybuffer:
                ProxyClient.handleResponsePart(self, buff)
            ProxyClient.handleResponsePart(self, "")
        else:
            ProxyClient.handleResponsePart(self, b)
        #ProxyClient.handleResponsePart(self,b)
        print("uuid: %s handleResponseEnd resplength: %d b_length: %d" %
              (self.uuid, self.resplength, len(b)))
        print("uuid: %s handleResponseEndhandleResponseEnd: Finished" %
              (self.uuid))
        self.__buffer = None
        #ProxyClient.handleResponseEnd()
        #self.handleResponseEnd(self)
        return NOT_DONE_YET
コード例 #16
0
 def handleResponsePart(self, buffer):
     url = self.father.uri
     if needModifyPlayerApi(url) or needModifyDetailApi(url) or needModifyDownloadApi(url):
         self.buf += buffer
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #17
0
 def handleResponsePart(self, buffer):
     if self.image_parser:
         self.image_parser.feed(buffer)
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #18
0
ファイル: proxyclient.py プロジェクト: isotoma/badgerproxy
 def handleResponsePart(self, buffer):
     if self.rewrite:
         self.buffer += buffer
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #19
0
 def handleResponsePart(self, bufferData):
     TwistedProxyClient.handleResponsePart(self, bufferData)
     if self.isCached:
         self.responseContent.write(bufferData)
コード例 #20
0
 def handleResponsePart(self, buffer):
     #self._buffer += buffer
     self._buffer.append(buffer)
     if not self.replace:
         ProxyClient.handleResponsePart(self,buffer)
コード例 #21
0
 def handleResponsePart(self, buffer):
     if self.image_parser:
         self.image_parser.feed(buffer)
     else:
         ProxyClient.handleResponsePart(self, buffer)
コード例 #22
0
 def handleResponsePart(self, buffer):
     
     if self.needsRewrite():
         self.buffer = self.buffer + buffer
     else:
         ProxyClient.handleResponsePart(self, buffer)