Fix for issue #1475

This commit is contained in:
djime
2018-10-04 15:36:52 +02:00
parent c34f3dc2c2
commit de3884276d
3 changed files with 27 additions and 0 deletions
+2
View File
@@ -53,6 +53,7 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm):
def __init__(self, user, *args, **kwargs):
self.oldname = None
if "instance" in kwargs:
self.old_dkim_key_length = kwargs["instance"].dkim_key_length
self.oldname = kwargs["instance"].name
super(DomainFormGeneral, self).__init__(*args, **kwargs)
params = dict(param_tools.get_global_parameters("admin"))
@@ -375,6 +376,7 @@ class DomainForm(TabForms):
"""
if "general" in self.instances:
self.instances["general"].oldname = self.instances["general"].name
self.instances["general"].old_dkim_key_length = self.instances["general"].dkim_key_length
return super(DomainForm, self).is_valid()
def save(self):
+4
View File
@@ -25,6 +25,10 @@ def update_domain_mxs_and_mailboxes(sender, instance, **kwargs):
return
instance.mailbox_set.filter(use_domain_quota=True).update(
quota=instance.default_mailbox_quota)
if instance.old_dkim_key_length != instance.dkim_key_length:
instance.dkim_public_key = ""
instance.dkim_private_key_path = ""
instance.save()
if instance.old_mail_homes is None:
return
qset = (
+21
View File
@@ -432,3 +432,24 @@ class DKIMTestCase(ModoTestCase):
response = self.client.get(url)
self.assertContains(
response, escape(domain.bind_format_dkim_public_key))
def test_dkim_key_length_modification(self):
""" """
self.set_global_parameter("dkim_keys_storage_dir", self.workdir)
values = {
"name": "pouet.com", "quota": 1000, "default_mailbox_quota": 100,
"create_dom_admin": False, "type": "domain", "stepid": "step3",
"enable_dkim": True, "dkim_key_selector": "default"
}
self.ajax_post(reverse("admin:domain_add"), values)
call_command("modo", "manage_dkim_keys")
key_path = os.path.join(self.workdir, "{}.pem".format(values["name"]))
self.assertTrue(os.path.exists(key_path))
dom = Domain.objects.get(name="pouet.com")
values["dkim_key_length"] = 4096
self.ajax_post(reverse("admin:domain_change", args=[dom.pk]), values)
dom.refresh_from_db()
self.assertEqual(dom.dkim_private_key_path, "")
os.unlink(key_path)
call_command("modo", "manage_dkim_keys")
self.assertTrue(os.path.exists(key_path))