]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_filter.cpp
Resolve /STATS S conflict between SVSHOLD and SHUN
[user/henk/code/inspircd.git] / src / modules / m_filter.cpp
index 713643043b84de75737f598479d6fa29dd3a601a..e4b2645f9b35ba950564f68bb0836deac8155c7b 100644 (file)
@@ -139,7 +139,7 @@ class ModuleFilter : public Module
        std::vector<std::string> 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<std::string> &parameters, User *user, bool validated, const std::string &original_line);
+       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);
 };
@@ -165,7 +165,8 @@ CmdResult CommandFilter::Handle(const std::vector<std::string> &parameters, User
        if (parameters.size() == 1)
        {
                /* Deleting a filter */
-               if (static_cast<ModuleFilter&>(*creator).DeleteFilter(parameters[0]))
+               Module *me = creator;
+               if (static_cast<ModuleFilter *>(me)->DeleteFilter(parameters[0]))
                {
                        user->WriteServ("NOTICE %s :*** Removed filter '%s'", user->nick.c_str(), parameters[0].c_str());
                        ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" removed filter '"+parameters[0]+"'");
@@ -212,7 +213,9 @@ CmdResult CommandFilter::Handle(const std::vector<std::string> &parameters, User
                        {
                                reason = parameters[3];
                        }
-                       std::pair<bool, std::string> result = static_cast<ModuleFilter&>(*creator).AddFilter(freeform, type, reason, duration, flags);
+                       
+                       Module *me = creator;
+                       std::pair<bool, std::string> result = static_cast<ModuleFilter *>(me)->AddFilter(freeform, type, reason, duration, flags);
                        if (result.first)
                        {
                                user->WriteServ("NOTICE %s :*** Added filter '%s', type '%s'%s%s, flags '%s', reason: '%s'", user->nick.c_str(), freeform.c_str(),
@@ -254,6 +257,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 +342,7 @@ ModResult ModuleFilter::OnUserPreNotice(User* user,void* dest,int target_type, s
        return MOD_RES_PASSTHRU;
 }
 
-ModResult ModuleFilter::OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ModResult ModuleFilter::OnPreCommand(std::string &command, std::vector<std::string> &parameters, LocalUser *user, bool validated, const std::string &original_line)
 {
        flags = 0;
        if (validated && IS_LOCAL(user))