mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Added visibility rule, better labeling
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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", {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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."""
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user