-def process_domain(domain: str, blocker: str, command: str) -> bool:
- logger.debug("domain='%s',blocker='%s',command='%s' - CALLED!", domain, blocker, command)
- domain_helper.raise_on(domain)
- domain_helper.raise_on(blocker)
-
- if not isinstance(command, str):
- raise ValueError(f"Parameter command[]='{type(command)}' is not 'str'")
- elif command == "":
- raise ValueError("Parameter 'command' is empty")
-
- logger.debug("domain='%s' - BEFORE!")
- if domain.find("*") > 0:
- logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker)
- instances.set_has_obfuscation(blocker, True)
-
- # Try to de-obscure it
- row = instances.deobfuscate("*", domain)
-
- logger.debug("row[%s]='%s'", type(row), row)
- if row is None:
- logger.warning("Cannot de-obfuscate domain='%s' - SKIPPED!", domain)
- return False
-
- logger.debug("domain='%s' de-obscured to '%s'", domain, row[0])
- domain = row[0]
- elif domain.find("?") > 0:
- logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker)
- instances.set_has_obfuscation(blocker, True)
-
- # Try to de-obscure it
- row = instances.deobfuscate("?", domain)
-
- logger.debug("row[%s]='%s'", type(row), row)
- if row is None:
- logger.warning("Cannot de-obfuscate domain='%s' - SKIPPED!", domain)
- return False
-
- logger.debug("domain='%s' de-obscured to '%s'", domain, row[0])
- domain = row[0]
- else:
- logger.debug("blocker='%s' has NO obfuscation on their block list", blocker)
- instances.set_has_obfuscation(blocker, False)
-
- logger.debug("domain='%s' - DEOBFUSCATED!", domain)
- if instances.has_pending(blocker):
- logger.debug("Invoking instances.update_data(%s) ...", blocker)
- instances.update_data(blocker)
-
- if not is_domain_wanted(domain):
- logger.debug("domain='%s' is not wanted - SKIPPED!", domain)
- return False
- elif instances.is_recent(domain):
- logger.debug("domain='%s' has been recently checked - SKIPPED!", domain)
- return False
-
- processed = False
- try:
- logger.info("Fetching instances for domain='%s',blocker='%s',command='%s' ...", domain, blocker, command)
- federation.fetch_instances(domain, blocker, None, command)
- processed = True
-
- logger.debug("Invoking cookies.clear(%s) ...", domain)
- cookies.clear(domain)
- except network.exceptions as exception:
- logger.warning("Exception '%s' during fetching instances (fetch_oliphant) from domain='%s'", type(exception), domain)
- instances.set_last_error(domain, exception)
-
- if instances.has_pending(domain):
- logger.debug("domain='%s' has pending data updates")
- instances.update_data(domain)
-
- logger.debug("processed='%s' - EXIT!", processed)
- return processed
-