From 220149e6e07fae730a5f7efa8c3c0c5c4260e47b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 21:25:15 -0700 Subject: [PATCH] email_server: domains: Add validation to form - Based on what is already done in domains.py at the time of setting the configuration. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/forms.py | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 5b48a3d71..854f47685 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -6,10 +6,17 @@ import re from django import forms from django.core.exceptions import ValidationError +from django.core.validators import RegexValidator from django.utils.translation import gettext_lazy as _ from . import aliases as aliases_module +domain_validator = RegexValidator(r'^[A-Za-z0-9-\.]+$', + _('Enter a valid domain')) +destination_validator = RegexValidator( + r'^[ -~]+$', # ASCII chars from 32 to 126 + _('Enter a valid destination')) + class EmailServerForm(forms.Form): domain = forms.CharField(label=_('domain'), max_length=256) @@ -19,10 +26,26 @@ class EmailServerForm(forms.Form): class DomainsForm(forms.Form): - _mailname = forms.CharField(required=True, strip=True) - mydomain = forms.CharField(required=True, strip=True) - myhostname = forms.CharField(required=True, strip=True) - mydestination = forms.CharField(required=True, strip=True) + _mailname = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + mydomain = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + myhostname = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + mydestination = forms.CharField(required=True, strip=True, + validators=[destination_validator]) + + def clean(self): + """Convert values to lower case.""" + data = self.cleaned_data + if '_mailname' in data: + data['_mailname'] = data['_mailname'].lower() + + if 'myhostname' in data: + data['myhostname'] = data['myhostname'].lower() + + if 'mydestination' in data: + data['mydestination'] = data['mydestination'].lower() class AliasCreateForm(forms.Form):