X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_silence.cpp;h=d9ddb8c77a82b1c3dcb5e79f082fa031a3e0c83f;hb=f1712e6f0b58098250791ffc60815fa3fc462607;hp=7524acf569c26abbc444ed468998b3336811bb64;hpb=262703207a8af5a3318e1c4235c630e09c6861e6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index 7524acf56..d9ddb8c77 100644 --- a/src/modules/m_silence.cpp +++ b/src/modules/m_silence.cpp @@ -12,7 +12,6 @@ */ #include "inspircd.h" -#include "wildcard.h" /* $ModDesc: Provides support for the /SILENCE command */ @@ -56,12 +55,12 @@ class CommandSVSSilence : public Command public: CommandSVSSilence(InspIRCd* Instance) : Command(Instance,"SVSSILENCE", 0, 2) { - this->source = "m_watch.so"; + this->source = "m_silence.so"; syntax = " {[+|-] }"; TRANSLATE3(TR_NICK, TR_TEXT, TR_END); /* we watch for a nick. not a UID. */ } - CmdResult Handle (const char* const* parameters, int pcnt, User *user) + CmdResult Handle (const std::vector& parameters, User *user) { /* * XXX: thought occurs to me @@ -72,16 +71,16 @@ class CommandSVSSilence : public Command */ if (!ServerInstance->ULine(user->server)) return CMD_FAILURE; - + User *u = ServerInstance->FindNick(parameters[0]); if (!u) return CMD_FAILURE; - + if (IS_LOCAL(u)) { - ServerInstance->Parser->CallHandler("SILENCE", ¶meters[1], 1, u); + ServerInstance->Parser->CallHandler("SILENCE", std::vector(++parameters.begin(), parameters.end()), u); } - + return CMD_SUCCESS; } }; @@ -97,9 +96,9 @@ class CommandSilence : public Command TRANSLATE3(TR_TEXT, TR_TEXT, TR_END); } - CmdResult Handle (const char* const* parameters, int pcnt, User *user) + CmdResult Handle (const std::vector& parameters, User *user) { - if (!pcnt) + if (!parameters.size()) { // no parameters, show the current silence list. // Use Extensible::GetExt to fetch the silence list @@ -110,32 +109,32 @@ class CommandSilence : public Command { for (silencelist::const_iterator c = sl->begin(); c != sl->end(); c++) { - user->WriteNumeric(271, "%s %s %s %s",user->nick, user->nick,c->first.c_str(), DecompPattern(c->second).c_str()); + user->WriteNumeric(271, "%s %s %s %s",user->nick.c_str(), user->nick.c_str(),c->first.c_str(), DecompPattern(c->second).c_str()); } } - user->WriteNumeric(272, "%s :End of Silence List",user->nick); + user->WriteNumeric(272, "%s :End of Silence List",user->nick.c_str()); return CMD_LOCALONLY; } - else if (pcnt > 0) + else if (parameters.size() > 0) { // one or more parameters, add or delete entry from the list (only the first parameter is used) - std::string mask = parameters[0] + 1; - char action = *parameters[0]; + std::string mask = parameters[0].substr(1); + char action = parameters[0][0]; // Default is private and notice so clients do not break int pattern = CompilePattern("pn"); // if pattern supplied, use it - if (pcnt > 1) { - pattern = CompilePattern(parameters[1]); + if (parameters.size() > 1) { + pattern = CompilePattern(parameters[1].c_str()); } - + if (!mask.length()) { // 'SILENCE +' or 'SILENCE -', assume *!*@* mask = "*!*@*"; } - + ModeParser::CleanMask(mask); if (action == '-') @@ -153,7 +152,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, user->nick, 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(pattern).c_str()); if (!sl->size()) { delete sl; @@ -163,7 +162,7 @@ class CommandSilence : public Command } } } - user->WriteNumeric(952, "%s %s :%s %s does not exist on your silence list",user->nick, user->nick, 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(pattern).c_str()); } else if (action == '+') { @@ -178,7 +177,7 @@ class CommandSilence : public Command } if (sl->size() > maxsilence) { - user->WriteNumeric(952, "%s %s :Your silence list is full",user->nick, user->nick); + user->WriteNumeric(952, "%s %s :Your silence list is full",user->nick.c_str(), user->nick.c_str()); return CMD_FAILURE; } for (silencelist::iterator n = sl->begin(); n != sl->end(); n++) @@ -186,7 +185,7 @@ class CommandSilence : public Command 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, user->nick, 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(pattern).c_str()); return CMD_FAILURE; } } @@ -198,7 +197,7 @@ class CommandSilence : public Command { sl->push_back(silenceset(mask,pattern)); } - user->WriteNumeric(951, "%s %s :Added %s %s to silence list",user->nick, user->nick, 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(pattern).c_str()); return CMD_SUCCESS; } } @@ -219,7 +218,7 @@ class CommandSilence : public Command case 'c': p |= SILENCE_CHANNEL; break; - case 'i': + case 'i': p |= SILENCE_INVITE; break; case 'n': @@ -271,7 +270,7 @@ class ModuleSilence : public Module CommandSVSSilence *cmdsvssilence; unsigned int maxsilence; public: - + ModuleSilence(InspIRCd* Me) : Module(Me), maxsilence(32) { @@ -381,13 +380,17 @@ class ModuleSilence : public Module int MatchPattern(User* dest, User* source, int pattern) { + /* Server source */ + if (!source || !dest) + return 1; + silencelist* sl; dest->GetExt("silence_list", sl); if (sl) { for (silencelist::const_iterator c = sl->begin(); c != sl->end(); c++) { - if (((((c->second & pattern) > 0)) || ((c->second & SILENCE_ALL) > 0)) && (ServerInstance->MatchText(source->GetFullHost(), c->first))) + if (((((c->second & pattern) > 0)) || ((c->second & SILENCE_ALL) > 0)) && (InspIRCd::Match(source->GetFullHost(), c->first))) return !(((c->second & SILENCE_EXCLUDE) > 0)); } } @@ -397,10 +400,10 @@ class ModuleSilence : public Module virtual ~ModuleSilence() { } - + virtual Version GetVersion() { - return Version(1, 2, 0, 1, VF_COMMON | VF_VENDOR, API_VERSION); + return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION); } };