* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
class ModuleShowwhois : public Module
{
-
+ bool ShowWhoisFromOpers;
SeeWhois* sw;
public:
ModuleShowwhois(InspIRCd* Me) : Module(Me)
{
ConfigReader conf(ServerInstance);
- bool OpersOnly = conf.ReadFlag("showwhois", "opersonly", 0, true);
+ bool OpersOnly = conf.ReadFlag("showwhois", "opersonly", "yes", 0);
+ ShowWhoisFromOpers = conf.ReadFlag("showwhois", "showfromopers", "yes", 0);
sw = new SeeWhois(ServerInstance, OpersOnly);
if (!ServerInstance->Modes->AddMode(sw))
{
if ((dest->IsModeSet('W')) && (source != dest))
{
+ if (!ShowWhoisFromOpers && IS_OPER(source))
+ return;
+
std::string wmsg = "*** ";
- wmsg += source->nick + "(" + source->ident + "@";
+ wmsg += source->nick + " (" + source->ident + "@";
- if (dest->HasPrivPermission("users/auspex"))
+ /* XXX HasPrivPermission doesn't work correctly for remote users */
+ if (IS_LOCAL(dest) && dest->HasPrivPermission("users/auspex"))
{
wmsg += source->host;
}
}
else
{
- std::string msg = std::string(":") + dest->server + " NOTICE " + dest->nick + " :" + wmsg;
+ std::string msg = std::string("::") + dest->server + " NOTICE " + dest->nick + " :" + wmsg;
ServerInstance->PI->PushToClient(dest, msg);
}
}