diff --git a/src/IRCServer.py b/src/IRCServer.py index c21f5110..6822296c 100644 --- a/src/IRCServer.py +++ b/src/IRCServer.py @@ -203,6 +203,10 @@ class Server(IRCObject.Object): def irc_equals(self, s1: str, s2: str) -> bool: return utils.irc.equals(self.case_mapping, s1, s2) + def hostmask_match(self, hostmask: str, pattern: str) -> bool: + return utils.irc.hostmask_match(self.irc_lower(hostmask), + self.irc_lower(pattern)) + def parse_data(self, line: str): if not line: return diff --git a/src/utils/irc/__init__.py b/src/utils/irc/__init__.py index 39ee0058..b9ebdf58 100644 --- a/src/utils/irc/__init__.py +++ b/src/utils/irc/__init__.py @@ -1,4 +1,4 @@ -import json, string, re, typing +import fnmatch, json, string, re, typing from src import IRCLine, utils from . import protocol @@ -303,3 +303,6 @@ class MessageTag(object): def get_value(self, tags: typing.Dict[str, str]) -> typing.Optional[str]: key = list(set(tags.keys())&self._names) return tags[key[0]] if key else None + +def hostmask_match(hostmask: str, pattern: str) -> bool: + return fnmatch.fnmatch(hostmask, pattern)