Edgewall Software

Ticket #7203: Trac-0.11b2-strip-domain.2.patch

File Trac-0.11b2-strip-domain.2.patch, 2.1 KB (added by alon.barlev@…, 8 months ago)

New patch, always strip domain before creating address.

  • trac/notification.py

    diff -urNp Trac-0.11b2.org/trac/notification.py Trac-0.11b2/trac/notification.py
    old new  
    163163    from_email = 'trac+tickets@localhost' 
    164164    subject = '' 
    165165    template_name = None 
    166     nodomaddr_re = re.compile(r'[\w\d_\.\-]+') 
     166    nodomaddr_re = re.compile(r'^[\w\d_\.\-]+$') 
    167167    addrsep_re = re.compile(r'[;\s,]+') 
    168168 
    169169    def __init__(self, env): 
     
    272272                return False 
    273273            return True 
    274274 
     275        def strip_domain(address): 
     276            pos = address.find('@') 
     277            if pos == -1: 
     278                return address 
     279            return address[:pos] 
     280 
    275281        if not is_email(address): 
    276282            if address == 'anonymous': 
    277283                return None 
    278284            if self.email_map.has_key(address): 
    279285                address = self.email_map[address] 
    280             elif NotifyEmail.nodomaddr_re.match(address): 
    281                 if self.config.getbool('notification', 'use_short_addr'): 
    282                     return address 
    283                 domain = self.config.get('notification', 'smtp_default_domain') 
    284                 if domain: 
    285                     address = "%s@%s" % (address, domain) 
    286                 else: 
    287                     self.env.log.info("Email address w/o domain: %s" % address) 
    288                     return None 
     286            else: 
     287                # ignored domain may still exists 
     288                address = strip_domain(address) 
     289                if NotifyEmail.nodomaddr_re.match(address): 
     290                    if self.config.getbool('notification', 'use_short_addr'): 
     291                        return address 
     292                    domain = self.config.get('notification', 'smtp_default_domain') 
     293                    if domain: 
     294                        address = "%s@%s" % (address, domain) 
     295                    else: 
     296                        self.env.log.info("Email address w/o domain: %s" % address) 
     297                        return None 
    289298 
    290299        mo = self.shortaddr_re.search(address) 
    291300        if mo: