WHOIS: show RPL_WHOISHOST_MSG to all IRC Ops in the network

Not only show RPL_WHOISHOST_MSG to local IRC opreators, but show
it to all IRC operators in the network. And don't show it to anybody
if the "more privacy" configuration option is enabled.

This closes bug #134.
This commit is contained in:
Alexander Barton 2012-10-07 00:05:25 +02:00
parent de2fa78d92
commit 161adbb1aa
1 changed files with 12 additions and 10 deletions

View File

@ -1156,17 +1156,19 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
Client_ID(from), Client_ID(c)))
return DISCONNECTED;
/* Local client and requester is the user itself or an IRC Op? */
if (Client_Conn(c) > NONE &&
(from == c || (!Conf_MorePrivacy && Client_HasMode(from, 'o'))) &&
!IRC_WriteStrClient(from, RPL_WHOISMODES_MSG, Client_ID(from),
Client_ID(c), Client_Modes(c)))
return DISCONNECTED;
if (Client_Conn(c) > NONE && (Client_OperByMe(from) || from == c) &&
!IRC_WriteStrClient(from, RPL_WHOISHOST_MSG, Client_ID(from),
Client_ID(c), Client_Hostname(c),
Conn_GetIPAInfo(Client_Conn(c))))
return DISCONNECTED;
(from == c || (!Conf_MorePrivacy && Client_HasMode(from, 'o')))) {
/* Client hostname */
if (!IRC_WriteStrClient(from, RPL_WHOISHOST_MSG,
Client_ID(from), Client_ID(c), Client_Hostname(c),
Conn_GetIPAInfo(Client_Conn(c))))
return DISCONNECTED;
/* Client modes */
if (!IRC_WriteStrClient(from, RPL_WHOISMODES_MSG,
Client_ID(from), Client_ID(c), Client_Modes(c)))
return DISCONNECTED;
}
/* Idle and signon time (local clients only!) */
if (!Conf_MorePrivacy && Client_Conn(c) > NONE &&