def filter_invites(self, event, config): invites = INVITE_LINK_RE.findall(event.content) for _, invite in invites: invite_info = self.get_invite_info(invite) need_whitelist = ( config.invites_guild_whitelist or (config.invites_whitelist or not config.invites_blacklist) ) whitelisted = False if invite_info and invite_info.get('id') in config.invites_guild_whitelist: whitelisted = True if invite.lower() in config.invites_whitelist: whitelisted = True if need_whitelist and not whitelisted: raise Censorship(CensorReason.INVITE, event, ctx={ 'hit': 'whietlist', 'invite': invite, 'guild': invite_info, }) elif config.invites_blacklist and invite.lower() in config.invites_blacklist: raise Censorship(CensorReason.INVITE, event, ctx={ 'hit': 'blacklist', 'invite': invite, 'guild': invite_info, })
def filter_domains(self, event, config): urls = URL_RE.findall(INVITE_LINK_RE.sub('', event.content)) for url in urls: try: parsed = urlparse.urlparse(url) except: continue if (config.domains_whitelist or not config.domains_blacklist)\ and parsed.netloc.lower() not in config.domains_whitelist: raise Censorship(CensorReason.DOMAIN, event, ctx={ 'hit': 'whitelist', 'url': url, 'domain': parsed.netloc, }) elif config.domains_blacklist and parsed.netloc.lower( ) in config.domains_blacklist: raise Censorship(CensorReason.DOMAIN, event, ctx={ 'hit': 'blacklist', 'url': url, 'domain': parsed.netloc })