]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_whois.cpp
core_privmsg: respect the exemption list when sending $* messages.
[user/henk/code/inspircd.git] / src / coremods / core_whois.cpp
index 8f09396b295aae20e22ee6206832aef0e3951ba2..0db634810535598cc61a7294ec0aa08885be8eb2 100644 (file)
@@ -88,8 +88,14 @@ class CommandWhois : public SplitCommand
        void SendChanList(WhoisContextImpl& whois);
 
  public:
+        /** If true then all opers are shown with a generic 'is an IRC operator' line rather than the oper type. */
+       bool genericoper;
+
+        /** How to handle private/secret channels in the WHOIS response. */
        SplitWhoisState splitwhois;
 
+
+
        /** Constructor for whois.
         */
        CommandWhois(Module* parent)
@@ -211,7 +217,7 @@ void CommandWhois::DoWhois(LocalUser* user, User* dest, time_t signon, unsigned
 {
        WhoisContextImpl whois(user, dest, lineevprov);
 
-       whois.SendLine(RPL_WHOISUSER, dest->ident, dest->GetDisplayedHost(), '*', dest->fullname);
+       whois.SendLine(RPL_WHOISUSER, dest->ident, dest->GetDisplayedHost(), '*', dest->GetRealName());
        if (whois.IsSelfWhois() || user->HasPrivPermission("users/auspex"))
        {
                whois.SendLine(RPL_WHOISHOST, InspIRCd::Format("is connecting from %s@%s %s", dest->ident.c_str(), dest->GetRealHost().c_str(), dest->GetIPString().c_str()));
@@ -235,7 +241,7 @@ void CommandWhois::DoWhois(LocalUser* user, User* dest, time_t signon, unsigned
 
        if (dest->IsOper())
        {
-               if (ServerInstance->Config->GenericOper)
+               if (genericoper)
                        whois.SendLine(RPL_WHOISOPERATOR, "is an IRC operator");
                else
                        whois.SendLine(RPL_WHOISOPERATOR, InspIRCd::Format("is %s %s on %s", (strchr("AEIOUaeiou",dest->oper->name[0]) ? "an" : "a"), dest->oper->name.c_str(), ServerInstance->Config->Network.c_str()));
@@ -351,14 +357,19 @@ class CoreModWhois : public Module
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("options");
                const std::string splitwhois = tag->getString("splitwhois", "no");
+               SplitWhoisState newsplitstate;
                if (stdalgo::string::equalsci(splitwhois, "no"))
-                       cmd.splitwhois = SPLITWHOIS_NONE;
+                       newsplitstate = SPLITWHOIS_NONE;
                else if (stdalgo::string::equalsci(splitwhois, "split"))
-                       cmd.splitwhois = SPLITWHOIS_SPLIT;
+                       newsplitstate = SPLITWHOIS_SPLIT;
                else if (stdalgo::string::equalsci(splitwhois, "splitmsg"))
-                       cmd.splitwhois = SPLITWHOIS_SPLITMSG;
+                       newsplitstate = SPLITWHOIS_SPLITMSG;
                else
                        throw ModuleException(splitwhois + " is an invalid <security:splitwhois> value, at " + tag->getTagLocation()); 
+
+               ConfigTag* security = ServerInstance->Config->ConfValue("security");
+               cmd.genericoper = security->getBool("genericoper");
+               cmd.splitwhois = newsplitstate;
        }
 
        Version GetVersion() CXX11_OVERRIDE