X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_filter.cpp;h=69117ae5556b6f5c527a0aff935410988b1fb5e5;hb=f5c631ef8641db6455bed23c02e5a39f63f7d6d0;hp=064b87c49f16da2ec26147740c18f033cb62cc18;hpb=cd712c40e1b352c05e7ae0f72e0a5e84cdf64323;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index 064b87c49..69117ae55 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -139,7 +139,7 @@ class ModuleFilter : public Module std::vector exemptfromfilter; // List of channel names excluded from filtering. ModuleFilter(); - + void init(); ~ModuleFilter(); ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list); FilterResult* FilterMatch(User* user, const std::string &text, int flags); @@ -155,7 +155,7 @@ class ModuleFilter : public Module void OnSyncNetwork(Module* proto, void* opaque); void OnDecodeMetaData(Extensible* target, const std::string &extname, const std::string &extdata); ModResult OnStats(char symbol, User* user, string_list &results); - ModResult OnPreCommand(std::string &command, std::vector ¶meters, User *user, bool validated, const std::string &original_line); + ModResult OnPreCommand(std::string &command, std::vector ¶meters, LocalUser *user, bool validated, const std::string &original_line); bool AppliesToMe(User* user, FilterResult* filter, int flags); void ReadFilters(ConfigReader &MyConf); }; @@ -254,6 +254,10 @@ bool ModuleFilter::AppliesToMe(User* user, FilterResult* filter, int iflags) } ModuleFilter::ModuleFilter() : filtcommand(this), RegexEngine(this, "regex") +{ +} + +void ModuleFilter::init() { ServerInstance->AddCommand(&filtcommand); Implementation eventlist[] = { I_OnPreCommand, I_OnStats, I_OnSyncNetwork, I_OnDecodeMetaData, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash }; @@ -335,7 +339,7 @@ ModResult ModuleFilter::OnUserPreNotice(User* user,void* dest,int target_type, s return MOD_RES_PASSTHRU; } -ModResult ModuleFilter::OnPreCommand(std::string &command, std::vector ¶meters, User *user, bool validated, const std::string &original_line) +ModResult ModuleFilter::OnPreCommand(std::string &command, std::vector ¶meters, LocalUser *user, bool validated, const std::string &original_line) { flags = 0; if (validated && IS_LOCAL(user)) @@ -437,6 +441,8 @@ void ModuleFilter::OnRehash(User* user) } } std::string newrxengine = "regex/" + MyConf.ReadValue("filteropts", "engine", 0); + if (newrxengine == "regex/") + newrxengine = "regex"; if (RegexEngine.GetProvider() == newrxengine) return; @@ -446,14 +452,14 @@ void ModuleFilter::OnRehash(User* user) RegexEngine.SetProvider(newrxengine); if (!RegexEngine) { - ServerInstance->SNO->WriteGlobalSno('a', "WARNING: Regex engine '%s' is not loaded - Filter functionality disabled until this is corrected.", RegexEngine.GetProvider().c_str()); + ServerInstance->SNO->WriteGlobalSno('a', "WARNING: Regex engine '%s' is not loaded - Filter functionality disabled until this is corrected.", newrxengine.c_str()); } ReadFilters(MyConf); } Version ModuleFilter::GetVersion() { - return Version("Text (spam) filtering", VF_VENDOR | VF_COMMON); + return Version("Text (spam) filtering", VF_VENDOR | VF_COMMON, RegexEngine ? RegexEngine->name : ""); }