diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_filter.cpp | 10 | ||||
-rw-r--r-- | src/wildcard.cpp | 11 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index 569ed0637..054d77963 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -26,8 +26,6 @@ /* $ModDesc: An enhanced version of the unreal m_filter.so used by chatspike.net */ - - class ModuleFilter : public Module { Server *Srv; @@ -65,11 +63,11 @@ class ModuleFilter : public Module virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { - std::string text2 = text + " "; + std::string text2 = text+" "; for (int index = 0; index < MyConf->Enumerate("keyword"); index++) { std::string pattern = MyConf->ReadValue("keyword","pattern",index); - if (Srv->MatchText(text2,pattern)) + if ((Srv->MatchText(text2,pattern)) || (Srv->MatchText(text,pattern))) { std::string target = ""; std::string reason = MyConf->ReadValue("keyword","reason",index); @@ -114,11 +112,11 @@ class ModuleFilter : public Module virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { - std::string text2 = text + " "; + std::string text2 = text+" "; for (int index = 0; index < MyConf->Enumerate("keyword"); index++) { std::string pattern = MyConf->ReadValue("keyword","pattern",index); - if (Srv->MatchText(text2,pattern)) + if ((Srv->MatchText(text2,pattern)) || (Srv->MatchText(text,pattern))) { std::string target = ""; std::string reason = MyConf->ReadValue("keyword","reason",index); diff --git a/src/wildcard.cpp b/src/wildcard.cpp index 8b4190539..47fbaf002 100644 --- a/src/wildcard.cpp +++ b/src/wildcard.cpp @@ -101,6 +101,17 @@ bool match(const char* literal, const char* mask) strlcpy(M,mask,10240); strlower(L); strlower(M); + // short circuit literals + log(DEBUG,"Match '%s' to '%s'",L,M); + if ((!strchr(M,'*')) && (!strchr(M,'?'))) + { + log(DEBUG,"Short circuiting literal"); + if (!strcasecmp(L,M)) + { + log(DEBUG,"Literal match"); + return true; + } + } match2(L,M); return (MWC == 2); } |