mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-23 11:53:12 +00:00
Fonction de check de l'alias via smtp
This commit is contained in:
parent
6e08d3f415
commit
caedb09d8f
2 changed files with 54 additions and 2 deletions
48
re2o/base.py
Normal file
48
re2o/base.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
# -*- mode: python; coding: utf-8 -*-
|
||||
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
||||
# se veut agnostique au réseau considéré, de manière à être installable en
|
||||
# quelques clics.
|
||||
#
|
||||
# Copyright © 2018 Gabriel Détraz
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Regroupe les fonctions transversales utiles
|
||||
|
||||
Et non corrélées/dépendantes des autres applications
|
||||
"""
|
||||
|
||||
import smtplib
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from re2o.settings import EMAIL_HOST
|
||||
|
||||
|
||||
def smtp_check(local_part):
|
||||
"""Return True if the local_part is already taken
|
||||
False if available"""
|
||||
try:
|
||||
srv = smtplib.SMTP(EMAIL_HOST)
|
||||
srv.putcmd("vrfy", local_part)
|
||||
reply_code = srv.getreply()[0]
|
||||
srv.close()
|
||||
if reply_code in [250, 252]:
|
||||
return True, _("This domain is already taken")
|
||||
except:
|
||||
return True, _("Smtp unreachable")
|
||||
return False, None
|
|
@ -81,6 +81,7 @@ from re2o.settings import LDAP, GID_RANGES, UID_RANGES
|
|||
from re2o.login import hashNT
|
||||
from re2o.field_permissions import FieldPermissionModelMixin
|
||||
from re2o.mixins import AclMixin, RevMixin
|
||||
from re2o.base import smtp_check
|
||||
|
||||
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
||||
from machines.models import Domain, Interface, Machine, regen
|
||||
|
@ -1889,6 +1890,9 @@ class EMailAddress(RevMixin, AclMixin, models.Model):
|
|||
|
||||
def clean(self, *args, **kwargs):
|
||||
self.local_part = self.local_part.lower()
|
||||
if "@" in self.local_part:
|
||||
raise ValidationError(_("The local part must not contain @."))
|
||||
if "@" in self.local_part or "+" in self.local_part:
|
||||
raise ValidationError(_("The local part must not contain @ or +."))
|
||||
result, reason = smtp_check(self.local_part)
|
||||
if result:
|
||||
raise ValidationError(reason)
|
||||
super(EMailAddress, self).clean(*args, **kwargs)
|
||||
|
|
Loading…
Reference in a new issue