X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_silence.cpp;h=d1885269d04975ea035c302688338e4f5f8718fa;hb=551d687ec6d7ce44be35fae0dd7345fe73c4f63a;hp=089d599316dd277bb75dc6a437d271fe0905e787;hpb=fcacc8e0306382bc3f938073092c3729d77e2b41;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index 089d59931..d1885269d 100644 --- a/src/modules/m_silence.cpp +++ b/src/modules/m_silence.cpp @@ -110,6 +110,7 @@ class CommandSilence : public Command CommandSilence(Module* Creator, unsigned int &max) : Command(Creator, "SILENCE", 0), maxsilence(max), ext("silence_list", Creator) { + allow_empty_last_param = false; syntax = "{[+|-] }"; TRANSLATE3(TR_TEXT, TR_TEXT, TR_END); } @@ -125,7 +126,8 @@ class CommandSilence : public Command { for (silencelist::const_iterator c = sl->begin(); c != sl->end(); c++) { - user->WriteNumeric(271, "%s %s %s %s",user->nick.c_str(), user->nick.c_str(),c->first.c_str(), DecompPattern(c->second).c_str()); + std::string decomppattern = DecompPattern(c->second); + user->WriteNumeric(271, "%s %s %s %s",user->nick.c_str(), user->nick.c_str(),c->first.c_str(), decomppattern.c_str()); } } user->WriteNumeric(272, "%s :End of Silence List",user->nick.c_str()); @@ -161,6 +163,7 @@ class CommandSilence : public Command if (action == '-') { + std::string decomppattern = DecompPattern(pattern); // fetch their silence list silencelist* sl = ext.get(user); // does it contain any entries and does it exist? @@ -173,7 +176,7 @@ class CommandSilence : public Command if (listitem == mask && i->second == pattern) { sl->erase(i); - user->WriteNumeric(950, "%s %s :Removed %s %s from silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), DecompPattern(pattern).c_str()); + user->WriteNumeric(950, "%s %s :Removed %s %s from silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), decomppattern.c_str()); if (!sl->size()) { ext.unset(user); @@ -182,7 +185,7 @@ class CommandSilence : public Command } } } - user->WriteNumeric(952, "%s %s :%s %s does not exist on your silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), DecompPattern(pattern).c_str()); + user->WriteNumeric(952, "%s %s :%s %s does not exist on your silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), decomppattern.c_str()); } else if (action == '+') { @@ -198,12 +201,14 @@ class CommandSilence : public Command user->WriteNumeric(952, "%s %s :Your silence list is full",user->nick.c_str(), user->nick.c_str()); 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) { - user->WriteNumeric(952, "%s %s :%s %s is already on your silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), DecompPattern(pattern).c_str()); + user->WriteNumeric(952, "%s %s :%s %s is already on your silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), decomppattern.c_str()); return CMD_FAILURE; } } @@ -215,7 +220,7 @@ class CommandSilence : public Command { sl->push_back(silenceset(mask,pattern)); } - user->WriteNumeric(951, "%s %s :Added %s %s to silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), DecompPattern(pattern).c_str()); + user->WriteNumeric(951, "%s %s :Added %s %s to silence list",user->nick.c_str(), user->nick.c_str(), mask.c_str(), decomppattern.c_str()); return CMD_SUCCESS; } } @@ -294,28 +299,31 @@ class ModuleSilence : public Module ModuleSilence() : maxsilence(32), cmdsilence(this, maxsilence), cmdsvssilence(this) + { + } + + void init() { OnRehash(NULL); - ServerInstance->AddCommand(&cmdsilence); - ServerInstance->AddCommand(&cmdsvssilence); - ServerInstance->Extensions.Register(&cmdsilence.ext); + ServerInstance->Modules->AddService(cmdsilence); + ServerInstance->Modules->AddService(cmdsvssilence); + ServerInstance->Modules->AddService(cmdsilence.ext); Implementation eventlist[] = { I_OnRehash, I_On005Numeric, I_OnUserPreNotice, I_OnUserPreMessage, I_OnUserPreInvite }; - ServerInstance->Modules->Attach(eventlist, this, 5); + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } void OnRehash(User* user) { - ConfigReader Conf; - maxsilence = Conf.ReadInteger("silence", "maxentries", 0, true); + maxsilence = ServerInstance->Config->ConfValue("showwhois")->getInt("maxentries", 32); if (!maxsilence) maxsilence = 32; } - void On005Numeric(std::string &output) + void On005Numeric(std::map& tokens) { - // we don't really have a limit... - output = output + " ESILENCE SILENCE=" + ConvToStr(maxsilence); + tokens["ESILENCE"]; + tokens["SILENCE"] = ConvToStr(maxsilence); } void OnBuildExemptList(MessageType message_type, Channel* chan, User* sender, char status, CUList &exempt_list, const std::string &text) @@ -385,10 +393,6 @@ class ModuleSilence : public Module return MOD_RES_PASSTHRU; } - ~ModuleSilence() - { - } - Version GetVersion() { return Version("Provides support for the /SILENCE command", VF_OPTCOMMON | VF_VENDOR);