From b040f1c1a6b3140024a2eab0174415c0763ed6ae Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 7 Apr 2004 17:26:30 +0000 Subject: 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 --- src/modules/m_filter.cpp | 71 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 11 deletions(-) (limited to 'src/modules') 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; } } -- cgit v1.2.3