X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/550e851c5eee26dad124e3caa6e60b07ea575d5a..742ddc8fac87a5dd713110df6f2a76f56d34b00b:/modules/m_trace.c diff --git a/modules/m_trace.c b/modules/m_trace.c index fb0fdb92..1baf2bd7 100644 --- a/modules/m_trace.c +++ b/modules/m_trace.c @@ -27,7 +27,6 @@ #include "hook.h" #include "client.h" #include "hash.h" -#include "common.h" #include "hash.h" #include "match.h" #include "ircd.h" @@ -205,6 +204,9 @@ m_trace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_ if(!doall && wilds && (match(tname, target_p->name) == 0)) continue; + if(!SeesOper(target_p, source_p)) + continue; + report_this_status(source_p, target_p); } @@ -234,14 +236,14 @@ m_trace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_ target_p = ptr->data; /* dont show invisible users to remote opers */ - if(IsInvisible(target_p) && dow && !MyConnect(source_p) && !IsOper(target_p)) + if(IsInvisible(target_p) && dow && !MyConnect(source_p) && !SeesOper(target_p, source_p)) continue; if(!doall && wilds && !match(tname, target_p->name)) continue; /* remote opers may not see invisible normal users */ - if(dow && !MyConnect(source_p) && !IsOper(target_p) && + if(dow && !MyConnect(source_p) && !SeesOper(target_p, source_p) && IsInvisible(target_p)) continue; @@ -380,8 +382,8 @@ report_this_status(struct Client *source_p, struct Client *target_p) case STAT_CLIENT: { sendto_one_numeric(source_p, - IsOper(target_p) ? RPL_TRACEOPERATOR : RPL_TRACEUSER, - IsOper(target_p) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER), + SeesOper(target_p, source_p) ? RPL_TRACEOPERATOR : RPL_TRACEUSER, + SeesOper(target_p, source_p) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER), class_name, name, show_ip(source_p, target_p) ? ip : empty_sockhost, (unsigned long)(rb_current_time() - target_p->localClient->lasttime),