From c607a0e67ccb997a46b27c128a318865ba4c9734 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 19 May 2019 16:24:38 +0100 Subject: Implement utils.irc.hostmask_match for glob-like hostmask matching --- src/IRCServer.py | 4 ++++ src/utils/irc/__init__.py | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') 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) -- cgit v1.3.1-10-gc9f91