def find_user_by_hostmask(self, hostmask): re_maskpieces = re.compile("([^!]*)!(.*)") mpmat = re_maskpieces.match(hostmask) name = mpmat.group(1) addr = mpmat.group(2) if name != "*": pnm = self.find_user(name) if pnm: return pnm else: name = name.replace(".", "\\.") name = name.replace("*", "\\S*") name = name.replace("^", "\\^") name = name.replace("$", "\\$") re_name = re.compile(name, re.IGNORECASE) for key in (nick for nick in self.lu_nick.keys()): if re_name.match(key): return self.lu_nick[key] if addr != "*" and addr != "*.*": pam = self.find_user(name, addr) if pam: return pam else: addr = addr.replace(".", "\\.") addr = addr.replace("*", "\\S*") addr = addr.replace("^", "\\^") addr = addr.replace("$", "\\$") re_addr = re.compile(addr, re.IGNORECASE) for key in (host for host in self.lu_address.keys()): if re_addr.match(key): return self.lu_address[key] return None