X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fwhois.cpp;h=7ef79aa3ffdec2311fb18b9ebf8013781f2ba356;hb=16c80276ea6cba0d36da6f79a0fe7004b0e6f0ea;hp=29056644679b82621b2ec37005a3b4b3c4d195d0;hpb=de25d946733f774e3a5b53a58438a9c92af0acbe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/whois.cpp b/src/whois.cpp index 290566446..7ef79aa3f 100644 --- a/src/whois.cpp +++ b/src/whois.cpp @@ -1,16 +1,22 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2009 Daniel De Graaf * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * --------------------------------------------------- + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include "inspircd.h" void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned long idle, const char* nick) @@ -22,15 +28,19 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon } std::string cl = dest->ChannelList(user, false); + const ServerConfig::OperSpyWhoisState state = user->HasPrivPermission("users/auspex") ? ServerInstance->Config->OperSpyWhois : ServerConfig::SPYWHOIS_NONE; + + if (state == ServerConfig::SPYWHOIS_SINGLEMSG) + cl.append(dest->ChannelList(user, true)); + + user->SplitChanList(dest,cl); - if (cl.length()) - user->SplitChanList(dest,cl); - if (IS_OPER(user) && ServerInstance->Config->OperSpyWhois) + if (state == ServerConfig::SPYWHOIS_SPLITMSG) { std::string scl = dest->ChannelList(user, true); if (scl.length()) { - this->SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str()); + SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str()); user->SplitChanList(dest,scl); } } @@ -53,7 +63,7 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon if (this->Config->GenericOper) this->SendWhoisLine(user, dest, 313, "%s %s :is an IRC operator",user->nick.c_str(), dest->nick.c_str()); else - this->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper[0]) ? "an" : "a"),irc::Spacify(dest->oper.c_str()), this->Config->Network.c_str()); + this->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper->name[0]) ? "an" : "a"),dest->oper->NameStr(), this->Config->Network.c_str()); } if (user == dest || user->HasPrivPermission("users/auspex"))