X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_override.cpp;h=a81dfd87e1f8a2f891dc509402ad84480f3b30d1;hb=94288cdc2efb02eab9f27b3225adad839a7f2b58;hp=9cb2e28ae1255325b2313bf8d6f51decb4d440f2;hpb=09afa5085614e0224a296abd082fce205003c3fe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_override.cpp b/src/modules/m_override.cpp index 9cb2e28ae..a81dfd87e 100644 --- a/src/modules/m_override.cpp +++ b/src/modules/m_override.cpp @@ -18,10 +18,13 @@ #include "channels.h" #include "modules.h" #include "helperfuncs.h" +#include "configreader.h" #include "inspircd.h" /* $ModDesc: Provides support for unreal-style oper-override */ +extern InspIRCd* ServerInstance; + typedef std::map override_t; class ModuleOverride : public Module @@ -91,9 +94,9 @@ class ModuleOverride : public Module { if ((*source->oper) && (CanOverride(source,"KICK"))) { - if (((Srv->ChanMode(source,chan) == "%") && (Srv->ChanMode(user,chan) == "@")) || (Srv->ChanMode(source,chan) == "")) + if (((chan->GetStatus(source) == STATUS_HOP) && (chan->GetStatus(user) == STATUS_OP)) || (chan->GetStatus(source) < STATUS_VOICE)) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Kicked "+std::string(user->nick)+" on "+std::string(chan->name)+" ("+reason+")"); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Kicked "+std::string(user->nick)+" on "+std::string(chan->name)+" ("+reason+")"); } /* Returning -1 explicitly allows the kick */ return -1; @@ -109,15 +112,15 @@ class ModuleOverride : public Module { // Fix by brain - allow the change if they arent on channel - rely on boolean short-circuit // to not check the other items in the statement if they arent on the channel - std::string mode = Srv->ChanMode(source,channel); - if ((!channel->HasUser(source)) || ((mode != "%") && (mode != "@"))) + int mode = channel->GetStatus(source); + if ((!channel->HasUser(source)) || ((mode != STATUS_HOP) && (mode != STATUS_OP))) { switch (access_type) { case AC_DEOP: if (CanOverride(source,"MODEDEOP")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Deopped "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Deopped "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -128,7 +131,7 @@ class ModuleOverride : public Module case AC_OP: if (CanOverride(source,"MODEOP")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Opped "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Opped "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -139,7 +142,7 @@ class ModuleOverride : public Module case AC_VOICE: if (CanOverride(source,"MODEVOICE")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Voiced "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Voiced "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -150,7 +153,7 @@ class ModuleOverride : public Module case AC_DEVOICE: if (CanOverride(source,"MODEDEVOICE")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Devoiced "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Devoiced "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -161,7 +164,7 @@ class ModuleOverride : public Module case AC_HALFOP: if (CanOverride(source,"MODEHALFOP")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Halfopped "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Halfopped "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -172,7 +175,7 @@ class ModuleOverride : public Module case AC_DEHALFOP: if (CanOverride(source,"MODEDEHALFOP")) { - Srv->SendOpers("*** NOTICE: "+std::string(source->nick)+" Override-Dehalfopped "+std::string(dest->nick)+" on "+std::string(channel->name)); + ServerInstance->WriteOpers("*** NOTICE: "+std::string(source->nick)+" Override-Dehalfopped "+std::string(dest->nick)+" on "+std::string(channel->name)); return ACR_ALLOW; } else @@ -210,26 +213,26 @@ class ModuleOverride : public Module if (!user->IsInvited(x)) { /* XXX - Ugly cast for a parameter that isn't used? :< - Om */ - chan->WriteChannelWithServ(Srv->GetServerName().c_str(), "NOTICE %s :%s invited himself into the channel", cname, user->nick); + chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s invited himself into the channel", cname, user->nick); } } - Srv->SendOpers("*** "+std::string(user->nick)+" used operoverride to bypass +i on "+std::string(cname)); + ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +i on "+std::string(cname)); return -1; } if ((chan->key[0]) && (CanOverride(user,"KEY"))) { if (NoisyOverride) - chan->WriteChannelWithServ(Srv->GetServerName().c_str(), "NOTICE %s :%s bypassed the channel key", cname, user->nick); - Srv->SendOpers("*** "+std::string(user->nick)+" used operoverride to bypass +k on "+std::string(cname)); + chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s bypassed the channel key", cname, user->nick); + ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +k on "+std::string(cname)); return -1; } - if ((chan->limit > 0) && (Srv->CountUsers(chan) >= chan->limit) && (CanOverride(user,"LIMIT"))) + if ((chan->limit > 0) && (chan->GetUserCounter() >= chan->limit) && (CanOverride(user,"LIMIT"))) { if (NoisyOverride) - chan->WriteChannelWithServ(Srv->GetServerName().c_str(), "NOTICE %s :%s passed through your channel limit", cname, user->nick); - Srv->SendOpers("*** "+std::string(user->nick)+" used operoverride to bypass +l on "+std::string(cname)); + chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s passed through your channel limit", cname, user->nick); + ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +l on "+std::string(cname)); return -1; }