diff options
| author | 2020-07-27 10:26:10 +0200 | |
|---|---|---|
| committer | 2020-07-27 10:30:01 +0200 | |
| commit | 3d5faa421756fadb42590db92e8fee64578390d4 (patch) | |
| tree | c88ad10c50cb21e0b0fcabd55ea65ea87de5afd5 | |
| parent | More explicit dict indexing (diff) | |
Rename AllowDenyList to FilterLists
| -rw-r--r-- | bot/__main__.py | 2 | ||||
| -rw-r--r-- | bot/bot.py | 14 | ||||
| -rw-r--r-- | bot/cogs/antimalware.py | 2 | ||||
| -rw-r--r-- | bot/cogs/filter_lists.py (renamed from bot/cogs/allow_deny_lists.py) | 44 | ||||
| -rw-r--r-- | bot/cogs/filtering.py | 16 | ||||
| -rw-r--r-- | bot/converters.py | 10 | ||||
| -rw-r--r-- | tests/bot/cogs/test_antimalware.py | 2 |
7 files changed, 45 insertions, 45 deletions
diff --git a/bot/__main__.py b/bot/__main__.py index 932aa705c..c2271cd16 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -53,7 +53,7 @@ bot.load_extension("bot.cogs.verification") # Feature cogs bot.load_extension("bot.cogs.alias") -bot.load_extension("bot.cogs.allow_deny_lists") +bot.load_extension("bot.cogs.filter_lists") bot.load_extension("bot.cogs.defcon") bot.load_extension("bot.cogs.dm_relay") bot.load_extension("bot.cogs.duck_pond") diff --git a/bot/bot.py b/bot/bot.py index d834c151b..3dfb4e948 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -34,7 +34,7 @@ class Bot(commands.Bot): self.redis_ready = asyncio.Event() self.redis_closed = False self.api_client = api.APIClient(loop=self.loop) - self.allow_deny_list_cache = {} + self.filter_list_cache = {} self._connector = None self._resolver = None @@ -50,9 +50,9 @@ class Bot(commands.Bot): self.stats = AsyncStatsClient(self.loop, statsd_url, 8125, prefix="bot") - async def _cache_allow_deny_list_data(self) -> None: - """Cache all the data in the AllowDenyList on the site.""" - full_cache = await self.api_client.get('bot/allow_deny_lists') + async def _cache_filter_list_data(self) -> None: + """Cache all the data in the FilterList on the site.""" + full_cache = await self.api_client.get('bot/filter-lists') for item in full_cache: type_ = item.get("type") @@ -64,7 +64,7 @@ class Bot(commands.Bot): "created_at": item.get("created_at"), "updated_at": item.get("updated_at"), } - self.allow_deny_list_cache.setdefault(f"{type_}.{allowed}", []).append(metadata) + self.filter_list_cache.setdefault(f"{type_}.{allowed}", []).append(metadata) async def _create_redis_session(self) -> None: """ @@ -176,8 +176,8 @@ class Bot(commands.Bot): self.http_session = aiohttp.ClientSession(connector=self._connector) self.api_client.recreate(force=True, connector=self._connector) - # Build the AllowDenyList cache - self.loop.create_task(self._cache_allow_deny_list_data()) + # Build the FilterList cache + self.loop.create_task(self._cache_filter_list_data()) async def on_guild_available(self, guild: discord.Guild) -> None: """ diff --git a/bot/cogs/antimalware.py b/bot/cogs/antimalware.py index 5b56f937f..9a100b3fc 100644 --- a/bot/cogs/antimalware.py +++ b/bot/cogs/antimalware.py @@ -40,7 +40,7 @@ class AntiMalware(Cog): def _get_whitelisted_file_formats(self) -> list: """Get the file formats currently on the whitelist.""" - return [item['content'] for item in self.bot.allow_deny_list_cache['file_format.True']] + return [item['content'] for item in self.bot.filter_list_cache['file_format.True']] def _get_disallowed_extensions(self, message: Message) -> t.Iterable[str]: """Get an iterable containing all the disallowed extensions of attachments.""" diff --git a/bot/cogs/allow_deny_lists.py b/bot/cogs/filter_lists.py index e28e32bd6..d1db9830e 100644 --- a/bot/cogs/allow_deny_lists.py +++ b/bot/cogs/filter_lists.py @@ -7,14 +7,14 @@ from discord.ext.commands import BadArgument, Cog, Context, IDConverter, group from bot import constants from bot.api import ResponseCodeError from bot.bot import Bot -from bot.converters import ValidAllowDenyListType, ValidDiscordServerInvite +from bot.converters import ValidDiscordServerInvite, ValidFilterListType from bot.pagination import LinePaginator from bot.utils.checks import with_role_check log = logging.getLogger(__name__) -class AllowDenyLists(Cog): +class FilterLists(Cog): """Commands for blacklisting and whitelisting things.""" def __init__(self, bot: Bot) -> None: @@ -24,11 +24,11 @@ class AllowDenyLists(Cog): self, ctx: Context, allowed: bool, - list_type: ValidAllowDenyListType, + list_type: ValidFilterListType, content: str, comment: Optional[str] = None, ) -> None: - """Add an item to an allow or denylist.""" + """Add an item to a filterlist.""" allow_type = "whitelist" if allowed else "blacklist" # If this is a server invite, we gotta validate it. @@ -60,7 +60,7 @@ class AllowDenyLists(Cog): try: item = await self.bot.api_client.post( - "bot/allow_deny_lists", + "bot/filter-lists", json=payload ) except ResponseCodeError as e: @@ -88,11 +88,11 @@ class AllowDenyLists(Cog): "created_at": item.get("created_at"), "updated_at": item.get("updated_at"), } - self.bot.allow_deny_list_cache.setdefault(f"{type_}.{allowed}", []).append(metadata) + self.bot.filter_list_cache.setdefault(f"{type_}.{allowed}", []).append(metadata) await ctx.message.add_reaction("✅") - async def _delete_data(self, ctx: Context, allowed: bool, list_type: ValidAllowDenyListType, content: str) -> None: - """Remove an item from an allow or denylist.""" + async def _delete_data(self, ctx: Context, allowed: bool, list_type: ValidFilterListType, content: str) -> None: + """Remove an item from a filterlist.""" item = None allow_type = "whitelist" if allowed else "blacklist" id_converter = IDConverter() @@ -110,22 +110,22 @@ class AllowDenyLists(Cog): # Find the content and delete it. log.trace(f"Trying to delete the {content} item from the {list_type} {allow_type}") - for allow_list in self.bot.allow_deny_list_cache.get(f"{list_type}.{allowed}", []): + for allow_list in self.bot.filter_list_cache.get(f"{list_type}.{allowed}", []): if content == allow_list.get("content"): item = allow_list break if item is not None: await self.bot.api_client.delete( - f"bot/allow_deny_lists/{item.get('id')}" + f"bot/filter-lists/{item.get('id')}" ) - self.bot.allow_deny_list_cache[f"{list_type}.{allowed}"].remove(item) + self.bot.filter_list_cache[f"{list_type}.{allowed}"].remove(item) await ctx.message.add_reaction("✅") - async def _list_all_data(self, ctx: Context, allowed: bool, list_type: ValidAllowDenyListType) -> None: - """Paginate and display all items in an allow or denylist.""" + async def _list_all_data(self, ctx: Context, allowed: bool, list_type: ValidFilterListType) -> None: + """Paginate and display all items in a filterlist.""" allow_type = "whitelist" if allowed else "blacklist" - result = self.bot.allow_deny_list_cache.get(f"{list_type}.{allowed}", []) + result = self.bot.filter_list_cache.get(f"{list_type}.{allowed}", []) # Build a list of lines we want to show in the paginator lines = [] @@ -168,7 +168,7 @@ class AllowDenyLists(Cog): async def allow_add( self, ctx: Context, - list_type: ValidAllowDenyListType, + list_type: ValidFilterListType, content: str, *, comment: Optional[str] = None, @@ -180,7 +180,7 @@ class AllowDenyLists(Cog): async def deny_add( self, ctx: Context, - list_type: ValidAllowDenyListType, + list_type: ValidFilterListType, content: str, *, comment: Optional[str] = None, @@ -189,22 +189,22 @@ class AllowDenyLists(Cog): await self._add_data(ctx, False, list_type, content, comment) @whitelist.command(name="remove", aliases=("delete", "rm",)) - async def allow_delete(self, ctx: Context, list_type: ValidAllowDenyListType, content: str) -> None: + async def allow_delete(self, ctx: Context, list_type: ValidFilterListType, content: str) -> None: """Remove an item from the specified allowlist.""" await self._delete_data(ctx, True, list_type, content) @blacklist.command(name="remove", aliases=("delete", "rm",)) - async def deny_delete(self, ctx: Context, list_type: ValidAllowDenyListType, content: str) -> None: + async def deny_delete(self, ctx: Context, list_type: ValidFilterListType, content: str) -> None: """Remove an item from the specified denylist.""" await self._delete_data(ctx, False, list_type, content) @whitelist.command(name="get", aliases=("list", "ls", "fetch", "show")) - async def allow_get(self, ctx: Context, list_type: ValidAllowDenyListType) -> None: + async def allow_get(self, ctx: Context, list_type: ValidFilterListType) -> None: """Get the contents of a specified allowlist.""" await self._list_all_data(ctx, True, list_type) @blacklist.command(name="get", aliases=("list", "ls", "fetch", "show")) - async def deny_get(self, ctx: Context, list_type: ValidAllowDenyListType) -> None: + async def deny_get(self, ctx: Context, list_type: ValidFilterListType) -> None: """Get the contents of a specified denylist.""" await self._list_all_data(ctx, False, list_type) @@ -214,5 +214,5 @@ class AllowDenyLists(Cog): def setup(bot: Bot) -> None: - """Load the AllowDenyLists cog.""" - bot.add_cog(AllowDenyLists(bot)) + """Load the FilterLists cog.""" + bot.add_cog(FilterLists(bot)) diff --git a/bot/cogs/filtering.py b/bot/cogs/filtering.py index 8897cbaf9..652af5ff5 100644 --- a/bot/cogs/filtering.py +++ b/bot/cogs/filtering.py @@ -99,9 +99,9 @@ class Filtering(Cog): self.bot.loop.create_task(self.reschedule_offensive_msg_deletion()) - def _get_allowlist_items(self, list_type: str, *, allowed: bool, compiled: Optional[bool] = False) -> list: - """Fetch items from the allow_deny_list_cache.""" - items = self.bot.allow_deny_list_cache.get(f"{list_type.upper()}.{allowed}", []) + def _get_filterlist_items(self, list_type: str, *, allowed: bool, compiled: Optional[bool] = False) -> list: + """Fetch items from the filter_list_cache.""" + items = self.bot.filter_list_cache.get(f"{list_type.upper()}.{allowed}", []) if compiled: return [re.compile(fr'{item["content"]}', flags=re.IGNORECASE) for item in items] @@ -143,7 +143,7 @@ class Filtering(Cog): def get_name_matches(self, name: str) -> List[re.Match]: """Check bad words from passed string (name). Return list of matches.""" matches = [] - watchlist_patterns = self._get_allowlist_items('word_watchlist', allowed=False, compiled=True) + watchlist_patterns = self._get_filterlist_items('word_watchlist', allowed=False, compiled=True) for pattern in watchlist_patterns: if match := pattern.search(name): matches.append(match) @@ -408,7 +408,7 @@ class Filtering(Cog): if URL_RE.search(text): return False - watchlist_patterns = self._get_allowlist_items('word_watchlist', allowed=False, compiled=True) + watchlist_patterns = self._get_filterlist_items('word_watchlist', allowed=False, compiled=True) for pattern in watchlist_patterns: match = pattern.search(text) if match: @@ -420,7 +420,7 @@ class Filtering(Cog): return False text = text.lower() - domain_blacklist = self._get_allowlist_items("domain_name", allowed=False) + domain_blacklist = self._get_filterlist_items("domain_name", allowed=False) for url in domain_blacklist: if url.lower() in text: @@ -468,8 +468,8 @@ class Filtering(Cog): return True guild_id = guild.get("id") - guild_invite_whitelist = self._get_allowlist_items("guild_invite", allowed=True) - guild_invite_blacklist = self._get_allowlist_items("guild_invite", allowed=False) + guild_invite_whitelist = self._get_filterlist_items("guild_invite", allowed=True) + guild_invite_blacklist = self._get_filterlist_items("guild_invite", allowed=False) # Is this invite allowed? guild_partnered_or_verified = ( diff --git a/bot/converters.py b/bot/converters.py index 41cd3f3e5..158bf1a16 100644 --- a/bot/converters.py +++ b/bot/converters.py @@ -72,18 +72,18 @@ class ValidDiscordServerInvite(Converter): raise BadArgument("This does not appear to be a valid Discord server invite.") -class ValidAllowDenyListType(Converter): +class ValidFilterListType(Converter): """ - A converter that checks whether the given string is a valid AllowDenyList type. + A converter that checks whether the given string is a valid FilterList type. - Raises `BadArgument` if the argument is not a valid AllowDenyList type, and simply + Raises `BadArgument` if the argument is not a valid FilterList type, and simply passes through the given argument otherwise. """ async def convert(self, ctx: Context, list_type: str) -> str: - """Checks whether the given string is a valid AllowDenyList type.""" + """Checks whether the given string is a valid FilterList type.""" try: - valid_types = await ctx.bot.api_client.get('bot/allow_deny_lists/get_types') + valid_types = await ctx.bot.api_client.get('bot/filter-lists/get-types') except ResponseCodeError: raise BadArgument("Cannot validate list_type: Unable to fetch valid types from API.") diff --git a/tests/bot/cogs/test_antimalware.py b/tests/bot/cogs/test_antimalware.py index 1e010d2ce..664fa8f19 100644 --- a/tests/bot/cogs/test_antimalware.py +++ b/tests/bot/cogs/test_antimalware.py @@ -14,7 +14,7 @@ class AntiMalwareCogTests(unittest.IsolatedAsyncioTestCase): def setUp(self): """Sets up fresh objects for each test.""" self.bot = MockBot() - self.bot.allow_deny_list_cache = { + self.bot.filter_list_cache = { "file_format.True": [ {"content": ".first"}, {"content": ".second"}, |