X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_filter.cpp;h=86ef0d4f655ada4cbb670349450b4fba0af4a8de;hb=1dfead3b2cc9e8c603f6ad6f7216576a2ce361fb;hp=0ce149373926b7c80737770b87961df6b16fad4d;hpb=a4ea01a767870574403690b0abd04b1dae85d6b5;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index 0ce149373..86ef0d4f6 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -114,7 +114,7 @@ class FilterResult flags.push_back('P'); if (flag_quit_message) flags.push_back('q'); - if (flag_privmsg); + if (flag_privmsg) flags.push_back('p'); if (flag_notice) flags.push_back('n'); @@ -192,7 +192,7 @@ class ModuleFilter : public Module ModResult OnStats(char symbol, User* user, string_list &results); 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); + void ReadFilters(); static bool StringToFilterAction(const std::string& str, FilterAction& fa); static std::string FilterActionToString(FilterAction fa); }; @@ -298,9 +298,9 @@ ModuleFilter::ModuleFilter() : filtcommand(this), RegexEngine(this, "regex") void ModuleFilter::init() { - ServerInstance->AddCommand(&filtcommand); + ServerInstance->Modules->AddService(filtcommand); Implementation eventlist[] = { I_OnPreCommand, I_OnStats, I_OnSyncNetwork, I_OnDecodeMetaData, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash }; - ServerInstance->Modules->Attach(eventlist, this, 7); + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); OnRehash(NULL); } @@ -449,15 +449,15 @@ ModResult ModuleFilter::OnPreCommand(std::string &command, std::vectorConfig->ConfTags("exemptfromfilter"); exemptfromfilter.clear(); - for (int index = 0; index < MyConf.Enumerate("exemptfromfilter"); ++index) + for (ConfigIter i = tags.first; i != tags.second; ++i) { - std::string chan = MyConf.ReadValue("exemptfromfilter", "channel", index); + std::string chan = i->second->getString("channel"); if (!chan.empty()) exemptfromfilter.insert(chan); } - std::string newrxengine = "regex/" + MyConf.ReadValue("filteropts", "engine", 0); + std::string newrxengine = "regex/" + ServerInstance->Config->ConfValue("filteropts")->getString("engine"); if (newrxengine == "regex/") newrxengine = "regex"; if (RegexEngine.GetProvider() == newrxengine) @@ -471,7 +471,7 @@ void ModuleFilter::OnRehash(User* user) { ServerInstance->SNO->WriteGlobalSno('a', "WARNING: Regex engine '%s' is not loaded - Filter functionality disabled until this is corrected.", newrxengine.c_str()); } - ReadFilters(MyConf); + ReadFilters(); } Version ModuleFilter::GetVersion() @@ -650,17 +650,18 @@ std::string ModuleFilter::FilterActionToString(FilterAction fa) } } -void ModuleFilter::ReadFilters(ConfigReader &MyConf) +void ModuleFilter::ReadFilters() { - for (int index = 0; index < MyConf.Enumerate("keyword"); index++) + ConfigTagList tags = ServerInstance->Config->ConfTags("keyword"); + for (ConfigIter i = tags.first; i != tags.second; ++i) { - this->DeleteFilter(MyConf.ReadValue("keyword", "pattern", index)); + std::string pattern = i->second->getString("pattern"); + this->DeleteFilter(pattern); - std::string pattern = MyConf.ReadValue("keyword", "pattern", index); - std::string reason = MyConf.ReadValue("keyword", "reason", index); - std::string action = MyConf.ReadValue("keyword", "action", index); - std::string flgs = MyConf.ReadValue("keyword", "flags", index); - long gline_time = ServerInstance->Duration(MyConf.ReadValue("keyword", "duration", index)); + std::string reason = i->second->getString("reason"); + std::string action = i->second->getString("action"); + std::string flgs = i->second->getString("flags"); + long gline_time = ServerInstance->Duration(i->second->getString("duration")); if (flgs.empty()) flgs = "*";