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)
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)
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)