X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_silence.cpp;h=e60694470a0e0f5b76bb214a28eb94d6084f2caf;hb=b7716ed57704b2b2bcc665a590aecc8f02de631d;hp=0ec40a92f4a07995f68cecbb128d70c3c10080f9;hpb=b9e11915a976daaf790ebc763aff56e19fd49e0f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index 0ec40a92f..e60694470 100644 --- a/src/modules/m_silence.cpp +++ b/src/modules/m_silence.cpp @@ -57,6 +57,17 @@ static int SILENCE_CNOTICE = 0x0010; /* t channel notices */ static int SILENCE_ALL = 0x0020; /* a all, (pcint) */ static int SILENCE_EXCLUDE = 0x0040; /* x exclude this pattern */ +enum +{ + // From ircu? + RPL_SILELIST = 271, + RPL_ENDOFSILELIST = 272, + + // InspIRCd-specific. + RPL_UNSILENCED = 950, + RPL_SILENCED = 951, + ERR_NOTSILENCED = 952 +}; class CommandSVSSilence : public Command { @@ -67,7 +78,7 @@ class CommandSVSSilence : public Command TRANSLATE3(TR_NICK, TR_TEXT, TR_TEXT); } - CmdResult Handle (const std::vector& parameters, User *user) + CmdResult Handle(const std::vector& parameters, User* user) CXX11_OVERRIDE { /* * XXX: thought occurs to me @@ -91,7 +102,7 @@ class CommandSVSSilence : public Command return CMD_SUCCESS; } - RouteDescriptor GetRouting(User* user, const std::vector& parameters) + RouteDescriptor GetRouting(User* user, const std::vector& parameters) CXX11_OVERRIDE { return ROUTE_OPT_UCAST(parameters[0]); } @@ -110,9 +121,9 @@ class CommandSilence : public Command syntax = "{[+|-] }"; } - CmdResult Handle (const std::vector& parameters, User *user) + CmdResult Handle(const std::vector& parameters, User* user) CXX11_OVERRIDE { - if (!parameters.size()) + if (parameters.empty()) { // no parameters, show the current silence list. silencelist* sl = ext.get(user); @@ -122,14 +133,14 @@ class CommandSilence : public Command for (silencelist::const_iterator c = sl->begin(); c != sl->end(); c++) { std::string decomppattern = DecompPattern(c->second); - user->WriteNumeric(271, user->nick, c->first, decomppattern); + user->WriteNumeric(RPL_SILELIST, user->nick, c->first, decomppattern); } } - user->WriteNumeric(272, "End of Silence List"); + user->WriteNumeric(RPL_ENDOFSILELIST, "End of Silence List"); return CMD_SUCCESS; } - else if (parameters.size() > 0) + else { // one or more parameters, add or delete entry from the list (only the first parameter is used) std::string mask(parameters[0], 1); @@ -167,11 +178,11 @@ class CommandSilence : public Command for (silencelist::iterator i = sl->begin(); i != sl->end(); i++) { // search through for the item - irc::string listitem = i->first.c_str(); - if (listitem == mask && i->second == pattern) + const std::string& listitem = i->first; + if ((irc::equals(listitem, mask)) && (i->second == pattern)) { sl->erase(i); - user->WriteNumeric(950, user->nick, InspIRCd::Format("Removed %s %s from silence list", mask.c_str(), decomppattern.c_str())); + user->WriteNumeric(RPL_UNSILENCED, user->nick, InspIRCd::Format("Removed %s %s from silence list", mask.c_str(), decomppattern.c_str())); if (!sl->size()) { ext.unset(user); @@ -180,7 +191,7 @@ class CommandSilence : public Command } } } - user->WriteNumeric(952, user->nick, InspIRCd::Format("%s %s does not exist on your silence list", mask.c_str(), decomppattern.c_str())); + user->WriteNumeric(ERR_NOTSILENCED, user->nick, InspIRCd::Format("%s %s does not exist on your silence list", mask.c_str(), decomppattern.c_str())); } else if (action == '+') { @@ -193,17 +204,17 @@ class CommandSilence : public Command } if (sl->size() > maxsilence) { - user->WriteNumeric(952, user->nick, "Your silence list is full"); + user->WriteNumeric(ERR_NOTSILENCED, user->nick, "Your silence list is full"); return CMD_FAILURE; } std::string decomppattern = DecompPattern(pattern); for (silencelist::iterator n = sl->begin(); n != sl->end(); n++) { - irc::string listitem = n->first.c_str(); - if (listitem == mask && n->second == pattern) + const std::string& listitem = n->first; + if ((irc::equals(listitem, mask)) && (n->second == pattern)) { - user->WriteNumeric(952, user->nick, InspIRCd::Format("%s %s is already on your silence list", mask.c_str(), decomppattern.c_str())); + user->WriteNumeric(ERR_NOTSILENCED, user->nick, InspIRCd::Format("%s %s is already on your silence list", mask.c_str(), decomppattern.c_str())); return CMD_FAILURE; } } @@ -215,7 +226,7 @@ class CommandSilence : public Command { sl->push_back(silenceset(mask,pattern)); } - user->WriteNumeric(951, user->nick, InspIRCd::Format("Added %s %s to silence list", mask.c_str(), decomppattern.c_str())); + user->WriteNumeric(RPL_SILENCED, user->nick, InspIRCd::Format("Added %s %s to silence list", mask.c_str(), decomppattern.c_str())); return CMD_SUCCESS; } } @@ -302,10 +313,7 @@ class ModuleSilence : public Module { ConfigTag* tag = ServerInstance->Config->ConfValue("silence"); - maxsilence = tag->getInt("maxentries", 32); - if (!maxsilence) - maxsilence = 32; - + maxsilence = tag->getUInt("maxentries", 32, 1); ExemptULine = tag->getBool("exemptuline", true); } @@ -332,16 +340,16 @@ class ModuleSilence : public Module } } - ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE + ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) CXX11_OVERRIDE { - if (target_type == TYPE_USER && IS_LOCAL(((User*)dest))) + if (target.type == MessageTarget::TYPE_USER && IS_LOCAL(target.Get())) { - return MatchPattern((User*)dest, user, ((msgtype == MSG_PRIVMSG) ? SILENCE_PRIVATE : SILENCE_NOTICE)); + return MatchPattern(target.Get(), user, ((details.type == MSG_PRIVMSG) ? SILENCE_PRIVATE : SILENCE_NOTICE)); } - else if (target_type == TYPE_CHANNEL) + else if (target.type == MessageTarget::TYPE_CHANNEL) { - Channel* chan = (Channel*)dest; - BuildExemptList(msgtype, chan, user, exempt_list); + Channel* chan = target.Get(); + BuildExemptList(details.type, chan, user, details.exemptions); } return MOD_RES_PASSTHRU; }