mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Merge pull request #1018 from modoboa/feature/dnscheck_control_per_domain
Control DNS checks per domain.
This commit is contained in:
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user