mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-27 07:02:26 +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.login import hashNT
|
||||||
from re2o.field_permissions import FieldPermissionModelMixin
|
from re2o.field_permissions import FieldPermissionModelMixin
|
||||||
from re2o.mixins import AclMixin, RevMixin
|
from re2o.mixins import AclMixin, RevMixin
|
||||||
|
from re2o.base import smtp_check
|
||||||
|
|
||||||
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
||||||
from machines.models import Domain, Interface, Machine, regen
|
from machines.models import Domain, Interface, Machine, regen
|
||||||
|
@ -1889,6 +1890,9 @@ class EMailAddress(RevMixin, AclMixin, models.Model):
|
||||||
|
|
||||||
def clean(self, *args, **kwargs):
|
def clean(self, *args, **kwargs):
|
||||||
self.local_part = self.local_part.lower()
|
self.local_part = self.local_part.lower()
|
||||||
if "@" in self.local_part:
|
if "@" in self.local_part or "+" in self.local_part:
|
||||||
raise ValidationError(_("The local part must not contain @."))
|
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)
|
super(EMailAddress, self).clean(*args, **kwargs)
|
||||||
|
|
Loading…
Reference in a new issue