diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2004-04-07 17:26:30 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2004-04-07 17:26:30 +0000 |
commit | b040f1c1a6b3140024a2eab0174415c0763ed6ae (patch) | |
tree | 38d09b749d99881279e2ceaf075631fdf3eb191f /src/modules | |
parent | bd4c18aa1554e4fec0913b3c5f742080cbf0eab4 (diff) |
Added preliminary support for ConfigReader::Verify at request of the slug :p
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@419 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_filter.cpp | 71 |
1 files changed, 60 insertions, 11 deletions
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index d208e7a5a..3bda79022 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -56,6 +56,14 @@ class ModuleFilter : public Module { std::string target = ""; std::string reason = MyConf->ReadValue("keyword","reason",index); + std::string action = MyConf->ReadValue("keyword","action",index); + std::string operaction = MyConf->ReadValue("keyword","operaction",index); + std::string do_action = "none"; + + if (action == "") + action = "none"; + if (operaction == "") + operaction = "none"; if (target_type == TYPE_USER) { userrec* t = (userrec*)dest; @@ -66,15 +74,32 @@ class ModuleFilter : public Module chanrec* t = (chanrec*)dest; target = std::string(t->name); } - Srv->SendOpers(std::string("FILTER: ")+std::string(user->nick)+ - std::string(" had their message filtered, target was ")+ - target+": "+reason); + if (strchr(user->modes,'o')) + { + do_action = operaction; + } + else + { + do_action = action; + } + if (do_action == "block") + { + Srv->SendOpers(std::string("FILTER: ")+std::string(user->nick)+ + std::string(" had their message filtered, target was ")+ + target+": "+reason); + // this form of SendTo (with the source as NuLL) sends a server notice + Srv->SendTo(NULL,user,"NOTICE "+std::string(user->nick)+ + " :Your message has been filtered and opers notified: "+reason); + } + Srv->Log(DEFAULT,std::string("FILTER: ")+std::string(user->nick)+ std::string(" had their message filtered, target was ")+ target+": "+reason); - // this form of SendTo (with the source as NuLL) sends a server notice - Srv->SendTo(NULL,user,"NOTICE "+std::string(user->nick)+ - " :Your message has been filtered and opers notified: "+reason); + + if (do_action == "kill") + { + Srv->QuitUser(user,reason); + } return 1; } } @@ -91,6 +116,14 @@ class ModuleFilter : public Module { std::string target = ""; std::string reason = MyConf->ReadValue("keyword","reason",index); + std::string action = MyConf->ReadValue("keyword","action",index); + std::string operaction = MyConf->ReadValue("keyword","operaction",index); + std::string do_action = "none"; + + if (action == "") + action = "none"; + if (operaction == "") + operaction = "none"; if (target_type == TYPE_USER) { userrec* t = (userrec*)dest; @@ -101,14 +134,30 @@ class ModuleFilter : public Module chanrec* t = (chanrec*)dest; target = std::string(t->name); } - Srv->SendOpers(std::string("FILTER: ")+std::string(user->nick)+ - std::string(" had their notice filtered, target was ")+ - target+": "+MyConf->ReadValue("keyword","reason",index)); + if (strchr(user->modes,'o')) + { + do_action = operaction; + } + else + { + do_action = action; + } + if (do_action == "block") + { + Srv->SendOpers(std::string("FILTER: ")+std::string(user->nick)+ + std::string(" had their notice filtered, target was ")+ + target+": "+MyConf->ReadValue("keyword","reason",index)); + Srv->SendTo(NULL,user,"NOTICE "+std::string(user->nick)+ + " :Your notice has been filtered and opers notified: "+reason); + } Srv->Log(DEFAULT,std::string("FILTER: ")+std::string(user->nick)+ std::string(" had their notice filtered, target was ")+ target+": "+MyConf->ReadValue("keyword","reason",index)); - Srv->SendTo(NULL,user,"NOTICE "+std::string(user->nick)+ - " :Your notice has been filtered and opers notified: "+reason); + + if (do_action == "kill") + { + Srv->QuitUser(user,reason); + } return 1; } } |