mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Misc cleanups in dns diagnoser
This commit is contained in:
parent
85e6ddbeae
commit
c44560b6f7
2 changed files with 26 additions and 13 deletions
|
@ -24,8 +24,8 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
|
|
||||||
main_domain = _get_maindomain()
|
main_domain = _get_maindomain()
|
||||||
|
|
||||||
all_domains = domain_list(exclude_subdomains=True)["domains"]
|
major_domains = domain_list(exclude_subdomains=True)["domains"]
|
||||||
for domain in all_domains:
|
for domain in major_domains:
|
||||||
self.logger_debug("Diagnosing DNS conf for %s" % domain)
|
self.logger_debug("Diagnosing DNS conf for %s" % domain)
|
||||||
|
|
||||||
for report in self.check_domain(
|
for report in self.check_domain(
|
||||||
|
@ -37,7 +37,7 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
# Check if a domain buy by the user will expire soon
|
# Check if a domain buy by the user will expire soon
|
||||||
psl = PublicSuffixList()
|
psl = PublicSuffixList()
|
||||||
domains_from_registrar = [
|
domains_from_registrar = [
|
||||||
psl.get_public_suffix(domain) for domain in all_domains
|
psl.get_public_suffix(domain) for domain in major_domains
|
||||||
]
|
]
|
||||||
domains_from_registrar = [
|
domains_from_registrar = [
|
||||||
domain for domain in domains_from_registrar if "." in domain
|
domain for domain in domains_from_registrar if "." in domain
|
||||||
|
@ -50,15 +50,6 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
|
|
||||||
def check_domain(self, domain, is_main_domain):
|
def check_domain(self, domain, is_main_domain):
|
||||||
|
|
||||||
base_dns_zone = _get_dns_zone_for_domain(domain)
|
|
||||||
basename = domain.replace(base_dns_zone, "").rstrip(".") or "@"
|
|
||||||
|
|
||||||
expected_configuration = _build_dns_conf(
|
|
||||||
domain, include_empty_AAAA_if_no_ipv6=True
|
|
||||||
)
|
|
||||||
|
|
||||||
categories = ["basic", "mail", "xmpp", "extra"]
|
|
||||||
|
|
||||||
if is_special_use_tld(domain):
|
if is_special_use_tld(domain):
|
||||||
categories = []
|
categories = []
|
||||||
yield dict(
|
yield dict(
|
||||||
|
@ -68,6 +59,15 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
summary="diagnosis_dns_specialusedomain",
|
summary="diagnosis_dns_specialusedomain",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
base_dns_zone = _get_dns_zone_for_domain(domain)
|
||||||
|
basename = domain.replace(base_dns_zone, "").rstrip(".") or "@"
|
||||||
|
|
||||||
|
expected_configuration = _build_dns_conf(
|
||||||
|
domain, include_empty_AAAA_if_no_ipv6=True
|
||||||
|
)
|
||||||
|
|
||||||
|
categories = ["basic", "mail", "xmpp", "extra"]
|
||||||
|
|
||||||
for category in categories:
|
for category in categories:
|
||||||
|
|
||||||
records = expected_configuration[category]
|
records = expected_configuration[category]
|
||||||
|
@ -79,7 +79,8 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
id_ = r["type"] + ":" + r["name"]
|
id_ = r["type"] + ":" + r["name"]
|
||||||
fqdn = r["name"] + "." + base_dns_zone if r["name"] != "@" else domain
|
fqdn = r["name"] + "." + base_dns_zone if r["name"] != "@" else domain
|
||||||
|
|
||||||
# Ugly hack to not check mail records for subdomains stuff, otherwise will end up in a shitstorm of errors for people with many subdomains...
|
# Ugly hack to not check mail records for subdomains stuff,
|
||||||
|
# otherwise will end up in a shitstorm of errors for people with many subdomains...
|
||||||
# Should find a cleaner solution in the suggested conf...
|
# Should find a cleaner solution in the suggested conf...
|
||||||
if r["type"] in ["MX", "TXT"] and fqdn not in [
|
if r["type"] in ["MX", "TXT"] and fqdn not in [
|
||||||
domain,
|
domain,
|
||||||
|
@ -126,6 +127,12 @@ class DNSRecordsDiagnoser(Diagnoser):
|
||||||
status = "SUCCESS"
|
status = "SUCCESS"
|
||||||
summary = "diagnosis_dns_good_conf"
|
summary = "diagnosis_dns_good_conf"
|
||||||
|
|
||||||
|
# If status is okay and there's actually no expected records
|
||||||
|
# (e.g. XMPP disabled)
|
||||||
|
# then let's not yield any diagnosis line
|
||||||
|
if not records and "status" == "SUCCESS":
|
||||||
|
continue
|
||||||
|
|
||||||
output = dict(
|
output = dict(
|
||||||
meta={"domain": domain, "category": category},
|
meta={"domain": domain, "category": category},
|
||||||
data=results,
|
data=results,
|
||||||
|
|
|
@ -297,6 +297,12 @@ def _build_dns_conf(base_domain, include_empty_AAAA_if_no_ipv6=False):
|
||||||
|
|
||||||
# Defined by custom hooks ships in apps for example ...
|
# Defined by custom hooks ships in apps for example ...
|
||||||
|
|
||||||
|
# FIXME : this ain't practical for apps that may want to add
|
||||||
|
# custom dns records for a subdomain ... there's no easy way for
|
||||||
|
# an app to compare the base domain is the parent of the subdomain ?
|
||||||
|
# (On the other hand, in sep 2021, it looks like no app is using
|
||||||
|
# this mechanism...)
|
||||||
|
|
||||||
hook_results = hook_callback("custom_dns_rules", args=[base_domain])
|
hook_results = hook_callback("custom_dns_rules", args=[base_domain])
|
||||||
for hook_name, results in hook_results.items():
|
for hook_name, results in hook_results.items():
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Reference in a new issue