Add opername to snomask, remote connect wallops, and as prefix to server jupes in form of nick(opername) new function get_client_name_and_opername() add in s_misc.c mirrored after get_client_name() which can return either nick/server or nick[ident@ip] diff -r 88bee4681da2 include/client.h --- a/include/client.h +++ b/include/client.h @@ -809,6 +809,7 @@ #define IPV6USERBITS 64 extern const char* get_client_name(const struct Client* sptr, int showip); +extern const char* get_client_name_and_opername(const struct Client* sptr); extern const char* client_get_default_umode(const struct Client* sptr); extern int client_get_ping(const struct Client* local_client); extern void client_drop_sendq(struct Connection* con); diff -r 88bee4681da2 ircd/channel.c --- a/ircd/channel.c +++ b/ircd/channel.c @@ -1917,8 +1917,8 @@ if (mbuf->mb_dest & MODEBUF_DEST_HACK4) sendto_opmask_butone(0, SNO_HACK4, "HACK(4): %s MODE %s %s%s%s%s%s%s " "[%Tu]", - cli_name(feature_bool(FEAT_HIS_SNOTICES) ? - mbuf->mb_source : app_source), + feature_bool(FEAT_HIS_SNOTICES) ? + get_client_name_and_opername(mbuf->mb_source) : cli_name(app_source), mbuf->mb_channel->chname, rembuf_i ? "-" : "", rembuf, addbuf_i ? "+" : "", addbuf, remstr, addstr, diff -r 88bee4681da2 ircd/gline.c --- a/ircd/gline.c +++ b/ircd/gline.c @@ -567,7 +567,7 @@ SNO_AUTO, "%s adding %s%s %s for %s%s%s%s%s, expiring at " "%Tu: %s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), (flags & GLINE_ACTIVE) ? "" : "deactivated ", (flags & GLINE_LOCAL) ? "local" : "global", @@ -642,7 +642,7 @@ sendto_opmask_butone(0, SNO_GLINE, "%s activating global %s for %s%s%s%s%s, " "expiring at %Tu: %s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), GlineIsBadChan(gline) ? "BADCHAN" : "GLINE", GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : gline->gl_nick, @@ -715,7 +715,7 @@ sendto_opmask_butone(0, SNO_GLINE, "%s %s %s for %s%s%s%s%s, expiring at %Tu: " "%s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), msg, GlineIsBadChan(gline) ? "BADCHAN" : "GLINE", GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : gline->gl_nick, @@ -919,7 +919,7 @@ /* All right, inform ops... */ sendto_opmask_butone(0, SNO_GLINE, "%s modifying global %s for %s%s%s%s%s:%s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : cli_name((cli_user(sptr))->server), + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), GlineIsBadChan(gline) ? "BADCHAN" : "GLINE", GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : gline->gl_nick, GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : "!", @@ -966,7 +966,7 @@ /* Inform ops and log it */ sendto_opmask_butone(0, SNO_GLINE, "%s removing local %s for %s%s%s%s%s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : cli_name((cli_user(sptr))->server), + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), GlineIsBadChan(gline) ? "BADCHAN" : "GLINE", GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : gline->gl_nick, GlineIsBadChan(gline)|GlineIsRealName(gline) ? "" : "!", diff -r 88bee4681da2 ircd/jupe.c --- a/ircd/jupe.c +++ b/ircd/jupe.c @@ -156,7 +156,7 @@ sendto_opmask_butone(0, SNO_NETWORK, "%s adding %sJUPE for %s, expiring at " "%Tu: %s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), flags & JUPE_LOCAL ? "local " : "", server, expire + TSoffset, reason); @@ -211,7 +211,7 @@ sendto_opmask_butone(0, SNO_NETWORK, "%s activating JUPE for %s, expiring " "at %Tu: %s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), jupe->ju_server, jupe->ju_expire + TSoffset, jupe->ju_reason); @@ -264,7 +264,7 @@ sendto_opmask_butone(0, SNO_NETWORK, "%s %s JUPE for %s, expiring at %Tu: " "%s", (feature_bool(FEAT_HIS_SNOTICES) || IsServer(sptr)) ? - cli_name(sptr) : + get_client_name_and_opername(sptr) : cli_name((cli_user(sptr))->server), JupeIsLocal(jupe) ? "removing local" : "deactivating", jupe->ju_server, jupe->ju_expire + TSoffset, diff -r 88bee4681da2 ircd/m_connect.c --- a/ircd/m_connect.c +++ b/ircd/m_connect.c @@ -197,7 +197,7 @@ sendwallto_group_butone(&me, WALL_WALLOPS, 0, "Remote CONNECT %s %s from %s", aconf->name, parv[2] ? parv[2] : "", - get_client_name(sptr, HIDE_IP)); + get_client_name_and_opername(sptr)); log_write(LS_NETWORK, L_INFO, 0, "CONNECT From %C : %s %s", sptr, aconf->name, parv[2] ? parv[2] : ""); diff -r 88bee4681da2 ircd/m_join.c --- a/ircd/m_join.c +++ b/ircd/m_join.c @@ -242,8 +242,8 @@ } /* send accountability notice */ if (err) - sendto_opmask_butone(0, SNO_HACK4, "OPER JOIN: %C JOIN %H " - "(overriding +%c)", sptr, chptr, err); + sendto_opmask_butone(0, SNO_HACK4, "OPER JOIN: %s JOIN %H " + "(overriding +%c)", get_client_name_and_opername(sptr), chptr, err); err = 0; } diff -r 88bee4681da2 ircd/m_jupe.c --- a/ircd/m_jupe.c +++ b/ircd/m_jupe.c @@ -193,7 +193,7 @@ struct Jupe *ajupe; unsigned int flags = 0; time_t expire_off; - char *server = parv[1], *target = 0, *reason; + char *server = parv[1], *target = 0, reason[BUFSIZE]; if (parc < 2) { if (!HasPriv(sptr, PRIV_ROUTEINFO)) @@ -214,12 +214,12 @@ if (parc == 4) { expire_off = atoi(parv[2]); - reason = parv[3]; + ircd_snprintf(0, reason, sizeof(reason), "%s: %s", cli_user(sptr)->opername, parv[3]); flags |= JUPE_LOCAL; } else if (parc > 4) { target = parv[2]; expire_off = atoi(parv[3]); - reason = parv[4]; + ircd_snprintf(0, reason, sizeof(reason), "%s: %s", cli_user(sptr)->opername, parv[4]); } else return need_more_params(sptr, "JUPE"); diff -r 88bee4681da2 ircd/m_kill.c --- a/ircd/m_kill.c +++ b/ircd/m_kill.c @@ -127,7 +127,7 @@ */ sendto_opmask_butone(0, snomask, "Received KILL message for %s from %s Path: %s!%s %s", - get_client_name(victim, SHOW_IP), cli_name(sptr), + get_client_name(victim, SHOW_IP), get_client_name_and_opername(sptr), inpath, path, msg); log_write_kill(victim, sptr, inpath, path, msg); diff -r 88bee4681da2 ircd/m_oper.c --- a/ircd/m_oper.c +++ b/ircd/m_oper.c @@ -192,9 +192,9 @@ send_umode_out(cptr, sptr, &old_mode, HasPriv(sptr, PRIV_PROPAGATE), 0); send_reply(sptr, RPL_YOUREOPER); - sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (%c) as %s", - parv[0], cli_user(sptr)->realusername, cli_sockhost(sptr), - IsOper(sptr) ? 'O' : 'o', cli_user(sptr)->opername); + sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (%c)", + get_client_name_and_opername(sptr), cli_user(sptr)->realusername, cli_sockhost(sptr), + IsOper(sptr) ? 'O' : 'o'); log_write(LS_OPER, L_INFO, 0, "OPER (%s) by (%#R)", name, sptr); } diff -r 88bee4681da2 ircd/m_rehash.c --- a/ircd/m_rehash.c +++ b/ircd/m_rehash.c @@ -121,8 +121,8 @@ } send_reply(sptr, RPL_REHASHING, configfile); - sendto_opmask_butone(0, SNO_OLDSNO, "%C is rehashing Server config file", - sptr); + sendto_opmask_butone(0, SNO_OLDSNO, "%s is rehashing Server config file", + get_client_name_and_opername(sptr)); log_write(LS_SYSTEM, L_INFO, 0, "REHASH From %#C", sptr); diff -r 88bee4681da2 ircd/m_sethost.c --- a/ircd/m_sethost.c +++ b/ircd/m_sethost.c @@ -195,7 +195,7 @@ if (freeform) { sendto_opmask_butone(0, SNO_OLDSNO, - "%C SETHOST %s%s%s (freeform)", sptr, + "%s SETHOST %s%s%s (freeform)", get_client_name_and_opername(sptr), user ? user : "", user ? "@" : "", host); log_write(LS_SETHOST, L_NOTICE, LOG_NOSNOTICE, diff -r 88bee4681da2 ircd/m_settime.c --- a/ircd/m_settime.c +++ b/ircd/m_settime.c @@ -177,7 +177,7 @@ else /* tell opers about time change */ { sendto_opmask_butone(0, SNO_OLDSNO, "SETTIME from %s, clock is set %ld " - "seconds %s", cli_name(sptr), (dt < 0) ? -dt : dt, + "seconds %s", get_client_name_and_opername(sptr), (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards"); /* Apply time change... */ TSoffset -= dt; @@ -252,7 +252,7 @@ else /* tell opers about time change */ { sendto_opmask_butone(0, SNO_OLDSNO, "SETTIME from %s, clock is set %ld " - "seconds %s", cli_name(sptr), (dt < 0) ? -dt : dt, + "seconds %s", get_client_name_and_opername(sptr), (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards"); TSoffset -= dt; /* apply time change */ if (IsUser(sptr)) /* let user know what we did */ diff -r 88bee4681da2 ircd/s_misc.c --- a/ircd/s_misc.c +++ b/ircd/s_misc.c @@ -172,6 +172,20 @@ return nbuf; } +/** Return the name of the client and the opername for accountability purposes + * in snomask and other places. + * @param sptr Client to operate on. + * @return Either cli_name(\a sptr) or a static buffer. + */ +const char* get_client_name_and_opername(const struct Client* sptr) { + static char nbuf[NICKLEN + 1 + ACCOUNTLEN + 2]; + + if (!IsUser(sptr) || !cli_user(sptr)->opername) + return cli_name(sptr); + ircd_snprintf(0, nbuf, sizeof(nbuf), "%s(%s)", cli_name(sptr), cli_user(sptr)->opername); + return nbuf; +} + /** * Exit one client, local or remote. Assuming for local client that * all dependents already have been removed, and socket is closed. @@ -474,7 +488,7 @@ (cli_user(killer)->server == victim || cli_user(killer)->server == cli_serv(victim)->up) ? "Local" : "Remote", - get_client_name(killer, HIDE_IP), + get_client_name_and_opername(killer), cli_name(cli_user(killer)->server)); else if (killer != &me && cli_serv(victim)->up != killer) sendto_opmask_butone(0, SNO_OLDSNO, "Received SQUIT %s from %s :", diff -r 88bee4681da2 ircd/s_user.c --- a/ircd/s_user.c +++ b/ircd/s_user.c @@ -1476,9 +1476,9 @@ /* notify my operators a user has OPERed on a remote server */ if (!MyConnect(sptr)) { - sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (O) as %s on %s", - cli_name(sptr), cli_user(sptr)->realusername, cli_user(sptr)->realhost, - cli_user(sptr)->opername ? cli_user(sptr)->opername : "", cli_name(cli_user(sptr)->server)); + sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (O) on %s", + get_client_name_and_opername(sptr), cli_user(sptr)->realusername, cli_user(sptr)->realhost, + cli_name(cli_user(sptr)->server)); } } @@ -1491,9 +1491,8 @@ if (FlagHas(&setflags, FLAG_LOCOP) && !IsLocOp(sptr)) { /* notify my operators a local operator has deOPERed */ - sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (o) as %s", - cli_name(sptr), cli_user(sptr)->realusername, cli_sockhost(sptr), - cli_user(sptr)->opername); + sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (o)", + get_client_name_and_opername(sptr), cli_user(sptr)->realusername, cli_sockhost(sptr)); } if (FlagHas(&setflags, FLAG_OPER) && !IsOper(sptr)) { @@ -1503,13 +1502,12 @@ /* notify my operators an operator has deOPERed on the network */ if (MyConnect(sptr)) { - sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (O) as %s", - cli_name(sptr), cli_user(sptr)->realusername, cli_sockhost(sptr), - cli_user(sptr)->opername ? cli_user(sptr)->opername : ""); + sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (O)", + get_client_name_and_opername(sptr), cli_user(sptr)->realusername, cli_sockhost(sptr)); } else { - sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (O) as %s on %s", - cli_name(sptr), cli_user(sptr)->realusername, cli_user(sptr)->realhost, - cli_user(sptr)->opername ? cli_user(sptr)->opername : "", cli_name(cli_user(sptr)->server)); + sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is no longer operator (O) on %s", + get_client_name_and_opername(sptr), cli_user(sptr)->realusername, cli_user(sptr)->realhost, + cli_name(cli_user(sptr)->server)); } client_set_privs(sptr, NULL); /* will clear propagate privilege */