-def process_domain(domain: str, blocker: str, command: str) -> bool:
- logger.debug(f"domain='{domain}',blocker='{blocker}',command='{command}' - CALLED!")
- 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")
-
- if domain.find("*") > 0:
- logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker)
- instances.set_has_obfucation(blocker, True)
-
- # Try to de-obscure it
- row = instances.deobfucate("*", domain)
-
- logger.debug(f"row[{type(row)}]='{row}'")
- if row is None:
- logger.warning("Cannot de-obfucate domain='%s' - SKIPPED!", domain)
- return False
-
- logger.debug(f"domain='{domain}' de-obscured to '{row[0]}'")
- domain = row[0]
- elif domain.find("?") > 0:
- logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker)
- instances.set_has_obfucation(blocker, True)
-
- # Try to de-obscure it
- row = instances.deobfucate("?", domain)
-
- logger.debug(f"row[{type(row)}]='{row}'")
- if row is None:
- logger.warning("Cannot de-obfucate domain='%s' - SKIPPED!", domain)
- return False
-
- logger.debug(f"domain='{domain}' de-obscured to '{row[0]}'")
- domain = row[0]
- else:
- logger.debug("blocker='%s' has NO obfucation on their block list", blocker)
- instances.set_has_obfucation(blocker, False)
-
- 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(f"domain='{domain}' has been recently checked - SKIPPED!")
- 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)
-
- logger.debug(f"processed='{processed}' - EXIT!")
- return processed
-