+
+@lru_cache
+def is_wanted(domain: str) -> bool:
+ logger.debug("domain='%s' - CALLED!", domain)
+
+ if not isinstance(domain, str):
+ raise ValueError(f"Parameter domain[]='{type(domain)}' is not of type 'str'")
+ elif domain == "":
+ raise ValueError("Parameter 'domain' is empty")
+
+ wanted = True
+ if domain.lower() != domain:
+ logger.debug("domain='%s' is not all-lowercase - setting False ...", domain)
+ wanted = False
+ elif not validators.domain(domain.split("/")[0]):
+ logger.debug("domain='%s' is not a valid domain name - setting False ...", domain)
+ wanted = False
+ elif domain.endswith(".arpa"):
+ logger.debug("domain='%s' is a domain for reversed IP addresses - setting False ...", domain)
+ wanted = False
+ elif domain.endswith(".onion"):
+ logger.debug("domain='%s' is a TOR .onion domain - setting False ...", domain)
+ wanted = False
+ elif domain.endswith(".i2p") and not config.get("allow_i2p_domain") == "true":
+ logger.debug("domain='%s' is an I2P domain - setting False ...", domain)
+ wanted = False
+ elif domain.endswith(".tld"):
+ logger.debug("domain='%s' is a fake domain - setting False ...", domain)
+ wanted = False
+ elif blacklist.is_blacklisted(domain):
+ logger.debug("domain='%s' is blacklisted - setting False ...", domain)
+ wanted = False
+ elif domain.find("/profile/") > 0 or domain.find("/users/") > 0 or (instances.is_registered(domain.split("/")[0]) and domain.find("/c/") > 0):
+ logger.debug("domain='%s' is a single user", domain)
+ wanted = False
+ elif domain.find("/tag/") > 0:
+ logger.debug("domain='%s' is a tag", domain)
+ wanted = False
+
+ logger.debug("wanted='%s' - EXIT!", wanted)
+ return wanted