Streamline effect of "MorePrivacy" option (WHOIS, LIST)
authorAlexander Barton <alex@barton.de>
Wed, 13 May 2015 20:42:51 +0000 (22:42 +0200)
committerAlexander Barton <alex@barton.de>
Wed, 13 May 2015 20:42:51 +0000 (22:42 +0200)
- Update documentation in ngircd.conf(5)
- LIST: Don't hide channels for IRC Ops when "MorePrivacy" is in effect
- WHOIS: Don't hide IP addresses/hostnames when "MorePrivacy" is in effect

Closes #198

man/ngircd.conf.5.tmpl
src/ngircd/irc-channel.c
src/ngircd/irc-info.c

index 0d57f90..bde91b1 100644 (file)
@@ -291,8 +291,9 @@ Default: none.
 .TP
 \fBMorePrivacy\fR (boolean)
 This will cause ngIRCd to censor user idle time, logon time as well as the
-part/quit messages (that are sometimes used to inform everyone about which
-client software is being used). WHOWAS requests are also silently ignored.
+PART/QUIT messages (that are sometimes used to inform everyone about which
+client software is being used). WHOWAS requests are also silently ignored,
+and NAMES output doesn't list any clients for non-members.
 This option is most useful when ngIRCd is being used together with
 anonymizing software such as TOR or I2P and one does not wish to make it
 too easy to collect statistics on the users.
index aa4abe3..c7a3e1b 100644 (file)
@@ -608,9 +608,7 @@ IRC_LIST( CLIENT *Client, REQUEST *Req )
                                /* Gotcha! */
                                if (!Channel_HasMode(chan, 's')
                                    || Channel_IsMemberOf(chan, from)
-                                   || (!Conf_MorePrivacy
-                                       && Client_HasMode(Client, 'o')
-                                       && Client_Conn(Client) > NONE))
+                                   || Client_HasMode(from, 'o'))
                                {
                                        if ((Conf_MaxListSize > 0)
                                            && IRC_CheckListTooBig(from, count,
index ba7a2b7..1bbaf57 100644 (file)
@@ -407,7 +407,7 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
 
        /* 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')))) {
+           (from == c || Client_HasMode(from, 'o'))) {
                /* Client hostname */
                if (!IRC_WriteStrClient(from, RPL_WHOISHOST_MSG,
                                        Client_ID(from), Client_ID(c),