diff options
-rw-r--r-- | src/modules/m_censor.cpp | 19 | ||||
-rw-r--r-- | src/modules/m_chanprotect.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_knock.cpp | 20 | ||||
-rw-r--r-- | src/modules/m_noctcp.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_noinvite.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_nokicks.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_nonicks.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_nonotice.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_operchans.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_override.cpp | 5 | ||||
-rw-r--r-- | src/modules/m_redirect.cpp | 19 | ||||
-rw-r--r-- | src/modules/m_remove.cpp | 5 | ||||
-rw-r--r-- | src/modules/m_services.cpp | 18 | ||||
-rw-r--r-- | src/modules/m_stripcolor.cpp | 18 |
14 files changed, 229 insertions, 1 deletions
diff --git a/src/modules/m_censor.cpp b/src/modules/m_censor.cpp index 769e6e493..8a0bc4d9e 100644 --- a/src/modules/m_censor.cpp +++ b/src/modules/m_censor.cpp @@ -49,6 +49,25 @@ class ModuleCensor : public Module Srv->AddExtendedMode('G',MT_CLIENT,false,0,0); } + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "G"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } + + virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms) { // check if this is our mode character... diff --git a/src/modules/m_chanprotect.cpp b/src/modules/m_chanprotect.cpp index a357e8983..c762fb6a4 100644 --- a/src/modules/m_chanprotect.cpp +++ b/src/modules/m_chanprotect.cpp @@ -50,6 +50,24 @@ class ModuleChanProtect : public Module FirstInGetsFounder = Conf->ReadFlag("options","noservices",0); } + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=qa" + temp1; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } + virtual void OnRehash() { // on a rehash we delete our classes for good measure and create them again. diff --git a/src/modules/m_knock.cpp b/src/modules/m_knock.cpp index dc4263335..474dd4014 100644 --- a/src/modules/m_knock.cpp +++ b/src/modules/m_knock.cpp @@ -64,7 +64,25 @@ class ModuleKnock : public Module Srv->AddExtendedMode('K',MT_CHANNEL,false,0,0); Srv->AddCommand("KNOCK",handle_knock,0,2); } - + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "K"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1) + std::string(" KNOCK"); + } + virtual ~ModuleKnock() { delete Srv; diff --git a/src/modules/m_noctcp.cpp b/src/modules/m_noctcp.cpp index 73b991f7c..a5b8832af 100644 --- a/src/modules/m_noctcp.cpp +++ b/src/modules/m_noctcp.cpp @@ -32,6 +32,24 @@ class ModuleNoCTCP : public Module Srv = new Server; Srv->AddExtendedMode('C',MT_CHANNEL,false,0,0); } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "C"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { diff --git a/src/modules/m_noinvite.cpp b/src/modules/m_noinvite.cpp index 7bd76d95c..463d5a5b9 100644 --- a/src/modules/m_noinvite.cpp +++ b/src/modules/m_noinvite.cpp @@ -33,6 +33,24 @@ class ModuleNoInvite : public Module Srv->AddExtendedMode('V',MT_CHANNEL,false,0,0); } + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "V"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } + virtual int OnUserPreInvite(userrec* user,userrec* dest,chanrec* channel) { diff --git a/src/modules/m_nokicks.cpp b/src/modules/m_nokicks.cpp index d2f6b8da5..e049512f9 100644 --- a/src/modules/m_nokicks.cpp +++ b/src/modules/m_nokicks.cpp @@ -33,6 +33,24 @@ class ModuleNoKicks : public Module Srv->AddExtendedMode('Q',MT_CHANNEL,false,0,0); } + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "Q"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } + virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { if (access_type == AC_KICK) diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp index 24540c1d4..dfdf86b61 100644 --- a/src/modules/m_nonicks.cpp +++ b/src/modules/m_nonicks.cpp @@ -43,6 +43,24 @@ class ModuleNoNickChange : public Module { return Version(1,0,0,1); } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "N"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual int OnUserPreNick(userrec* user, std::string newnick) { diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp index 89a619590..6d8e8a401 100644 --- a/src/modules/m_nonotice.cpp +++ b/src/modules/m_nonotice.cpp @@ -54,6 +54,24 @@ class ModuleNoNotice : public Module return 0; } + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "T"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } + virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms) { // check if this is our mode character... diff --git a/src/modules/m_operchans.cpp b/src/modules/m_operchans.cpp index 430411289..e5eefe0cf 100644 --- a/src/modules/m_operchans.cpp +++ b/src/modules/m_operchans.cpp @@ -58,6 +58,24 @@ class ModuleOperChans : public Module return 0; } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "O"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { diff --git a/src/modules/m_override.cpp b/src/modules/m_override.cpp index 2c3adfa9a..cd9cfba0f 100644 --- a/src/modules/m_override.cpp +++ b/src/modules/m_override.cpp @@ -52,6 +52,11 @@ class ModuleOverride : public Module // re-read our config options on a rehash NoisyOverride = Conf->ReadFlag("override","noisy",0); } + + virtual void On005Numeric(std::string &output) + { + output = output + std::string(" OVERRIDE"); + } virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp index 7b4fe81de..e81864565 100644 --- a/src/modules/m_redirect.cpp +++ b/src/modules/m_redirect.cpp @@ -55,6 +55,25 @@ class ModuleRedirect : public Module } return 0; } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // By doing this we're *assuming* no other module has fucked up the CHANMODES= + // section of the 005 numeric. If they have, we're going DOWN in a blaze of glory, + // with a honking great EXCEPTION :) + temp1.insert(temp1.find(",")+1,"L"); + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { diff --git a/src/modules/m_remove.cpp b/src/modules/m_remove.cpp index 94ca1e5d2..873bdb25e 100644 --- a/src/modules/m_remove.cpp +++ b/src/modules/m_remove.cpp @@ -115,6 +115,11 @@ class ModuleRemove : public Module Srv = new Server; Srv->AddCommand("REMOVE", handle_remove, 0, 3); } + + virtual void On005Numeric(std::string &output) + { + output = output + std::string(" REMOVE"); + } virtual ~ModuleRemove() { diff --git a/src/modules/m_services.cpp b/src/modules/m_services.cpp index dd1506717..d3e9066e8 100644 --- a/src/modules/m_services.cpp +++ b/src/modules/m_services.cpp @@ -37,6 +37,24 @@ class ModuleServices : public Module Srv->AddExtendedMode('R',MT_CLIENT,false,0,0); Srv->AddExtendedMode('M',MT_CHANNEL,false,0,0); } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "rRM"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms) { diff --git a/src/modules/m_stripcolor.cpp b/src/modules/m_stripcolor.cpp index ec7a57720..ba914c75e 100644 --- a/src/modules/m_stripcolor.cpp +++ b/src/modules/m_stripcolor.cpp @@ -48,6 +48,24 @@ class ModuleStripColor : public Module return 0; } } + + virtual void On005Numeric(std::string &output) + { + std::stringstream line(output); + std::string temp1, temp2; + while (!line.eof()) + { + line >> temp1; + if (temp1.substr(0,10) == "CHANMODES=") + { + // append the chanmode to the end + temp1 = temp1.substr(10,temp1.length()); + temp1 = "CHANMODES=" + temp1 + "S"; + } + temp2 = temp2 + temp1 + " "; + } + output = temp2.substr(0,temp2.length()-1); + } virtual ~ModuleStripColor() { |