Ejemplo n.º 1
0
def decodeWithHash(text):
    """
    Function to decode a text and calculate the MD5 hash.
    
    @param text text to decode (string)
    @return decoded text, encoding and MD5 hash
    """
    hash = str(QCryptographicHash.hash(QByteArray(text), QCryptographicHash.Md5).toHex())
    return decode(text) + (hash, )
Ejemplo n.º 2
0
 def __imageFileName(self, url):
     """
     Private method to generate the image file name for a URL.
     
     @param url URL to generate the file name from (string)
     @return name of the image file (string)
     """
     return os.path.join(
         self.__thumbnailsDirectory,
         str(QCryptographicHash.hash(QByteArray(url.encode("utf-8")),
             QCryptographicHash.Md5).toHex(), encoding="utf-8") + ".png")
Ejemplo n.º 3
0
def decodeWithHash(text):
    """
    Function to decode a text and calculate the MD5 hash.
    
    @param text text to decode (string)
    @return decoded text, encoding and MD5 hash
    """
    hash = str(
        QCryptographicHash.hash(QByteArray(text),
                                QCryptographicHash.Md5).toHex())
    return decode(text) + (hash, )
Ejemplo n.º 4
0
 def __imageFileName(self, url):
     """
     Private method to generate the image file name for a URL.
     
     @param url URL to generate the file name from (string)
     @return name of the image file (string)
     """
     return os.path.join(
         self.__thumbnailsDirectory,
         str(QCryptographicHash.hash(QByteArray(url.encode("utf-8")),
             QCryptographicHash.Md5).toHex(), encoding="utf-8") + ".png")
Ejemplo n.º 5
0
 def rulesFileName(self):
     """
     Public method to get the name of the rules file.
     
     @return name of the rules file (string)
     """
     if self.location().scheme() == "file":
         return self.location().toLocalFile()
     
     if self.__location.isEmpty():
         return ""
     
     sha1 = bytes(QCryptographicHash.hash(
         self.__location, QCryptographicHash.Sha1).toHex()).decode()
     dataDir = os.path.join(
         Utilities.getConfigDir(), "browser", "subscriptions")
     if not os.path.exists(dataDir):
         os.makedirs(dataDir)
     fileName = os.path.join(
         dataDir, "adblock_subscription_{0}".format(sha1))
     return fileName
Ejemplo n.º 6
0
    def rulesFileName(self):
        """
        Public method to get the name of the rules file.
        
        @return name of the rules file (string)
        """
        if self.location().scheme() == "file":
            return self.location().toLocalFile()

        if self.__location.isEmpty():
            return ""

        sha1 = bytes(
            QCryptographicHash.hash(self.__location,
                                    QCryptographicHash.Sha1).toHex()).decode()
        dataDir = os.path.join(Utilities.getConfigDir(), "browser",
                               "subscriptions")
        if not os.path.exists(dataDir):
            os.makedirs(dataDir)
        fileName = os.path.join(dataDir,
                                "adblock_subscription_{0}".format(sha1))
        return fileName
Ejemplo n.º 7
0
# -*- coding: utf-8 -*-
Ejemplo n.º 8
0
def Encrypt(val):
    return str((QCryptographicHash.hash(val.encode("latin-1"), QCryptographicHash.Sha1).toHex()))
Ejemplo n.º 9
0
    def __parseScript(self):
        """
        Private method to parse the given script and populate the data
        structure.
        """
        self.__name = ""
        self.__namespace = "GreaseMonkeyNS"
        self.__description = ""
        self.__version = ""

        self.__include = []
        self.__exclude = []
        self.__require = []

        self.__icon = QIcon()
        self.__iconUrl = QUrl()
        self.__downloadUrl = QUrl()
        self.__updateUrl = QUrl()
        self.__startAt = GreaseMonkeyScript.DocumentEnd

        self.__script = ""
        self.__enabled = True
        self.__valid = False
        self.__noFrames = False

        try:
            f = open(self.__fileName, "r", encoding="utf-8")
            fileData = f.read()
            f.close()
        except (IOError, OSError):
            # silently ignore because it shouldn't happen
            return

        if self.__fileName not in self.__fileWatcher.files():
            self.__fileWatcher.addPath(self.__fileName)

        rx = QRegExp("// ==UserScript==(.*)// ==/UserScript==")
        rx.indexIn(fileData)
        metaDataBlock = rx.cap(1).strip()

        if metaDataBlock == "":
            # invalid script file
            return

        for line in metaDataBlock.splitlines():
            if not line.strip():
                continue

            if not line.startswith("// @"):
                continue

            line = line[3:].replace("\t", " ")
            index = line.find(" ")

            key = line[:index].strip()
            if index > 0:
                value = line[index + 1:].strip()
            else:
                value = ""

            if not key:
                continue

            if key == "@name":
                self.__name = value

            elif key == "@namespace":
                self.__namespace = value

            elif key == "@description":
                self.__description = value

            elif key == "@version":
                self.__version = value

            elif key in ["@include", "@match"]:
                self.__include.append(value)

            elif key in ["@exclude", "@exclude_match"]:
                self.__exclude.append(value)

            elif key == "@require":
                self.__require.append(value)

            elif key == "@run-at":
                if value == "document-end":
                    self.__startAt = GreaseMonkeyScript.DocumentEnd
                elif value == "document-start":
                    self.__startAt = GreaseMonkeyScript.DocumentStart
                elif value == "document-idle":
                    self.__startAt = GreaseMonkeyScript.DocumentIdle

            elif key == "@downloadURL" and self.__downloadUrl.isEmpty():
                self.__downloadUrl = QUrl(value)

            elif key == "@updateURL" and self.__updateUrl.isEmpty():
                self.__updateUrl = QUrl(value)

            elif key == "@icon":
                self.__iconUrl = QUrl(value)

            elif key == "@noframes":
                self.__noFrames = True

        self.__iconUrl = self.__downloadUrl.resolved(self.__iconUrl)

        if not self.__include:
            self.__include.append("*")

        nspace = bytes(
            QCryptographicHash.hash(
                QByteArray(self.fullName().encode("utf-8")),
                QCryptographicHash.Md4).toHex()).decode("ascii")
        valuesScript = values_js.format(nspace)
        self.__script = "(function(){{{0}\n{1}\n{2}\n}})();".format(
            valuesScript, self.__manager.requireScripts(self.__require),
            fileData)
        self.__valid = True

        self.__downloadIcon()
        self.__downloadRequires()