X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/c88cdb00957d1bafae4587343b5ab7df14b75f8b..8097430a810ac1535fe5304f74991b16ff58b064:/modules/m_etrace.c?ds=sidebyside diff --git a/modules/m_etrace.c b/modules/m_etrace.c index ac45625..9441a0e 100644 --- a/modules/m_etrace.c +++ b/modules/m_etrace.c @@ -39,10 +39,9 @@ #include "hash.h" #include "common.h" #include "hash.h" -#include "irc_string.h" +#include "match.h" #include "ircd.h" #include "numeric.h" -#include "commio.h" #include "s_serv.h" #include "s_conf.h" #include "s_newconf.h" @@ -53,7 +52,7 @@ static int mo_etrace(struct Client *, struct Client *, int, const char **); static int me_etrace(struct Client *, struct Client *, int, const char **); -static int mo_chantrace(struct Client *, struct Client *, int, const char **); +static int m_chantrace(struct Client *, struct Client *, int, const char **); static int mo_masktrace(struct Client *, struct Client *, int, const char **); struct Message etrace_msgtab = { @@ -62,7 +61,7 @@ struct Message etrace_msgtab = { }; struct Message chantrace_msgtab = { "CHANTRACE", 0, 0, 0, MFLG_SLOW, - {mg_ignore, mg_not_oper, mg_ignore, mg_ignore, mg_ignore, {mo_chantrace, 2}} + {mg_ignore, {m_chantrace, 2}, mg_ignore, mg_ignore, mg_ignore, {m_chantrace, 2}} }; struct Message masktrace_msgtab = { "MASKTRACE", 0, 0, 0, MFLG_SLOW, @@ -81,7 +80,6 @@ static const char *spoofed_sockhost = "0"; /* * m_etrace - * parv[0] = sender prefix * parv[1] = options [or target] * parv[2] = [target] */ @@ -92,7 +90,7 @@ mo_etrace(struct Client *client_p, struct Client *source_p, int parc, const char { if(!irccmp(parv[1], "-full")) do_etrace_full(source_p); -#ifdef IPV6 +#ifdef RB_IPV6 else if(!irccmp(parv[1], "-v6")) do_etrace(source_p, 0, 1); else if(!irccmp(parv[1], "-v4")) @@ -145,14 +143,14 @@ static void do_etrace(struct Client *source_p, int ipv4, int ipv6) { struct Client *target_p; - dlink_node *ptr; + rb_dlink_node *ptr; /* report all direct connections */ - DLINK_FOREACH(ptr, lclient_list.head) + RB_DLINK_FOREACH(ptr, lclient_list.head) { target_p = ptr->data; -#ifdef IPV6 +#ifdef RB_IPV6 if((!ipv4 && target_p->localClient->ip.ss_family == AF_INET) || (!ipv6 && target_p->localClient->ip.ss_family == AF_INET6)) continue; @@ -173,9 +171,9 @@ do_etrace(struct Client *source_p, int ipv4, int ipv6) static void do_etrace_full(struct Client *source_p) { - dlink_node *ptr; + rb_dlink_node *ptr; - DLINK_FOREACH(ptr, lclient_list.head) + RB_DLINK_FOREACH(ptr, lclient_list.head) { do_single_etrace(source_p, ptr->data); } @@ -214,14 +212,14 @@ do_single_etrace(struct Client *source_p, struct Client *target_p) } static int -mo_chantrace(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) +m_chantrace(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; struct Channel *chptr; struct membership *msptr; const char *sockhost; const char *name; - dlink_node *ptr; + rb_dlink_node *ptr; int operspy = 0; name = parv[1]; @@ -257,7 +255,7 @@ mo_chantrace(struct Client *client_p, struct Client *source_p, int parc, const c return 0; } - DLINK_FOREACH(ptr, chptr->members.head) + RB_DLINK_FOREACH(ptr, chptr->members.head) { msptr = ptr->data; target_p = msptr->client_p; @@ -283,53 +281,15 @@ mo_chantrace(struct Client *client_p, struct Client *source_p, int parc, const c } static void -match_masktrace(struct Client *source_p, dlink_list *list, +match_masktrace(struct Client *source_p, rb_dlink_list *list, const char *username, const char *hostname, const char *name, const char *gecos) { struct Client *target_p; - dlink_node *ptr; + rb_dlink_node *ptr; const char *sockhost; - char *mangle_gecos = NULL; - if(gecos != NULL) - { - if(strstr(gecos, "\\s")) - { - char *tmp = LOCAL_COPY(gecos); - char *orig = tmp; - char *new = tmp; - while(*orig) - { - if(*orig == '\\' && *(orig + 1) != '\0') - { - if(*(orig + 1) == 's') - { - *new++ = ' '; - orig += 2; - } - /* otherwise skip that and the escaped - * character after it, so we dont mistake - * \\s as \s --fl - */ - else - { - *new++ = *orig++; - *new++ = *orig++; - } - } - else - *new++ = *orig++; - } - - *new = '\0'; - mangle_gecos = LOCAL_COPY(tmp); - } - else - mangle_gecos = LOCAL_COPY(gecos); - } - - DLINK_FOREACH(ptr, list->head) + RB_DLINK_FOREACH(ptr, list->head) { target_p = ptr->data; if(!IsPerson(target_p)) @@ -350,7 +310,7 @@ match_masktrace(struct Client *source_p, dlink_list *list, if(name != NULL && !match(name, target_p->name)) continue; - if(mangle_gecos != NULL && !match_esc(mangle_gecos, target_p->info)) + if(gecos != NULL && !match_esc(gecos, target_p->info)) continue; sendto_one(source_p, form_str(RPL_ETRACE), @@ -416,10 +376,10 @@ mo_masktrace(struct Client *client_p, struct Client *source_p, int parc, if (!ConfigFileEntry.operspy_dont_care_user_info) { char buf[512]; - strlcpy(buf, mask, sizeof(buf)); + rb_strlcpy(buf, mask, sizeof(buf)); if(!EmptyString(gecos)) { - strlcat(buf, " ", sizeof(buf)); - strlcat(buf, gecos, sizeof(buf)); + rb_strlcat(buf, " ", sizeof(buf)); + rb_strlcat(buf, gecos, sizeof(buf)); } report_operspy(source_p, "MASKTRACE", buf);