X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_censor.cpp;h=0680644a72ab972f6f74fb9693e40b698b5bbdd7;hb=43fe72edad4c5dfd1a3a700bea17c8ee7a7c3d8e;hp=9598728198237734ed147b34d53709ac629f8e20;hpb=87bba3d377a99fef1e22a96a8ac403c9aad6efbd;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_censor.cpp b/src/modules/m_censor.cpp index 959872819..0680644a7 100644 --- a/src/modules/m_censor.cpp +++ b/src/modules/m_censor.cpp @@ -14,11 +14,14 @@ * --------------------------------------------------- */ +using namespace std; + #include #include #include "users.h" #include "channels.h" #include "modules.h" +#include "helperfuncs.h" /* $ModDesc: Provides user and channel +G mode */ @@ -28,21 +31,30 @@ class ModuleCensor : public Module ConfigReader *Conf, *MyConf; public: - ModuleCensor() + ModuleCensor(Server* Me) + : Module::Module(Me) { - // read the configuration file on startup. - // it is perfectly valid to set to the value of the - // main config file, then append your tags to the bottom - // of the main config... but rather messy. That's why the capability - // of using a seperate config file is provided. - Srv = new Server; + /* + * read the configuration file on startup. + * it is perfectly valid to set to the value of the + * main config file, then append your tags to the bottom + * of the main config... but rather messy. That's why the capability + * of using a seperate config file is provided. + * + * XXX - Really, it'd be nice to scraip this kind of thing, and have something like + * an include directive to include additional configuration files. Might make our lives easier. --w00t + * + * XXX - These module pre-date the include directive which exists since beta 5 -- Brain + */ + Srv = Me; Conf = new ConfigReader; std::string Censorfile = Conf->ReadValue("censor","file",0); MyConf = new ConfigReader(Censorfile); if ((Censorfile == "") || (!MyConf->Verify())) { printf("Error, could not find definition in your config file!"); - exit(0); + log(DEFAULT,"Error, could not find definition in your config file!"); + return; } Srv->Log(DEFAULT,std::string("m_censor: read configuration from ")+Censorfile); Srv->AddExtendedMode('G',MT_CHANNEL,false,0,0); @@ -84,7 +96,6 @@ class ModuleCensor : public Module virtual ~ModuleCensor() { - delete Srv; delete MyConf; delete Conf; } @@ -93,7 +104,7 @@ class ModuleCensor : public Module { if ((pattern != "") && (text != "")) { - while (strstr(text.c_str(),pattern.c_str())) + while (text.find(pattern) != std::string::npos) { int pos = text.find(pattern); text.erase(pos,pattern.length()); @@ -110,7 +121,7 @@ class ModuleCensor : public Module for (int index = 0; index < MyConf->Enumerate("badword"); index++) { std::string pattern = MyConf->ReadValue("badword","text",index); - if (strstr(text.c_str(),pattern.c_str())) + if (text.find(pattern) != std::string::npos) { std::string replace = MyConf->ReadValue("badword","replace",index); @@ -129,8 +140,6 @@ class ModuleCensor : public Module { this->ReplaceLine(text,pattern,replace); } - - return 0; } } return 0; @@ -142,7 +151,7 @@ class ModuleCensor : public Module for (int index = 0; index < MyConf->Enumerate("badword"); index++) { std::string pattern = MyConf->ReadValue("badword","text",index); - if (strstr(text.c_str(),pattern.c_str())) + if (text.find(pattern) != std::string::npos) { std::string replace = MyConf->ReadValue("badword","replace",index); @@ -161,17 +170,17 @@ class ModuleCensor : public Module { this->ReplaceLine(text,pattern,replace); } - - return 0; } } return 0; } - virtual void OnRehash() + virtual void OnRehash(std::string parameter) { - // reload our config file on rehash - we must destroy and re-allocate the classes - // to call the constructor again and re-read our data. + /* + * reload our config file on rehash - we must destroy and re-allocate the classes + * to call the constructor again and re-read our data. + */ delete Conf; delete MyConf; Conf = new ConfigReader; @@ -182,7 +191,7 @@ class ModuleCensor : public Module { // bail if the user forgot to create a config file printf("Error, could not find definition in your config file!"); - exit(0); + log(DEFAULT,"Error, could not find definition in your config file!"); } Srv->Log(DEFAULT,std::string("m_censor: read configuration from ")+Censorfile); } @@ -190,7 +199,7 @@ class ModuleCensor : public Module virtual Version GetVersion() { // This is version 2 because version 1.x is the unreleased unrealircd module - return Version(1,0,0,0); + return Version(1,0,0,0,VF_STATIC|VF_VENDOR); } }; @@ -208,9 +217,9 @@ class ModuleCensorFactory : public ModuleFactory { } - virtual Module * CreateModule() + virtual Module * CreateModule(Server* Me) { - return new ModuleCensor; + return new ModuleCensor(Me); } };