X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_showwhois.cpp;h=c8b4f6219fcc2eab2ec66bea320333bf02e580fb;hb=3cf993500544c2157992650da2487bfa89be405d;hp=63e02c76d39fcdea6ecd91b04ad8da56d5a1da28;hpb=7d93921aabd9c608821baec8a871aff844dfae49;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_showwhois.cpp b/src/modules/m_showwhois.cpp index 63e02c76d..c8b4f6219 100644 --- a/src/modules/m_showwhois.cpp +++ b/src/modules/m_showwhois.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * InspIRCd: (C) 2002-2010 InspIRCd Development Team * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see @@ -20,7 +20,7 @@ class SeeWhois : public ModeHandler { public: - SeeWhois(Module* Creator, bool IsOpersOnly) : ModeHandler(Creator, 'W', PARAM_NONE, MODETYPE_USER) + SeeWhois(Module* Creator, bool IsOpersOnly) : ModeHandler(Creator, "showwhois", 'W', PARAM_NONE, MODETYPE_USER) { oper = IsOpersOnly; } @@ -53,6 +53,7 @@ class WhoisNoticeCmd : public Command public: WhoisNoticeCmd(Module* Creator) : Command(Creator,"WHOISNOTICE", 1) { + flags_needed = FLAG_SERVERONLY; } void HandleFast(User* dest, User* src) @@ -65,9 +66,10 @@ class WhoisNoticeCmd : public Command CmdResult Handle(const std::vector ¶meters, User *user) { User* dest = ServerInstance->FindNick(parameters[0]); + User* source = ServerInstance->FindNick(parameters[1]); - if (IS_LOCAL(dest)) - HandleFast(dest, user); + if (IS_LOCAL(dest) && source) + HandleFast(dest, source); return CMD_SUCCESS; } @@ -81,9 +83,9 @@ class ModuleShowwhois : public Module public: - ModuleShowwhois(InspIRCd* Me) : cmd(this) + ModuleShowwhois() : cmd(this) { - ConfigReader conf(ServerInstance); + ConfigReader conf; bool OpersOnly = conf.ReadFlag("showwhois", "opersonly", "yes", 0); ShowWhoisFromOpers = conf.ReadFlag("showwhois", "showfromopers", "yes", 0); @@ -97,21 +99,20 @@ class ModuleShowwhois : public Module ~ModuleShowwhois() { - ServerInstance->Modes->DelMode(sw); delete sw; } - virtual Version GetVersion() + Version GetVersion() { - return Version("Allows opers to set +W to see when a user uses WHOIS on them",VF_COMMON|VF_VENDOR,API_VERSION); + return Version("Allows opers to set +W to see when a user uses WHOIS on them",VF_OPTCOMMON|VF_VENDOR); } - virtual void OnWhois(User* source, User* dest) + void OnWhois(User* source, User* dest) { if (!dest->IsModeSet('W') || source == dest) return; - if (!ShowWhoisFromOpers && (IS_OPER(source) != IS_OPER(dest))) + if (!ShowWhoisFromOpers && (!IS_OPER(source) != !IS_OPER(dest))) return; if (IS_LOCAL(dest)) @@ -124,6 +125,7 @@ class ModuleShowwhois : public Module params.push_back(dest->server); params.push_back("WHOISNOTICE"); params.push_back(dest->uuid); + params.push_back(source->uuid); ServerInstance->PI->SendEncapsulatedData(params); } }