Projet

Général

Profil

0001-add-timeouts-on-email-DNS-validation-43422.patch

Thomas Noël, 28 mai 2020 16:18

Télécharger (1,91 ko)

Voir les différences:

Subject: [PATCH] add timeouts on email DNS validation (#43422)

 wcs/qommon/form.py | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)
wcs/qommon/form.py
44 44

  
45 45
try:
46 46
    import DNS
47
    DNS.ParseResolvConf()
48 47
except (ImportError, IOError):
49 48
    DNS = None
50 49

  
......
900 899
                except UnicodeError:
901 900
                    self.error = _('invalid address domain')
902 901
                    return
903
                # simply lookup host name; note it will fail if hostname
904
                # doesn't have an A entry
905
                try:
906
                    socket.gethostbyname(domain)
907
                except socket.error:
908
                    # will fail on lack of DNS module or MX lookup failure
902
                if DNS is not None:
903
                    DNS.ParseResolvConf()
904
                    sdomain = force_str(domain)
909 905
                    try:
910
                        l = len(DNS.mxlookup(force_str(domain)))
911
                    except:
912
                        l = 0
913
                    if l == 0:
906
                        if not (DNS.dnslookup(sdomain, 'MX', timeout=4)
907
                                or DNS.dnslookup(sdomain, 'A', timeout=4)
908
                                or DNS.dnslookup(sdomain, 'AAAA', timeout=4)):
909
                            self.error = _('invalid address domain')
910
                    except DNS.DNSError:
914 911
                        self.error = _('invalid address domain')
915
                else:
916
                    # and then, localpart could be tested
917
                    pass
918 912

  
919 913

  
920 914
class ValidationCondition(Condition):
921
-