mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
@@ -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"))
|
||||
@@ -374,7 +375,8 @@ class DomainForm(TabForms):
|
||||
|
||||
"""
|
||||
if "general" in self.instances:
|
||||
self.instances["general"].oldname = self.instances["general"].name
|
||||
instance = self.instances["general"]
|
||||
instance.oldname = instance.name
|
||||
return super(DomainForm, self).is_valid()
|
||||
|
||||
def save(self):
|
||||
|
||||
@@ -87,6 +87,7 @@ class Domain(AdminObject):
|
||||
super(Domain, self).__init__(*args, **kwargs)
|
||||
self.old_mail_homes = None
|
||||
self.oldname = self.name
|
||||
self.old_dkim_key_length = self.dkim_key_length
|
||||
|
||||
@property
|
||||
def domainalias_count(self):
|
||||
@@ -262,6 +263,9 @@ class Domain(AdminObject):
|
||||
self.old_mail_homes = {
|
||||
mb.id: mb.mail_home for mb in self.mailbox_set.all()
|
||||
}
|
||||
if self.old_dkim_key_length != self.dkim_key_length:
|
||||
self.dkim_public_key = ""
|
||||
self.dkim_private_key_path = ""
|
||||
super(Domain, self).save(*args, **kwargs)
|
||||
|
||||
def delete(self, fromuser, keepdir=False):
|
||||
|
||||
@@ -432,3 +432,25 @@ 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))
|
||||
|
||||
Reference in New Issue
Block a user