]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_filter_pcre.cpp
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list...
[user/henk/code/inspircd.git] / src / modules / extra / m_filter_pcre.cpp
index dde7575ab60b1391a83d4192855ac3b968495fb5..2a6ce30610e45eebed4ffad7bc378a5430ee81d9 100644 (file)
@@ -81,6 +81,7 @@ class ModuleFilterPCRE : public FilterBase
                {
                        if (i->freeform == freeform)
                        {
+                               pcre_free((*i).regexp);
                                filters.erase(i);
                                return true;
                        }
@@ -125,13 +126,10 @@ class ModuleFilterPCRE : public FilterBase
        {               
                ConfigReader MyConf(ServerInstance);
 
-               for (std::vector<PCREFilter>::iterator i = filters.begin(); i != filters.end(); i++)
-                       pcre_free((*i).regexp);
-
-               filters.clear();
-
                for (int index = 0; index < MyConf.Enumerate("keyword"); index++)
                {
+                       this->DeleteFilter(MyConf.ReadValue("keyword", "pattern", index));
+
                        std::string pattern = MyConf.ReadValue("keyword", "pattern", index);
                        std::string reason = MyConf.ReadValue("keyword", "reason", index);
                        std::string action = MyConf.ReadValue("keyword", "action", index);
@@ -151,6 +149,19 @@ class ModuleFilterPCRE : public FilterBase
                        }
                }
        }
+
+       virtual int OnStats(char symbol, userrec* user, string_list &results)
+       {
+               if (symbol == 's')
+               {
+                       std::string sn = ServerInstance->Config->ServerName;
+                       for (std::vector<PCREFilter>::iterator i = filters.begin(); i != filters.end(); i++)
+                       {
+                               results.push_back(sn+" 223 "+user->nick+" :REGEXP:"+i->freeform+" "+i->action+" "+ConvToStr(i->gline_time)+" :"+i->reason);
+                       }
+               }
+               return 0;
+       }
 };