X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/7baa37a9ef4c66708d7505dfda182339461232cf..ea41b24fd4807e3565bf5f8f293e2efc4c20b62d:/modules/m_etrace.c diff --git a/modules/m_etrace.c b/modules/m_etrace.c index 3821cecd..193d842b 100644 --- a/modules/m_etrace.c +++ b/modules/m_etrace.c @@ -28,8 +28,6 @@ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. - * - * $Id: m_etrace.c 3161 2007-01-25 07:23:01Z nenolod $ */ #include "stdinc.h" @@ -37,7 +35,6 @@ #include "hook.h" #include "client.h" #include "hash.h" -#include "common.h" #include "hash.h" #include "match.h" #include "ircd.h" @@ -52,10 +49,13 @@ #include "logger.h" #include "supported.h" -static int mo_etrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); -static int me_etrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); -static int m_chantrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); -static int mo_masktrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static const char etrace_desc[] = + "Provides enhanced tracing facilities to opers (ETRACE, CHANTRACE, and MASKTRACE)"; + +static void mo_etrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void me_etrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void m_chantrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void mo_masktrace(struct MsgBuf *, struct Client *, struct Client *, int, const char **); struct Message etrace_msgtab = { "ETRACE", 0, 0, 0, 0, @@ -85,7 +85,8 @@ _moddeinit(void) } mapi_clist_av1 etrace_clist[] = { &etrace_msgtab, &chantrace_msgtab, &masktrace_msgtab, NULL }; -DECLARE_MODULE_AV1(etrace, _modinit, _moddeinit, etrace_clist, NULL, NULL, "$Revision: 3161 $"); + +DECLARE_MODULE_AV2(etrace, _modinit, _moddeinit, etrace_clist, NULL, NULL, NULL, NULL, etrace_desc); static void do_etrace(struct Client *source_p, int ipv4, int ipv6); static void do_etrace_full(struct Client *source_p); @@ -99,19 +100,17 @@ static const char *spoofed_sockhost = "0"; * parv[1] = options [or target] * parv[2] = [target] */ -static int +static void mo_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { if(parc > 1 && !EmptyString(parv[1])) { if(!irccmp(parv[1], "-full")) do_etrace_full(source_p); -#ifdef RB_IPV6 else if(!irccmp(parv[1], "-v6")) do_etrace(source_p, 0, 1); else if(!irccmp(parv[1], "-v4")) do_etrace(source_p, 1, 0); -#endif else { struct Client *target_p = find_named_person(parv[1]); @@ -133,17 +132,15 @@ mo_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc } else do_etrace(source_p, 1, 1); - - return 0; } -static int +static void me_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; if(!IsOper(source_p) || parc < 2 || EmptyString(parv[1])) - return 0; + return; /* we cant etrace remote clients.. we shouldnt even get sent them */ if((target_p = find_person(parv[1])) && MyClient(target_p)) @@ -151,8 +148,6 @@ me_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc sendto_one_numeric(source_p, RPL_ENDOFTRACE, form_str(RPL_ENDOFTRACE), target_p ? target_p->name : parv[1]); - - return 0; } static void @@ -166,15 +161,13 @@ do_etrace(struct Client *source_p, int ipv4, int ipv6) { target_p = ptr->data; -#ifdef RB_IPV6 - if((!ipv4 && target_p->localClient->ip.ss_family == AF_INET) || - (!ipv6 && target_p->localClient->ip.ss_family == AF_INET6)) + if((!ipv4 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET) || + (!ipv6 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET6)) continue; -#endif 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", @@ -213,21 +206,21 @@ 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", " ", 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, target_p->localClient->fullcaps, target_p->info); } -static int +static void m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; @@ -249,7 +242,7 @@ m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou { sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, source_p->name, "CHANTRACE"); - return 0; + return; } } @@ -257,7 +250,7 @@ m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou { sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL, form_str(ERR_NOSUCHCHANNEL), name); - return 0; + return; } /* dont report operspys for nonexistant channels. */ @@ -268,7 +261,7 @@ m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou { sendto_one_numeric(source_p, ERR_NOTONCHANNEL, form_str(ERR_NOTONCHANNEL), chptr->chname); - return 0; + return; } RB_DLINK_FOREACH(ptr, chptr->members.head) @@ -285,7 +278,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, @@ -293,7 +286,6 @@ m_chantrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou } sendto_one_numeric(source_p, RPL_ENDOFTRACE, form_str(RPL_ENDOFTRACE), me.name); - return 0; } static void @@ -331,7 +323,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, @@ -340,7 +332,7 @@ match_masktrace(struct Client *source_p, rb_dlink_list *list, } } -static int +static void mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { @@ -370,7 +362,7 @@ mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so if((hostname = strchr(name, '@')) == NULL) { sendto_one_notice(source_p, ":Invalid parameters"); - return 0; + return; } *hostname++ = '\0'; @@ -385,7 +377,7 @@ mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so if(EmptyString(username) || EmptyString(hostname)) { sendto_one_notice(source_p, ":Invalid parameters"); - return 0; + return; } if(operspy) { @@ -405,5 +397,4 @@ mo_masktrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so match_masktrace(source_p, &lclient_list, username, hostname, name, gecos); sendto_one_numeric(source_p, RPL_ENDOFTRACE, form_str(RPL_ENDOFTRACE), me.name); - return 0; }