예제 #1
0
	def createRequest(self, op, request, device = None ):
		global block_list
		try:
			path = (request.url().toString())
		except UnicodeEncodeError:
			path = (request.url().path())
			
		lower_path = path.lower()
		block_list = [
		"doubleclick.net" ,"adnxs", r"||youtube-nocookie.com/gen_204?", 
		r"youtube.com###watch-branded-actions", "imagemapurl",
		"b.scorecardresearch.com","rightstuff.com","scarywater.net","popup.js",
		"banner.htm","_tribalfusion","||n4403ad.doubleclick.net^$third-party",
		".googlesyndication.com","graphics.js","fonts.googleapis.com/css",
		"s0.2mdn.net","server.cpmstar.com","||banzai/banner.$subdocument",
		"@@||anime-source.com^$document","/pagead2.","frugal.gif",
		"jriver_banner.png","show_ads.js",
		'##a[href^="http://billing.frugalusenet.com/"]',
		"http://jriver.com/video.html","||animenewsnetwork.com^*.aframe?",
		"||contextweb.com^$third-party",".gutter",".iab",
		'http://www.animenewsnetwork.com/assets/[^"]*.jpg','revcontent'
		]
		block = False
		for l in block_list:
			if l in lower_path:
				block = True
				break
		if block:
			return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QtNetwork.QNetworkRequest(QtCore.QUrl()))
		else:
			return QNetworkAccessManager.createRequest(self, op, request, device)
예제 #2
0
	def createRequest(self, op, request, device = None ):
		global block_list,TMP_DIR
		try:
			urlLnk = (request.url()).toString()
			path = (request.url().toString())
		except UnicodeEncodeError:
			path = (request.url().path())
			
		lower_path = path.lower()
		block_list = ["doubleclick.net" ,"ads",'.jpg','.png','.gif','.css','facebook','.aspx', r"||youtube-nocookie.com/gen_204?", r"youtube.com###watch-branded-actions", "imagemapurl","b.scorecardresearch.com","rightstuff.com","scarywater.net","popup.js","banner.htm","_tribalfusion","||n4403ad.doubleclick.net^$third-party",".googlesyndication.com","graphics.js","fonts.googleapis.com/css","s0.2mdn.net","server.cpmstar.com","||banzai/banner.$subdocument","@@||anime-source.com^$document","/pagead2.","frugal.gif","jriver_banner.png","show_ads.js",'##a[href^="http://billing.frugalusenet.com/"]',"http://jriver.com/video.html","||animenewsnetwork.com^*.aframe?","||contextweb.com^$third-party",".gutter",".iab",'http://www.animenewsnetwork.com/assets/[^"]*.jpg']
		block = False
		for l in block_list:
			if l in lower_path:
				block = True
				break
		if block:
			#print ("Skipping")
			#print (request.url().path())
			
			return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QtNetwork.QNetworkRequest(QtCore.QUrl()))
		else:
			if 'itag=' in urlLnk and 'redirector' not in urlLnk:
				print('*********')
				f = open(os.path.join(TMP_DIR,'lnk.txt'),'w')
				f.write(urlLnk)
				f.close()
				return QNetworkAccessManager.createRequest(self, op, request, device)
			
			else:
				return QNetworkAccessManager.createRequest(self, op, request, device)
예제 #3
0
    def createRequest(self, op, request, device=None):
        """ Reimplemented to enable adblock/url-block """
        if op!=self.GetOperation or request.url().scheme()=='file':
            return QNetworkAccessManager.createRequest(self, op, request, device)
        url = request.url().toString()
        block = False
        # Font blocking capability
        if block_fonts:
            if '.ttf' in url or '.woff' in url:
              block = True
        # AdBlocking Feature
        if enable_adblock:
            for ad in ad_strings:
                if ad in url:
                    block = True
                    break

        if block:
            #print("Blocked: "+url)
            return QNetworkAccessManager.createRequest(self, op, QNetworkRequest(QUrl()), device)
        #if ("mkv" in url):
        #    print(url)
        #    for header in request.rawHeaderList():
        #        print(request.rawHeader(header))

        reply = QNetworkAccessManager.createRequest(self, op, request, device)
        #reply.metaDataChanged.connect(self.gotMetadata)
        return reply
	def createRequest(self, op, request, device = None ):
		global block_list,TMP_DIR
		try:
			urlLnk = (request.url()).toString()
			path = (request.url().toString())
		except UnicodeEncodeError:
			path = (request.url().path())
		
		if '9anime.to' in path and 'episode/info?' in path:
			f = open(os.path.join(TMP_DIR,'lnk.txt'),'w')
			f.write(path)
			f.close()
		lower_path = path.lower()
		#block_list = []
		block_list = ["doubleclick.net" ,"ads",'.gif','.css','facebook','.aspx', r"||youtube-nocookie.com/gen_204?", r"youtube.com###watch-branded-actions", "imagemapurl","b.scorecardresearch.com","rightstuff.com","scarywater.net","popup.js","banner.htm","_tribalfusion","||n4403ad.doubleclick.net^$third-party",".googlesyndication.com","graphics.js","fonts.googleapis.com/css","s0.2mdn.net","server.cpmstar.com","||banzai/banner.$subdocument","@@||anime-source.com^$document","/pagead2.","frugal.gif","jriver_banner.png","show_ads.js",'##a[href^="http://billing.frugalusenet.com/"]',"http://jriver.com/video.html","||animenewsnetwork.com^*.aframe?","||contextweb.com^$third-party",".gutter",".iab",'http://www.animenewsnetwork.com/assets/[^"]*.jpg','revcontent']
		block = False
		for l in block_list:
			if l in lower_path:
				block = True
				break
		if block:
			return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QtNetwork.QNetworkRequest(QtCore.QUrl()))
		else:
			if 'itag=' in urlLnk and 'redirector' not in urlLnk:
				print('*********')
				#f = open(os.path.join(TMP_DIR,'lnk.txt'),'w')
				#f.write(urlLnk)
				#f.close()
				return QNetworkAccessManager.createRequest(self, op, request, device)
			
			else:
				return QNetworkAccessManager.createRequest(self, op, request, device)
예제 #5
0
파일: test.py 프로젝트: blropb/qt-test
 def _create_request(self, operation, request, data):
     print(data.readAll())
     reply = QNetworkAccessManager.createRequest(self.network_manager,
                                                 operation,
                                                 request,
                                                 data)
     return reply
예제 #6
0
    def createRequest(self, operation, request, device):
        path = o = request.url().toString()

        if path.startswith("app://") or path.startswith("lens://"):
            if path == "app:///":
                path = "file://" + self._uri_app_base + "app.html"
                logger.debug("Loading app resource: {0} ({1})".format(o, path))

            elif path.startswith("app://"):
                path = path.replace("app://", "file://" + self._uri_app_base)
                logger.debug("Loading app resource: {0} ({1})".format(o, path))

                # variable substitution
                path = path.replace("$backend", "qt5")

            elif path.startswith("lens://"):
                path = path.replace("lens://", "file://" + self._uri_lens_base)
                logger.debug("Loading lens resource: {0} ({1})".format(o, path))

                # make lens.css backend specific
                path = path.replace("lens.css", "lens-qt5.css")

            request.setUrl(QUrl(QString(path)))

        return QNetworkAccessManager.createRequest(self, operation, request, device)
예제 #7
0
파일: v5.py 프로젝트: w4lker/Antix
    def createRequest(self, operation, request, data):
        url = request.url().toString()
        print url

        if operation == self.PostOperation and data.peek(1024) != None:
            print url
            url = (url, data.peek(1024).data())
            self.setNetworkAccessible(QNetworkAccessManager.NotAccessible)
        self.req_urls.append(url)
        if operation == self.GetOperation:
            if self.is_forbidden(request):
                # deny GET request for banned media type by setting dummy URL
                # XXX abort properly
                request.setUrl(QUrl('forbidden://localhost/'))
            else:
                common.logger.debug(common.to_unicode(request.url().url()))

        #print request.url().toString(), operation
        request.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
                             QNetworkRequest.PreferCache)
        reply = QNetworkAccessManager.createRequest(self, operation, request,
                                                    data)
        #print reply.readAll()
        reply.error.connect(self.catch_error)

        #add Base-Url header, then we can get it from QWebView
        if isinstance(request.originatingObject(), QWebFrame):
            try:
                reply.setRawHeader(
                    QByteArray('Base-Url'),
                    QByteArray('').append(request.originatingObject().page().
                                          mainFrame().baseUrl().toString()))
            except Exception, e:
                common.logger.debug(e)
예제 #8
0
 def createRequest(self, operation, request, data):
     try:
         requestFunc = self._dispatcher[request.url().scheme()]
     except KeyError:
         self.addHeadersToRequest(request)
         return QNetworkAccessManager.createRequest(self, operation, request, data)
     return requestFunc(self, operation, request, data)
예제 #9
0
    def createRequest(self, operation, request, device):
        path = o = request.url().toString()

        if path.startswith('app://') or path.startswith('lens://'):
            if path == 'app:///':
                path = 'file://' + self._uri_app_base + 'app.html'
                logger.debug('Loading app resource: {0} ({1})'.format(o, path))

            elif path.startswith('app://'):
                path = path.replace('app://', 'file://' + self._uri_app_base)
                logger.debug('Loading app resource: {0} ({1})'.format(o, path))

                # variable substitution
                path = path.replace('$backend', 'qt5')

            elif path.startswith('lens://'):
                path = path.replace('lens://', 'file://' + self._uri_lens_base)
                logger.debug('Loading lens resource: {0} ({1})'.format(o, path))

                # make lens.css backend specific
                path = path.replace('lens.css', 'lens-qt5.css')

            request.setUrl(QUrl(QString(path)))

        return QNetworkAccessManager.createRequest(self, operation, request, device)
예제 #10
0
    def createRequest(self, operation, request, device):
        path = o = request.url().toString()

        if path.startswith('app://') or path.startswith('lens://'):
            if path == 'app:///':
                path = 'file://' + self._uri_app_base + 'app.html'
                logger.debug('Loading app resource: {0} ({1})'.format(o, path))

            elif path.startswith('app://'):
                path = path.replace('app://', 'file://' + self._uri_app_base)
                logger.debug('Loading app resource: {0} ({1})'.format(o, path))

                # variable substitution
                path = path.replace('$backend', 'qt5')

            elif path.startswith('lens://'):
                path = path.replace('lens://', 'file://' + self._uri_lens_base)
                logger.debug('Loading lens resource: {0} ({1})'.format(
                    o, path))

                # make lens.css backend specific
                path = path.replace('lens.css', 'lens-qt5.css')

            request.setUrl(QUrl(QString(path)))

        return QNetworkAccessManager.createRequest(self, operation, request,
                                                   device)
예제 #11
0
    def __pass(self, operation, request, data, info=None):
        """ short for "ignore filter, just generate the request" """

        if info is not None and info['notify']:
            show_labeled(info['message'], info['qurl'], color=info['color'])

        return QNetworkAccessManager.createRequest(
            self, operation, request, data)
예제 #12
0
 def createRequest(self, operation, request, data):
     try:
         requestFunc = self._dispatcher[request.url().scheme()]
     except KeyError:
         self.addHeadersToRequest(request)
         return QNetworkAccessManager.createRequest(self, operation,
                                                    request, data)
     return requestFunc(self, operation, request, data)
예제 #13
0
파일: browser.py 프로젝트: blropb/qt-test
 def _create_request(self, operation, request, data):
     # print(data)
     reply = QNetworkAccessManager.createRequest(self.conn,
                                                 operation,
                                                 request,
                                                 data)
     self.conn.new_reply = reply
     self.wv_reply = reply
     return reply
예제 #14
0
 def createRequest(self, operation, request, data):
  print ("mymanager handles ", request.url())
  str1="X-Content-Type-Options"
  str2="nosniff"
  str3="Content-Type"
  str4="text/html;charset=UTF-8"
#  b = bytearray()
  self.request.setRawHeader(str.encode(str1),str.encode(str2))
  self.request.setRawHeader(str.encode(str3),str.encode(str4))
  return QNetworkAccessManager.createRequest( self, operation, request, data )
예제 #15
0
    def createRequest(self, op, request, device = None ):
        global block_list
        try:
            urlLnk = (request.url().toString())
        except UnicodeEncodeError:
            urlLnk = (request.url().path())
        if self.get_link:
            if self.get_link in urlLnk:
                self.netS.emit(urlLnk)
                
        lower_case = urlLnk.lower()
        lst = []
        if self.default_block:
            lst = [
                "doubleclick.net", 'adnxs', r"||youtube-nocookie.com/gen_204?", 
                 r"youtube.com###watch-branded-actions", "imagemapurl", 
                 "b.scorecardresearch.com", "rightstuff.com", "scarywater.net", 
                "popup.js", "banner.htm", "_tribalfusion", 
                "||n4403ad.doubleclick.net^$third-party", 
                ".googlesyndication.com", "graphics.js", "fonts.googleapis.com/css", 
                "s0.2mdn.net", "server.cpmstar.com", "||banzai/banner.$subdocument", 
                "@@||anime-source.com^$document", "/pagead2.", "frugal.gif", 
                "jriver_banner.png", "show_ads.js", 
                '##a[href^="http://billing.frugalusenet.com/"]', 
                "http://jriver.com/video.html", "||animenewsnetwork.com^*.aframe?", 
                "||contextweb.com^$third-party", ".gutter", ".iab", 'revcontent', 
                ".ads", "ads.", ".bebi", "mgid"
            ]
        if self.block_request:
            lst = lst + self.block_request
        block = False
        for l in lst:
            if lower_case.find(l) != -1:
                block = True
                break
        if (self.select_request and self.select_request in urlLnk) or self.print_request:
            print(urlLnk)

        if block:
            return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QtNetwork.QNetworkRequest(QtCore.QUrl()))
        else:
            return QNetworkAccessManager.createRequest(self, op, request, device)
예제 #16
0
    def __block(self, message, info=None):
        """ short for "ignore request; generate default empty request" """

        if info is not None and info['notify']:
            show_labeled(info['message'], info['qurl'],
                         color=info['color'], detail=info['detail'])

        return QNetworkAccessManager.createRequest(
            self,
            QNetworkAccessManager.GetOperation,
            QNetworkRequest(QUrl(message)),
            None)
예제 #17
0
    def createRequest(self, operation, request, data):
        url = str(request.url().toString())
        self.request_urls.append(url)
        print 'requesting:' + url
        if re.search('.*\.css', url):
            self.setNetworkAccessible(QNetworkAccessManager.NotAccessible)
        else:
            self.setNetworkAccessible(QNetworkAccessManager.Accessible)
        self.requestSignal.emit()

        reply = QNetworkAccessManager.createRequest(self, operation, request,
                                                    data)
        reply.readyRead.connect(lambda: self.ready_read(reply))
        reply.finished.connect(lambda: self.ajax_read(reply))
        #self.replys.append(reply)
        return reply
예제 #18
0
    def createRequest(self, operation, request, device):
        path = o = request.url().toString().split('?')[0]

        if path.startswith('app://'):
            if path == 'app:///':
                path = self._uri_app_base + 'app.html'

            else:
                path = path.replace('app://', self._uri_app_base)
                logger.debug('Loading app resource: {0} ({1})'.format(o, path))

                # variable substitution
                path = path.replace('$backend', 'qt5')

            logger.debug('Loading app resource: {0} ({1})'.format(o, path))

        elif path.startswith('lens://'):
            path = path.replace('lens://', self._uri_lens_base)

            # make lens.css backend specific
            path = path.replace('lens.css', 'lens-qt5.css')

            logger.debug('Loading lens resource: {0} ({1})'.format(o, path))

        elif path.startswith('tmp://'):
            path = path.replace('tmp://', self._uri_lens_base)

            logger.debug('Loading tmp resource: {0} ({1})'.format(o, path))

        elif path.startswith('user://'):
            path = path.replace('user://', self._uri_lens_base)

            logger.debug('Loading tmp resource: {0} ({1})'.format(o, path))

        elif path.startswith('file://'):
            path = path.replace('file://', '')

            logger.debug('Loading resource: {0} ({1})'.format(o, path))

        if not os.path.exists(path):
            raise Exception('Resource path not found: {0}'.format(path))

        request.setUrl(QUrl(QString('file://' + path)))
        return QNetworkAccessManager.createRequest(self, operation, request, device)
예제 #19
0
파일: browser.py 프로젝트: blropb/qt-test
 def __init__(self, parent):
     super().__init__(parent)
     self.set_url('http://google.ru')
     conn = QNetworkAccessManager()
     self.conn = conn
     self.r = QNetworkRequest()
     self.r.attribute(QNetworkRequest.CookieSaveControlAttribute, QVariant(True))
     # self.r.setHeader(QNetworkRequest.ContentTypeHeader, "application/x-www-form-urlencoded")
     # self.r.setRawHeader("Referer", "http://www.facebook.com/")
     # self.r.setRawHeader("Host", "www.facebook.com")
     self.cj = QNetworkCookieJar()
     conn.setCookieJar(self.cj)
     conn.createRequest = self._create_request
     self.wv = WebView()
     self.wv.show()
     self.wv.page().setNetworkAccessManager(conn)
     # self.wv.auth()
     self.loop = QEventLoop()
     pass
예제 #20
0
 def createRequest(self, op, request, outgoingData=None):
     """
     Public method to create a request.
     
     @param op the operation to be performed
         (QNetworkAccessManager.Operation)
     @param request reference to the request object (QNetworkRequest)
     @param outgoingData reference to an IODevice containing data to be sent
         (QIODevice)
     @return reference to the created reply object (QNetworkReply)
     """
     if self.primaryManager is not None:
         pageRequest = QNetworkRequest(request)
         if self.__webPage is not None:
             self.__webPage.populateNetworkRequest(pageRequest)
         return self.primaryManager.createRequest(
             op, pageRequest, outgoingData)
     else:
         return QNetworkAccessManager.createRequest(
             self, op, request, outgoingData)
예제 #21
0
 def createRequest(self, op, request, outgoingData=None):
     """
     Public method to create a request.
     
     @param op the operation to be performed
         (QNetworkAccessManager.Operation)
     @param request reference to the request object (QNetworkRequest)
     @param outgoingData reference to an IODevice containing data to be sent
         (QIODevice)
     @return reference to the created reply object (QNetworkReply)
     """
     if self.primaryManager is not None:
         pageRequest = QNetworkRequest(request)
         if self.__webPage is not None:
             self.__webPage.populateNetworkRequest(pageRequest)
         return self.primaryManager.createRequest(op, pageRequest,
                                                  outgoingData)
     else:
         return QNetworkAccessManager.createRequest(self, op, request,
                                                    outgoingData)
예제 #22
0
파일: network.py 프로젝트: ismlsmile/nimbus
 def createRequest(self, op, request, device=None):
     url = request.url()
     ctype = str(request.header(QNetworkRequest.ContentTypeHeader))
     urlString = url.toString()
     lurlString = urlString.lower()
     x = filtering.adblock_filter.match(urlString)
     y = url.authority() in filtering.host_rules if settings.setting_to_bool("content/HostFilterEnabled") and url.authority() != "" else False
     z = (lurlString.endswith(".swf") or "flash" in ctype) and not settings.setting_to_bool("content/FlashEnabled")
     aa = (lurlString.endswith(".gif") or "image/gif" in ctype) and not settings.setting_to_bool("content/GIFsEnabled")
     if x != None or y or z or aa:
         return QNetworkAccessManager.createRequest(self, self.GetOperation, QNetworkRequest(QUrl(random.choice(("http://www.randomkittengenerator.com/images/cats/rotator.php", "http://thecatapi.com/api/images/get?format=src&type=png&size=small")) if settings.setting_to_bool("content/KittensEnabled") else "data:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw==")))
     if urlString in tuple(replacement_table.keys()):
         return QNetworkAccessManager.createRequest(self, op, QNetworkRequest(QUrl(replacement_table[urlString])), device)
     if url.scheme() == "file" and os.path.isdir(os.path.abspath(url.path())):
         try:
             html = directoryView % {"title": urlString, "heading": url.path(), "links": "".join(["<a href=\"%s\">%s</a><br/>" % (QUrl.fromUserInput(os.path.join(urlString, path)).toString(), path,) for path in [".."] + sorted(os.listdir(os.path.abspath(url.path())))])}
         except:
             html = directoryView % {"title": urlString, "heading": url.path(), "links": tr("The contents of this directory could not be loaded.")}
         return NetworkReply(self, url, self.GetOperation, html)
     if url.scheme() == "nimbus-extension":
         request.setUrl(QUrl("http://127.0.0.1:8133/" + stringfunctions.chop(url.toString(QUrl.RemoveScheme), "//")))
         return QNetworkAccessManager.createRequest(self, op, request, device)
     if url.scheme() == "nimbus":
         request.setUrl(QUrl("file://%s/" % (paths.app_folder,) + stringfunctions.chop(url.toString(QUrl.RemoveScheme), "//")))
         return self.createRequest(op, request, device)
     if url.scheme() == "nimbus-settings":
         request.setUrl(QUrl("file://%s/" % (settings.settings_folder,) + stringfunctions.chop(url.toString(QUrl.RemoveScheme), "//")))
         return self.createRequest(op, request, device)
     if url.scheme() == "apt":
         os.system("xterm -e \"sudo apt-get install %s\" &" % (stringfunctions.chop(url.toString(QUrl.RemoveScheme), "//").split("&")[0],))
         return QNetworkAccessManager.createRequest(self, self.GetOperation, QNetworkRequest(QUrl("")))
     if url.scheme() == "mailto":
         QDesktopServices.openUrl(url)
         return QNetworkAccessManager.createRequest(self, self.GetOperation, QNetworkRequest(QUrl("")))
     else:
         return QNetworkAccessManager.createRequest(self, op, request, device)
예제 #23
0
 def createRequest(self, operation, request, data):
     #print("mymanager handles {}".format(request.url()))
     return QNetworkAccessManager.createRequest(self, operation, request,
                                                data)
예제 #24
0
 def _create_request(self, operation, request, data):
     print(data.readAll())
     reply = QNetworkAccessManager.createRequest(self.network_manager,
                                                 operation, request, data)
     return reply
예제 #25
0
 def createRequest(self, op, request, outgoingData=None):
     """
     Public method to create a request.
     
     @param op the operation to be performed
         (QNetworkAccessManager.Operation)
     @param request reference to the request object (QNetworkRequest)
     @param outgoingData reference to an IODevice containing data to be sent
         (QIODevice)
     @return reference to the created reply object (QNetworkReply)
     """
     scheme = request.url().scheme()
     if scheme == "https" and \
             (not SSL_AVAILABLE or not QSslSocket.supportsSsl()):
         from .NetworkProtocolUnknownErrorReply import \
             NetworkProtocolUnknownErrorReply
         return NetworkProtocolUnknownErrorReply(scheme, self)
     
     import Helpviewer.HelpWindow
     
     if op == QNetworkAccessManager.PostOperation and \
             outgoingData is not None:
         outgoingDataByteArray = outgoingData.peek(1024 * 1024)
         Helpviewer.HelpWindow.HelpWindow.passwordManager().post(
             request, outgoingDataByteArray)
     
     reply = None
     if scheme in self.__schemeHandlers:
         reply = self.__schemeHandlers[scheme]\
                     .createRequest(op, request, outgoingData)
     if reply is not None:
         return reply
     
     # give GreaseMonkey the chance to create a request
     reply = Helpviewer.HelpWindow.HelpWindow.greaseMonkeyManager()\
         .createRequest(op, request, outgoingData)
     if reply is not None:
         return reply
     
     req = QNetworkRequest(request)
     if req.rawHeader(b"X-Eric6-UserLoadAction") == QByteArray(b"1"):
         req.setRawHeader(b"X-Eric6-UserLoadAction", QByteArray())
         req.setAttribute(QNetworkRequest.User + 200, "")
     else:
         req.setAttribute(
             QNetworkRequest.User + 200, req.rawHeader(b"Referer"))
     
     if hasattr(QNetworkRequest, 'HttpPipeliningAllowedAttribute'):
         req.setAttribute(
             QNetworkRequest.HttpPipeliningAllowedAttribute, True)
     if not self.__acceptLanguage.isEmpty():
         req.setRawHeader(b"Accept-Language", self.__acceptLanguage)
     
     # AdBlock code
     if op == QNetworkAccessManager.GetOperation:
         if self.__adblockNetwork is None:
             self.__adblockNetwork = \
                 Helpviewer.HelpWindow.HelpWindow.adBlockManager().network()
         reply = self.__adblockNetwork.block(req)
         if reply is not None:
             reply.setParent(self)
             return reply
     
     # set cache policy
     if op == QNetworkAccessManager.GetOperation:
         urlHost = req.url().host()
         for host in Preferences.getHelp("NoCacheHosts"):
             if host in urlHost:
                 req.setAttribute(
                     QNetworkRequest.CacheLoadControlAttribute,
                     QNetworkRequest.AlwaysNetwork)
                 break
         else:
             req.setAttribute(
                 QNetworkRequest.CacheLoadControlAttribute,
                 Preferences.getHelp("CachePolicy"))
     else:
         req.setAttribute(
             QNetworkRequest.CacheLoadControlAttribute,
             QNetworkRequest.AlwaysNetwork)
     
     # Do Not Track feature
     if self.__doNotTrack:
         req.setRawHeader(b"DNT", b"1")
         req.setRawHeader(b"X-Do-Not-Track", b"1")
     
     # Send referer header?
     if not self.__sendReferer and \
        req.url().host() not in Preferences.getHelp("SendRefererWhitelist"):
         req.setRawHeader(b"Referer", b"")
     
     reply = QNetworkAccessManager.createRequest(
         self, op, req, outgoingData)
     self.requestCreated.emit(op, req, reply)
     
     return reply
예제 #26
0
    def createRequest(self, op, request, outgoingData=None):
        """
        Public method to create a request.
        
        @param op the operation to be performed
            (QNetworkAccessManager.Operation)
        @param request reference to the request object (QNetworkRequest)
        @param outgoingData reference to an IODevice containing data to be sent
            (QIODevice)
        @return reference to the created reply object (QNetworkReply)
        """
        scheme = request.url().scheme()
        if scheme == "https" and \
                (not SSL_AVAILABLE or not QSslSocket.supportsSsl()):
            from .NetworkProtocolUnknownErrorReply import \
                NetworkProtocolUnknownErrorReply
            return NetworkProtocolUnknownErrorReply(scheme, self)

        import Helpviewer.HelpWindow

        if op == QNetworkAccessManager.PostOperation and \
                outgoingData is not None:
            outgoingDataByteArray = outgoingData.peek(1024 * 1024)
            Helpviewer.HelpWindow.HelpWindow.passwordManager().post(
                request, outgoingDataByteArray)

        reply = None
        if scheme in self.__schemeHandlers:
            reply = self.__schemeHandlers[scheme]\
                        .createRequest(op, request, outgoingData)
        if reply is not None:
            return reply

        # give GreaseMonkey the chance to create a request
        reply = Helpviewer.HelpWindow.HelpWindow.greaseMonkeyManager()\
            .createRequest(op, request, outgoingData)
        if reply is not None:
            return reply

        req = QNetworkRequest(request)
        if req.rawHeader(b"X-Eric6-UserLoadAction") == QByteArray(b"1"):
            req.setRawHeader(b"X-Eric6-UserLoadAction", QByteArray())
            req.setAttribute(QNetworkRequest.User + 200, "")
        else:
            req.setAttribute(QNetworkRequest.User + 200,
                             req.rawHeader(b"Referer"))

        if hasattr(QNetworkRequest, 'HttpPipeliningAllowedAttribute'):
            req.setAttribute(QNetworkRequest.HttpPipeliningAllowedAttribute,
                             True)
        if not self.__acceptLanguage.isEmpty():
            req.setRawHeader(b"Accept-Language", self.__acceptLanguage)

        # AdBlock code
        if op == QNetworkAccessManager.GetOperation:
            if self.__adblockNetwork is None:
                self.__adblockNetwork = \
                    Helpviewer.HelpWindow.HelpWindow.adBlockManager().network()
            reply = self.__adblockNetwork.block(req)
            if reply is not None:
                reply.setParent(self)
                return reply

        # set cache policy
        if op == QNetworkAccessManager.GetOperation:
            urlHost = req.url().host()
            for host in Preferences.getHelp("NoCacheHosts"):
                if host in urlHost:
                    req.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
                                     QNetworkRequest.AlwaysNetwork)
                    break
            else:
                req.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
                                 Preferences.getHelp("CachePolicy"))
        else:
            req.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
                             QNetworkRequest.AlwaysNetwork)

        # Do Not Track feature
        if self.__doNotTrack:
            req.setRawHeader(b"DNT", b"1")
            req.setRawHeader(b"X-Do-Not-Track", b"1")

        # Send referer header?
        if not self.__sendReferer and \
           req.url().host() not in Preferences.getHelp("SendRefererWhitelist"):
            req.setRawHeader(b"Referer", b"")

        reply = QNetworkAccessManager.createRequest(self, op, req,
                                                    outgoingData)
        self.requestCreated.emit(op, req, reply)

        return reply
예제 #27
0
파일: network.py 프로젝트: ismlsmile/nimbus
 def createRequest(self, op, request, device=None):
     url = request.url()
     ctype = str(request.header(QNetworkRequest.ContentTypeHeader))
     urlString = url.toString()
     lurlString = urlString.lower()
     x = filtering.adblock_filter.match(urlString)
     y = url.authority(
     ) in filtering.host_rules if settings.setting_to_bool(
         "content/HostFilterEnabled") and url.authority() != "" else False
     z = (lurlString.endswith(".swf") or "flash"
          in ctype) and not settings.setting_to_bool("content/FlashEnabled")
     aa = (lurlString.endswith(".gif") or "image/gif"
           in ctype) and not settings.setting_to_bool("content/GIFsEnabled")
     if x != None or y or z or aa:
         return QNetworkAccessManager.createRequest(
             self, self.GetOperation,
             QNetworkRequest(
                 QUrl(
                     random.choice((
                         "http://www.randomkittengenerator.com/images/cats/rotator.php",
                         "http://thecatapi.com/api/images/get?format=src&type=png&size=small"
                     )) if settings.setting_to_bool("content/KittensEnabled"
                                                    ) else
                     "data:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw=="
                 )))
     if urlString in tuple(replacement_table.keys()):
         return QNetworkAccessManager.createRequest(
             self, op, QNetworkRequest(QUrl(replacement_table[urlString])),
             device)
     if url.scheme() == "file" and os.path.isdir(os.path.abspath(
             url.path())):
         try:
             html = directoryView % {
                 "title":
                 urlString,
                 "heading":
                 url.path(),
                 "links":
                 "".join([
                     "<a href=\"%s\">%s</a><br/>" % (
                         QUrl.fromUserInput(os.path.join(urlString,
                                                         path)).toString(),
                         path,
                     ) for path in [".."] +
                     sorted(os.listdir(os.path.abspath(url.path())))
                 ])
             }
         except:
             html = directoryView % {
                 "title":
                 urlString,
                 "heading":
                 url.path(),
                 "links":
                 tr("The contents of this directory could not be loaded.")
             }
         return NetworkReply(self, url, self.GetOperation, html)
     if url.scheme() == "nimbus-extension":
         request.setUrl(
             QUrl("http://127.0.0.1:8133/" + stringfunctions.chop(
                 url.toString(QUrl.RemoveScheme), "//")))
         return QNetworkAccessManager.createRequest(self, op, request,
                                                    device)
     if url.scheme() == "nimbus":
         request.setUrl(
             QUrl("file://%s/" %
                  (paths.app_folder, ) + stringfunctions.chop(
                      url.toString(QUrl.RemoveScheme), "//")))
         return self.createRequest(op, request, device)
     if url.scheme() == "nimbus-settings":
         request.setUrl(
             QUrl("file://%s/" %
                  (settings.settings_folder, ) + stringfunctions.chop(
                      url.toString(QUrl.RemoveScheme), "//")))
         return self.createRequest(op, request, device)
     if url.scheme() == "apt":
         os.system("xterm -e \"sudo apt-get install %s\" &" %
                   (stringfunctions.chop(url.toString(QUrl.RemoveScheme),
                                         "//").split("&")[0], ))
         return QNetworkAccessManager.createRequest(
             self, self.GetOperation, QNetworkRequest(QUrl("")))
     if url.scheme() == "mailto":
         QDesktopServices.openUrl(url)
         return QNetworkAccessManager.createRequest(
             self, self.GetOperation, QNetworkRequest(QUrl("")))
     else:
         return QNetworkAccessManager.createRequest(self, op, request,
                                                    device)