]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_filter.cpp
Add RAWIO log level which is more verbose than DEBUG
[user/henk/code/inspircd.git] / src / modules / m_filter.cpp
index 55ef734ba8095059a3b7fd4c285e89a2fa90877b..69117ae5556b6f5c527a0aff935410988b1fb5e5 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -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);
 };
@@ -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<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))
@@ -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 : "");
 }