Merge pull request #1018 from modoboa/feature/dnscheck_control_per_domain

Control DNS checks per domain.
This commit is contained in:
Antoine Nguyen
2017-02-08 09:45:21 +01:00
committed by GitHub
9 changed files with 49 additions and 27 deletions
+2 -2
View File
@@ -28,7 +28,6 @@ DOMAIN_TYPES = [
class DomainFormGeneral(forms.ModelForm, DynamicForm):
"""A form to create/edit a domain."""
type = forms.ChoiceField(
@@ -53,7 +52,8 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm):
class Meta:
model = Domain
fields = ("name", "type", "quota", "aliases", "enabled")
fields = (
"name", "type", "quota", "aliases", "enabled", "enable_dns_checks")
def __init__(self, *args, **kwargs):
self.oldname = None
@@ -252,7 +252,8 @@ class CheckMXRecords(BaseCommand):
except models.Domain.DoesNotExist:
pass
else:
domains = models.Domain.objects.filter(enabled=True)
domains = models.Domain.objects.filter(
enabled=True, enable_dns_checks=True)
options.pop("domain")
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.12 on 2017-02-06 06:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('admin', '0007_auto_20161104_1915'),
]
operations = [
migrations.AddField(
model_name='domain',
name='enable_dns_checks',
field=models.BooleanField(default=True, help_text='Check to enable DNS checks for this domain', verbose_name='Enable DNS checks'),
),
]
+4
View File
@@ -50,6 +50,10 @@ class Domain(AdminObject):
)
owners = GenericRelation(ObjectAccess)
type = models.CharField(default="domain", max_length=20)
enable_dns_checks = models.BooleanField(
ugettext_lazy("Enable DNS checks"), default=True,
help_text=ugettext_lazy("Check to enable DNS checks for this domain")
)
objects = DomainManager()
@@ -0,0 +1,14 @@
{% load i18n %}
{% if not domain.enable_dns_checks or domain.uses_a_reserved_tld %}
<span class="label label-mini label-default">{% trans "Disabled" context "checks" %}</span>
{% elif domain.awaiting_checks %}
<span class="label label-mini label-info">{% trans "Awaiting checks" %}</span>
{% else %}
{% if enable_mx_checks %}
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
{% endif %}
{% if enable_dnsbl_checks %}
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
{% endif %}
{% endif %}
@@ -24,18 +24,7 @@
{% if enable_mx_checks or enable_dnsbl_checks %}
<div class="row">
<span class="title">{% trans "DNS status" %}</span>
{% if domain.uses_a_reserved_tld %}
<span class="label label-mini label-info">{% trans "Disabled" context "checks" %}</span>
{% elif domain.awaiting_checks %}
<span class="label label-mini label-info">{% trans "Awaiting checks" %}</span>
{% else %}
{% if enable_mx_checks %}
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
{% endif %}
{% if enable_dnsbl_checks %}
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
{% endif %}
{% endif %}
{% include "admin/_domain_dnschecks_status.html" %}
</div>
{% endif %}
<div class="row">
@@ -4,3 +4,4 @@
{% render_field form.quota appended_text=_("MB") %}
{% render_fields_group form "aliases" %}
{% render_field form.enabled %}
{% render_field form.enable_dns_checks %}
@@ -8,18 +8,7 @@
{% if enable_mx_checks or enable_dnsbl_checks %}
<td name="dns">
<small>
{% if domain.uses_a_reserved_tld %}
<span class="label label-mini label-info">{% trans "Disabled" context "checks" %}</span>
{% elif domain.awaiting_checks %}
<span class="label label-mini label-info">{% trans "Awaiting checks" %}</span>
{% else %}
{% if enable_mx_checks %}
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
{% endif %}
{% if enable_dnsbl_checks %}
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
{% endif %}
{% endif %}
{% include "admin/_domain_dnschecks_status.html" %}
</small>
</td>
{% endif %}
+4
View File
@@ -74,6 +74,8 @@ class DNSBLTestCase(ModoTestCase):
factories.DomainFactory(name="pouet.com") # should not exist
cls.domain2 = factories.DomainFactory(
name="test.localhost") # Should not be checked
cls.domain3 = factories.DomainFactory(
name="modoboa.com", enable_dns_checks=False)
models.DNSBLResult.objects.all().delete()
@override_settings(DNSBL_PROVIDERS=["zen.spamhaus.org"])
@@ -83,6 +85,8 @@ class DNSBLTestCase(ModoTestCase):
management.call_command("modo", "check_mx")
self.assertTrue(
models.DNSBLResult.objects.filter(domain=self.domain).exists())
self.assertFalse(
models.DNSBLResult.objects.filter(domain=self.domain3).exists())
response = self.client.get(
reverse("admin:dnsbl_domain_detail", args=[self.domain.pk]))
self.assertEqual(response.status_code, 200)