diff options
-rw-r--r-- | include/whowas.h | 1 | ||||
-rw-r--r-- | modules/m_who.c | 2 | ||||
-rw-r--r-- | modules/m_whois.c | 9 | ||||
-rw-r--r-- | modules/m_whowas.c | 2 | ||||
-rw-r--r-- | src/whowas.c | 1 |
5 files changed, 9 insertions, 6 deletions
diff --git a/include/whowas.h b/include/whowas.h index 42fa7e4..af19196 100644 --- a/include/whowas.h +++ b/include/whowas.h @@ -33,6 +33,7 @@ struct Whowas { int hashv; + int shide; time_t logoff; char name[NICKLEN + 1]; char username[USERLEN + 1]; diff --git a/modules/m_who.c b/modules/m_who.c index 961bb01..ece4563 100644 --- a/modules/m_who.c +++ b/modules/m_who.c @@ -63,7 +63,7 @@ do_who(struct Client *source_p, struct Client *target_p, HasUMode(target_p, UMODE_OPER) && !HasUMode(target_p, UMODE_HIDDEN) ? "*" : "", op_flags); - if (ConfigServerHide.hide_servers) + if (ConfigServerHide.hide_servers || IsHidden(target_p->servptr)) sendto_one(source_p, form_str(RPL_WHOREPLY), me.name, source_p->name, (chname) ? (chname) : "*", target_p->username, target_p->host, diff --git a/modules/m_whois.c b/modules/m_whois.c index a7716fe..5e9a080 100644 --- a/modules/m_whois.c +++ b/modules/m_whois.c @@ -96,15 +96,16 @@ whois_person(struct Client *source_p, struct Client *target_p) sendto_one(source_p, "%s", buf); } - if (HasUMode(source_p, UMODE_OPER) || !ConfigServerHide.hide_servers || target_p == source_p) + if ((ConfigServerHide.hide_servers || IsHidden(target_p->servptr)) && + !(HasUMode(source_p, UMODE_OPER) || target_p == source_p)) sendto_one(source_p, form_str(RPL_WHOISSERVER), me.name, source_p->name, target_p->name, - target_p->servptr->name, target_p->servptr->info); + ConfigServerHide.hidden_name, + ServerInfo.network_desc); else sendto_one(source_p, form_str(RPL_WHOISSERVER), me.name, source_p->name, target_p->name, - ConfigServerHide.hidden_name, - ServerInfo.network_desc); + target_p->servptr->name, target_p->servptr->info); if (HasUMode(target_p, UMODE_REGISTERED)) sendto_one(source_p, form_str(RPL_WHOISREGNICK), diff --git a/modules/m_whowas.c b/modules/m_whowas.c index 4a70b55..6becef5 100644 --- a/modules/m_whowas.c +++ b/modules/m_whowas.c @@ -67,7 +67,7 @@ whowas_do(struct Client *client_p, struct Client *source_p, temp->username, temp->hostname, temp->realname); - if (ConfigServerHide.hide_servers && !HasUMode(source_p, UMODE_OPER)) + if ((temp->shide || ConfigServerHide.hide_servers) && !HasUMode(source_p, UMODE_OPER)) sendto_one(source_p, form_str(RPL_WHOISSERVER), me.name, source_p->name, temp->name, ServerInfo.network_name, myctime(temp->logoff)); diff --git a/src/whowas.c b/src/whowas.c index 326d7d3..7e0b288 100644 --- a/src/whowas.c +++ b/src/whowas.c @@ -64,6 +64,7 @@ whowas_add_history(struct Client *client_p, const int online) } who->hashv = strhash(client_p->name); + who->shide = IsHidden(client_p->servptr) != 0; who->logoff = CurrentTime; strlcpy(who->name, client_p->name, sizeof(who->name)); |