]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_filter.cpp
m_kicknorejoin Store and compare uuids instead pointers
[user/henk/code/inspircd.git] / src / modules / m_filter.cpp
index 0ce149373926b7c80737770b87961df6b16fad4d..86ef0d4f655ada4cbb670349450b4fba0af4a8de 100644 (file)
@@ -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<std::string> &parameters, 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::vector<std::stri
 
 void ModuleFilter::OnRehash(User* user)
 {
-       ConfigReader MyConf;
+       ConfigTagList tags = ServerInstance->Config->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 = "*";