diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-09-21 16:18:56 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-09-21 16:18:56 +0000 |
commit | 1b2dd8489c4105172f49ac94c5427f922c033b70 (patch) | |
tree | 4f9967175367f60fedab5db29ece00a983511c13 | |
parent | 7ef7a13f3fc0a75f9ca4d55903024d63a4821634 (diff) |
Fix re-creation of config filters
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10584 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | src/modules/m_filter.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index 80f09a2de..57e5d8fdb 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -126,6 +126,7 @@ protected: virtual int OnPreCommand(std::string &command, std::vector<std::string> ¶meters, User *user, bool validated, const std::string &original_line); bool AppliesToMe(User* user, FilterResult* filter, int flags); void OnLoadModule(Module* mod, const std::string& name); + virtual void ReadFilters(ConfigReader &MyConf) = 0; }; class CommandFilter : public Command @@ -420,7 +421,6 @@ void FilterBase::OnRehash(User* user, const std::string ¶meter) } rxengine = NULL; - printf("In Rehash\n"); RegexEngine = newrxengine; modulelist* ml = ServerInstance->Modules->FindInterface("RegularExpression"); if (ml) @@ -453,7 +453,9 @@ void FilterBase::OnLoadModule(Module* mod, const std::string& name) /* Force a rehash to make sure that any filters that couldnt be applied from the conf * on startup or on load are applied right now. */ - OnRehash(NULL, ""); + ConfigReader Config(ServerInstance); + ServerInstance->SNO->WriteToSnoMask('A', "Found and activated regex module '%s' for m_filter.so.", RegexEngine.c_str()); + ReadFilters(Config); } } } @@ -626,9 +628,12 @@ class ModuleFilter : public FilterBase virtual void OnRehash(User* user, const std::string ¶meter) { ConfigReader MyConf(ServerInstance); - FilterBase::OnRehash(user, parameter); + ReadFilters(MyConf); + } + void ReadFilters(ConfigReader &MyConf) + { for (int index = 0; index < MyConf.Enumerate("keyword"); index++) { this->DeleteFilter(MyConf.ReadValue("keyword", "pattern", index)); @@ -646,11 +651,11 @@ class ModuleFilter : public FilterBase try { filters.push_back(ImplFilter(this, reason, action, gline_time, pattern, flgs)); - ServerInstance->Logs->Log("m_filter",DEFAULT,"Regular expression %s loaded.", pattern.c_str()); + ServerInstance->Logs->Log("m_filter", DEFAULT, "Regular expression %s loaded.", pattern.c_str()); } catch (ModuleException &e) { - ServerInstance->Logs->Log("m_filter",DEFAULT,"Error in regular expression '%s': %s", pattern.c_str(), e.GetReason()); + ServerInstance->Logs->Log("m_filter", DEFAULT, "Error in regular expression '%s': %s", pattern.c_str(), e.GetReason()); } } } |