locking.acquire()
# Init variables
- deleted = 0
+ deleted = []
database.cursor.execute("SELECT pattern FROM obfuscation ORDER BY pattern ASC")
rows = database.cursor.fetchall()
logger.info("Checking %d obfuscations ...", len(rows))
for row in rows:
- logger.debug("row[pattern]='%s'", row["pattern"])
+ logger.debug("row[pattern]='%s' - BEFORE!", row["pattern"])
pattern = row["pattern"].replace("*", "_").replace("?", "_")
+ logger.debug("pattern='%s' - AFTER!", pattern)
database.cursor.execute("SELECT domain FROM instances WHERE domain LIKE '" + pattern + "' LIMIT 1")
- check = database.cursor.fetchone()
+ instance = database.cursor.fetchone()
- logger.debug("check[]='%s'", type(check))
- if check is not None:
- logger.info("Deleting row[pattern]='%s', solved to check[domain]='%s' ...", row["pattern"], check["domain"])
- database.cursor.execute("DELETE FROM instances WHERE domain=? LIMIT 1", [row["pattern"]])
- deleted = deleted + 1
+ logger.debug("instance[]='%s'", type(instance))
+ if instance is not None:
+ logger.info("Deleting row[pattern]='%s', solved to instance[domain]='%s' ...", row["pattern"], instance["domain"])
+ deleted.append(row["pattern"])
- logger.info("Deleted %d patterns ...", deleted)
+ logger.debug("deleted()=%d", len(deleted))
+ if len(deleted) > 0:
+ logger.info("Deleting %d pattern(s) ...", len(deleted))
+ delete_sql = ", ".join([f"\'{pattern}\'" for pattern in deleted])
- logger.debug("Invoking commit() ...")
- database.connection.commit()
+ logger.debug("delete_sql='%s'", delete_sql)
+ database.cursor.execute("DELETE FROM obfuscation WHERE pattern IN (%s)" % delete_sql)
- logger.debug("Vaccum cleaning database ...")
- database.cursor.execute("VACUUM")
+ logger.debug("Invoking commit() ...")
+ database.connection.commit()
+
+ logger.info("Vaccum cleaning database ...")
+ database.cursor.execute("VACUUM")
+ else:
+ logger.info("No pattern could be found as solved domain.")
logger.debug("Success! - EXIT!")
return 0