]> jfr.im git - solanum.git/blobdiff - modules/m_etrace.c
extensions/umode_hide_idle_time: mask times for hidden sources (#373)
[solanum.git] / modules / m_etrace.c
index fded420b06834ab86c9d16bc817c69f219d13a9a..abeedc897710f39fc4e1e750c6c4ed110fc900e6 100644 (file)
@@ -123,7 +123,10 @@ mo_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                                                target_p->servptr->name,
                                                get_id(target_p, target_p));
                                else
+                               {
                                        do_single_etrace(source_p, target_p);
+                                       sendto_one_numeric(source_p, RPL_ENDOFTRACE, form_str(RPL_ENDOFTRACE), target_p->name);
+                               }
                        }
                        else
                                sendto_one_numeric(source_p, ERR_NOSUCHNICK,
@@ -167,7 +170,7 @@ do_etrace(struct Client *source_p, int ipv4, int ipv6)
 
                sendto_one(source_p, form_str(RPL_ETRACE),
                           me.name, source_p->name,
-                          IsOper(target_p) ? "Oper" : "User",
+                          SeesOper(target_p, source_p) ? "Oper" : "User",
                           get_client_class(target_p),
                           target_p->name, target_p->username, target_p->host,
                           show_ip(source_p, target_p) ? target_p->sockhost : "255.255.255.255",
@@ -206,14 +209,14 @@ do_single_etrace(struct Client *source_p, struct Client *target_p)
        if(!show_ip(source_p, target_p))
                sendto_one(source_p, form_str(RPL_ETRACEFULL),
                                me.name, source_p->name,
-                               IsOper(target_p) ? "Oper" : "User",
+                               SeesOper(target_p, source_p) ? "Oper" : "User",
                                get_client_class(target_p),
                                target_p->name, target_p->username, target_p->host,
                                "255.255.255.255", "<hidden> <hidden>", target_p->info);
        else
                sendto_one(source_p, form_str(RPL_ETRACEFULL),
                                me.name, source_p->name,
-                               IsOper(target_p) ? "Oper" : "User",
+                               SeesOper(target_p, source_p) ? "Oper" : "User",
                                get_client_class(target_p),
                                target_p->name, target_p->username,
                                target_p->host, target_p->sockhost,
@@ -278,7 +281,7 @@ m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
 
                sendto_one(source_p, form_str(RPL_ETRACE),
                                me.name, source_p->name,
-                               IsOper(target_p) ? "Oper" : "User",
+                               SeesOper(target_p, source_p) ? "Oper" : "User",
                                /* class field -- pretend its server.. */
                                target_p->servptr->name,
                                target_p->name, target_p->username, target_p->host,
@@ -323,7 +326,7 @@ match_masktrace(struct Client *source_p, rb_dlink_list *list,
 
                        sendto_one(source_p, form_str(RPL_ETRACE),
                                me.name, source_p->name,
-                               IsOper(target_p) ? "Oper" : "User",
+                               SeesOper(target_p, source_p) ? "Oper" : "User",
                                /* class field -- pretend its server.. */
                                target_p->servptr->name,
                                target_p->name, target_p->username, target_p->host,
@@ -337,20 +340,10 @@ mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so
        const char *parv[])
 {
        char *name, *username, *hostname, *gecos;
-       const char *mask;
-       int operspy = 0;
 
-       mask = parv[1];
        name = LOCAL_COPY(parv[1]);
        collapse(name);
 
-       if(IsOperSpy(source_p) && parv[1][0] == '!')
-       {
-               name++;
-               mask++;
-               operspy = 1;
-       }
-
        if(parc > 2 && !EmptyString(parv[2]))
        {
                gecos = LOCAL_COPY(parv[2]);
@@ -380,21 +373,6 @@ mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so
                return;
        }
 
-       if(operspy) {
-               if (!ConfigFileEntry.operspy_dont_care_user_info)
-               {
-                       char buf[512];
-                       rb_strlcpy(buf, mask, sizeof(buf));
-                       if(!EmptyString(gecos)) {
-                               rb_strlcat(buf, " ", sizeof(buf));
-                               rb_strlcat(buf, gecos, sizeof(buf));
-                       }
-
-                       report_operspy(source_p, "MASKTRACE", buf);
-               }
-               match_masktrace(source_p, &global_client_list, username, hostname, name, gecos);
-       } else
-               match_masktrace(source_p, &lclient_list, username, hostname, name, gecos);
-
+       match_masktrace(source_p, &global_client_list, username, hostname, name, gecos);
        sendto_one_numeric(source_p, RPL_ENDOFTRACE, form_str(RPL_ENDOFTRACE), me.name);
 }