Beispiel #1
0
 def __save_abp_rules(self, rules):
     """
         Save rules to db
         @param rules as bytes
     """
     SqlCursor.add(self)
     result = rules.decode("utf-8")
     count = 0
     for line in result.split('\n'):
         SqlCursor.allow_thread_execution(self)
         if self.__cancellable.is_cancelled():
             SqlCursor.remove(self)
             raise Exception("Cancelled")
         if "-abp-" in line or "$" in line or "!" in line or "[" in line:
             continue
         elif line.startswith("##"):
             self.__save_css_default_rule(line)
         elif "#@#" in line:
             self.__save_css_exception(line)
         elif "##" in line:
             self.__save_css_domain_rule(line)
         elif line.startswith("@@"):
             self.__save_abp_rule(line[2:], True)
         else:
             self.__save_abp_rule(line, False)
         Logger.debug("Add abp filter: %s", line)
         count += 1
         if count == 1000:
             SqlCursor.commit(self)
             # Do not flood sqlite, this allow webkit extension to run
             sleep(0.1)
             count = 0
     SqlCursor.remove(self)
Beispiel #2
0
 def __save_rules(self, rules):
     """
         Save rules to db
         @param rules bytes
     """
     SqlCursor.add(self)
     result = rules.decode('utf-8')
     count = 0
     for line in result.split('\n'):
         SqlCursor.allow_thread_execution(self)
         if self.__cancellable.is_cancelled():
             SqlCursor.remove(self)
             raise Exception("Cancelled")
         if line.startswith('#'):
             continue
         array = line.replace(
             ' ', '\t', 1).replace('\t', '@', 1).split('@')
         if len(array) <= 1:
             continue
         netloc = array[1].replace(
             ' ', '').replace('\r', '').split('#')[0]
         # Update entry if exists, create else
         if netloc != "localhost":
             Logger.debug("Add filter: %s", netloc)
             self.__add_netloc(netloc)
         count += 1
         if count == 1000:
             SqlCursor.commit(self)
             # Do not flood sqlite, this allow webkit extension to run
             sleep(0.1)
             count = 0
     SqlCursor.remove(self)
Beispiel #3
0
 def __save_rules(self, rules, uris):
     """
         Save rules to db
         @param rules as bytes
         @param uris as [str]
     """
     SqlCursor.add(self)
     try:
         result = rules.decode('utf-8')
         j = json.loads(result)
         with SqlCursor(self) as sql:
             count = 0
             for item in j:
                 if self.__cancellable.is_cancelled():
                     raise IOError("Cancelled")
                 uri = item["url"].rstrip("/")
                 try:
                     sql.execute(
                         "INSERT INTO phishing\
                                  (uri, mtime) VALUES (?, ?)",
                         (uri, self.__phishing_mtime))
                 except:
                     sql.execute(
                         "UPDATE phishing set mtime=?\
                                  WHERE uri=?",
                         (self.__phishing_mtime, uri))
                 count += 1
                 if count == 1000:
                     SqlCursor.commit(self)
                     # Do not flood sqlite
                     # this allow webkit extension to run
                     sleep(0.1)
                     count = 0
         # We are the last call to save_rules()?
         # Delete removed entries and commit
         if not uris:
             with SqlCursor(self) as sql:
                 sql.execute(
                     "DELETE FROM phishing\
                              WHERE mtime!=?", (self.__phishing_mtime, ))
                 try:
                     dump(self.__phishing_mtime,
                          open(EOLIE_DATA_PATH + "/phishing.bin", "wb"))
                 except Exception as e:
                     Logger.error("DatabasePhishing::__save_rules(): %s", e)
     except Exception as e:
         Logger.error("DatabasePhishing::__save_rules():%s -> %s", e, rules)
     SqlCursor.remove(self)