X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_silence.cpp;h=e60694470a0e0f5b76bb214a28eb94d6084f2caf;hb=b7716ed57704b2b2bcc665a590aecc8f02de631d;hp=edcc7746896f81a633edb211a9579a454086eb28;hpb=91e0af0fc4889f20d2f63426f8fe379674fc0393;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index edcc77468..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 { @@ -112,7 +123,7 @@ class CommandSilence : public Command 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); @@ -171,7 +182,7 @@ class CommandSilence : public Command 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,7 +204,7 @@ 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; } @@ -203,7 +214,7 @@ class CommandSilence : public Command 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; }