Added visibility rule, better labeling

This commit is contained in:
Spitap
2023-11-08 14:13:29 +01:00
parent c2cc14589d
commit 1fe1a0e0cd
6 changed files with 26 additions and 11 deletions
+3 -1
View File
@@ -181,7 +181,7 @@ class AdminGlobalParametersSerializer(serializers.Serializer):
enable_mx_checks = serializers.BooleanField(default=True)
valid_mxs = serializers.CharField(allow_blank=True)
domains_must_have_authorized_mx = serializers.BooleanField(default=False)
enable_ipv6_checks = serializers.BooleanField(default=True)
enable_ipv6_mx_checks = serializers.BooleanField(default=True)
enable_spf_checks = serializers.BooleanField(default=True)
enable_dkim_checks = serializers.BooleanField(default=True)
enable_dmarc_checks = serializers.BooleanField(default=True)
@@ -275,6 +275,8 @@ class AdminGlobalParametersSerializer(serializers.Serializer):
raise serializers.ValidationError({
"valid_mxs": _("Define at least one authorized network / address")
})
if not data.get("enable_mx_checks"):
data["enable_ipv6_mx_checks"] = False
return data
+9 -5
View File
@@ -50,11 +50,11 @@ class AdminParametersForm(param_forms.AdminParametersForm):
)
)
enable_ipv6_checks = YesNoField(
enable_ipv6_mx_checks = YesNoField(
label=gettext_lazy("Enable IPV6 checks"),
initial=True,
help_text=gettext_lazy(
"Check if every domain has a valid AAAA record"
"Check if MX setup for ipv6 is valid"
)
)
@@ -202,7 +202,8 @@ class AdminParametersForm(param_forms.AdminParametersForm):
# Visibility rules
visibility_rules = {
"valid_mxs": "enable_mx_checks=True",
"domains_must_have_authorized_mx": "enable_mx_checks=True"
"domains_must_have_authorized_mx": "enable_mx_checks=True",
"enable_ipv6_mx_checks": "enable_mx_checks=True"
}
def __init__(self, *args, **kwargs):
@@ -300,6 +301,8 @@ class AdminParametersForm(param_forms.AdminParametersForm):
"valid_mxs",
_("Define at least one authorized network / address")
)
if not cleaned_data.get("enable_mx_checks"):
cleaned_data["enable_ipv6_mx_checks"] = False
return cleaned_data
@@ -330,10 +333,11 @@ GLOBAL_PARAMETERS_STRUCT = collections.OrderedDict([
"does not use one of the defined addresses."
)
}),
("enable_ipv6_checks", {
("enable_ipv6_mx_checks", {
"label": gettext_lazy("Enable IPV6 checks"),
"display": "enable_mx_checks=true",
"help_text": gettext_lazy(
"Check if every domain has a valid IPV6 record"
"Check if MX setup for ipv6 is valid"
)
}),
("enable_spf_checks", {
+1 -1
View File
@@ -227,7 +227,7 @@ def get_domain_mx_list(domain):
mx_domain = dns_answer.exchange.to_unicode(
omit_final_dot=True, idna_codec=IDNA_2008_UTS_46)
rtypes = ["A"]
if param_tools.get_global_parameter("enable_ipv6_checks", app="admin"):
if param_tools.get_global_parameter("enable_ipv6_mx_checks", app="admin"):
rtypes.append("AAAA")
for rtype in rtypes:
ip_answers = get_dns_records(mx_domain, rtype, resolver)
+2 -2
View File
@@ -179,7 +179,7 @@ class MXTestCase(ModoTestCase):
mock_query.side_effect = utils.mock_dns_query_result
mock_ip_address.side_effect = utils.mock_ip_address_result
localconfig = core_models.LocalConfig.objects.first()
localconfig.parameters.set_value("enable_ipv6_checks", True, "admin")
localconfig.parameters.set_value("enable_ipv6_mx_checks", True, "admin")
localconfig.save()
with LogCapture("modoboa.admin") as log:
get_domain_mx_list("test3.com")
@@ -189,7 +189,7 @@ class MXTestCase(ModoTestCase):
% "mx3.example.com")
)
localconfig = core_models.LocalConfig.objects.first()
localconfig.parameters.set_value("enable_ipv6_checks", False, "admin")
localconfig.parameters.set_value("enable_ipv6_mx_checks", False, "admin")
localconfig.save()
with LogCapture("modoboa.admin") as log2:
get_domain_mx_list("test3.com")
+10 -1
View File
@@ -51,7 +51,7 @@ SETTINGS_SAMPLE = {
"core-ldap_admin_groups": "",
"core-ldap_groups_search_base": "",
"admin-enable_mx_checks": "True",
"admin-enable_ipv6_checks": "True",
"admin-enable_ipv6_mx_checks": "True",
"core-ldap_search_base": "",
"admin-valid_mxs": "",
"limits-deflt_user_domains_limit": "0",
@@ -265,6 +265,15 @@ sha512crypt is not one of the available choices."]},
self.assertIn(
"sms_ovh_application_secret", errors["form_errors"])
def test_mx_check_settings_clean(self):
settings = SETTINGS_SAMPLE.copy()
settings["admin-enable_mx_checks"] = False
url = reverse("core:parameters")
response = self.client.post(url, settings, format="json")
self.assertEqual(response.status_code, 200)
self.assertFalse(
param_tools.get_global_parameter("enable_ipv6_mx_checks", "admin")
)
class UserSettings(param_forms.UserParametersForm):
"""Stupid user settings form."""
+1 -1
View File
@@ -45,7 +45,7 @@ def get_dmarc_record(domain):
def _get_simple_record(name):
"""We just want to know if name is declared."""
rtypes = ["A", "CNAME"]
if param_tools.get_global_parameter("enable_IPV6_checks", app="admin"):
if param_tools.get_global_parameter("enable_ipv6_mx_checks", app="admin"):
rtypes.append("AAAA")
for rdtype in rtypes:
records = admin_lib.get_dns_records(name, rdtype)