X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/4562c604897f18f08e1bee993d455d9c1774f9ad..8ee12f0c437eec8aa42af7b350c7e2a3ccafedbc:/modules/core/m_nick.c?ds=sidebyside diff --git a/modules/core/m_nick.c b/modules/core/m_nick.c index 352de580..9db4a770 100644 --- a/modules/core/m_nick.c +++ b/modules/core/m_nick.c @@ -318,6 +318,7 @@ ms_nick(struct Client *client_p, struct Client *source_p, int parc, const char * { struct Client *target_p; time_t newts = 0; + char squitreason[100]; if(parc != 9) { @@ -326,7 +327,10 @@ ms_nick(struct Client *client_p, struct Client *source_p, int parc, const char * "with %d arguments (expecting 9)", client_p->name, parc); ilog(L_SERVER, "Excess parameters (%d) for command 'NICK' from %s.", parc, client_p->name); - exit_client(client_p, client_p, client_p, "Excess parameters to NICK command"); + rb_snprintf(squitreason, sizeof squitreason, + "Excess parameters (%d) to %s command, expecting %d", + parc, "NICK", 9); + exit_client(client_p, client_p, client_p, squitreason); return 0; } @@ -404,6 +408,7 @@ ms_uid(struct Client *client_p, struct Client *source_p, int parc, const char *p { struct Client *target_p; time_t newts = 0; + char squitreason[120]; newts = atol(parv[3]); @@ -414,7 +419,10 @@ ms_uid(struct Client *client_p, struct Client *source_p, int parc, const char *p "with %d arguments (expecting 10)", client_p->name, parc); ilog(L_SERVER, "Excess parameters (%d) for command 'UID' from %s.", parc, client_p->name); - exit_client(client_p, client_p, client_p, "Excess parameters to UID command"); + rb_snprintf(squitreason, sizeof squitreason, + "Excess parameters (%d) to %s command, expecting %d", + parc, "UID", 10); + exit_client(client_p, client_p, client_p, squitreason); return 0; } @@ -425,23 +433,22 @@ ms_uid(struct Client *client_p, struct Client *source_p, int parc, const char *p return 0; } - if(!clean_username(parv[5]) || !clean_host(parv[6])) + if(!clean_uid(parv[8])) { - ServerStats.is_kill++; - sendto_realops_snomask(SNO_DEBUG, L_ALL, - "Bad user@host: %s@%s From: %s(via %s)", - parv[5], parv[6], source_p->name, client_p->name); - sendto_one(client_p, ":%s KILL %s :%s (Bad user@host)", me.id, parv[8], me.name); + rb_snprintf(squitreason, sizeof squitreason, + "Invalid UID %s for nick %s on %s", + parv[8], parv[1], source_p->name); + exit_client(client_p, client_p, client_p, squitreason); return 0; } - if(!clean_uid(parv[8])) + if(!clean_username(parv[5]) || !clean_host(parv[6])) { ServerStats.is_kill++; sendto_realops_snomask(SNO_DEBUG, L_ALL, - "Bad UID: %s From: %s(via %s)", - parv[8], source_p->name, client_p->name); - sendto_one(client_p, ":%s KILL %s :%s (Bad UID)", me.id, parv[8], me.name); + "Bad user@host: %s@%s From: %s(via %s)", + parv[5], parv[6], source_p->name, client_p->name); + sendto_one(client_p, ":%s KILL %s :%s (Bad user@host)", me.id, parv[8], me.name); return 0; } @@ -492,6 +499,7 @@ ms_euid(struct Client *client_p, struct Client *source_p, int parc, const char * { struct Client *target_p; time_t newts = 0; + char squitreason[120]; newts = atol(parv[3]); @@ -502,7 +510,10 @@ ms_euid(struct Client *client_p, struct Client *source_p, int parc, const char * "with %d arguments (expecting 12)", client_p->name, parc); ilog(L_SERVER, "Excess parameters (%d) for command 'EUID' from %s.", parc, client_p->name); - exit_client(client_p, client_p, client_p, "Excess parameters to EUID command"); + rb_snprintf(squitreason, sizeof squitreason, + "Excess parameters (%d) to %s command, expecting %d", + parc, "EUID", 12); + exit_client(client_p, client_p, client_p, squitreason); return 0; } @@ -513,23 +524,22 @@ ms_euid(struct Client *client_p, struct Client *source_p, int parc, const char * return 0; } - if(!clean_username(parv[5]) || !clean_host(parv[6])) + if(!clean_uid(parv[8])) { - ServerStats.is_kill++; - sendto_realops_snomask(SNO_DEBUG, L_ALL, - "Bad user@host: %s@%s From: %s(via %s)", - parv[5], parv[6], source_p->name, client_p->name); - sendto_one(client_p, ":%s KILL %s :%s (Bad user@host)", me.id, parv[8], me.name); + rb_snprintf(squitreason, sizeof squitreason, + "Invalid UID %s for nick %s on %s", + parv[8], parv[1], source_p->name); + exit_client(client_p, client_p, client_p, squitreason); return 0; } - if(!clean_uid(parv[8])) + if(!clean_username(parv[5]) || !clean_host(parv[6])) { ServerStats.is_kill++; sendto_realops_snomask(SNO_DEBUG, L_ALL, - "Bad UID: %s From: %s(via %s)", - parv[8], source_p->name, client_p->name); - sendto_one(client_p, ":%s KILL %s :%s (Bad UID)", me.id, parv[8], me.name); + "Bad user@host: %s@%s From: %s(via %s)", + parv[5], parv[6], source_p->name, client_p->name); + sendto_one(client_p, ":%s KILL %s :%s (Bad user@host)", me.id, parv[8], me.name); return 0; } @@ -801,8 +811,6 @@ change_local_nick(struct Client *client_p, struct Client *source_p, { sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s NICK %s :%ld", use_id(source_p), nick, (long) source_p->tsinfo); - sendto_server(client_p, NULL, NOCAPS, CAP_TS6, ":%s NICK %s :%ld", - source_p->name, nick, (long) source_p->tsinfo); } } @@ -862,8 +870,6 @@ change_remote_nick(struct Client *client_p, struct Client *source_p, { sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s NICK %s :%ld", use_id(source_p), nick, (long) source_p->tsinfo); - sendto_server(client_p, NULL, NOCAPS, CAP_TS6, ":%s NICK %s :%ld", - source_p->name, nick, (long) source_p->tsinfo); } } @@ -901,7 +907,7 @@ perform_nick_collides(struct Client *source_p, struct Client *client_p, /* if we dont have a ts, or their TS's are the same, kill both */ if(!newts || !target_p->tsinfo || (newts == target_p->tsinfo)) { - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick collision on %s(%s <- %s)(both %s)", target_p->name, target_p->from->name, client_p->name, action); @@ -964,12 +970,12 @@ perform_nick_collides(struct Client *source_p, struct Client *client_p, else { if(sameuser) - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick collision on %s(%s <- %s)(older %s)", target_p->name, target_p->from->name, client_p->name, action); else - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick collision on %s(%s <- %s)(newer %s)", target_p->name, target_p->from->name, client_p->name, action); @@ -1018,7 +1024,7 @@ perform_nickchange_collides(struct Client *source_p, struct Client *client_p, /* its a client changing nick and causing a collide */ if(!newts || !target_p->tsinfo || (newts == target_p->tsinfo) || !source_p->user) { - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick change collision from %s to %s(%s <- %s)(both %s)", source_p->name, target_p->name, target_p->from->name, client_p->name, action); @@ -1061,12 +1067,12 @@ perform_nickchange_collides(struct Client *source_p, struct Client *client_p, (!sameuser && newts > target_p->tsinfo)) { if(sameuser) - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick change collision from %s to %s(%s <- %s)(older %s)", source_p->name, target_p->name, target_p->from->name, client_p->name, action); else - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick change collision from %s to %s(%s <- %s)(newer %s)", source_p->name, target_p->name, target_p->from->name, client_p->name, action); @@ -1106,12 +1112,12 @@ perform_nickchange_collides(struct Client *source_p, struct Client *client_p, else { if(sameuser) - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick collision on %s(%s <- %s)(older %s)", target_p->name, target_p->from->name, client_p->name, action); else - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_SKILL, L_ALL, "Nick collision on %s(%s <- %s)(newer %s)", target_p->name, target_p->from->name, client_p->name, action); @@ -1327,8 +1333,6 @@ save_user(struct Client *client_p, struct Client *source_p, source_p->id, target_p->id, (long)target_p->tsinfo); sendto_server(client_p, NULL, CAP_TS6, CAP_SAVE, ":%s NICK %s :%ld", target_p->id, target_p->id, (long)SAVE_NICKTS); - sendto_server(client_p, NULL, NOCAPS, CAP_TS6, ":%s NICK %s :%ld", - target_p->name, target_p->id, (long)SAVE_NICKTS); if (!IsMe(client_p)) sendto_realops_snomask(SNO_SKILL, L_ALL, "Received SAVE message for %s from %s", @@ -1354,9 +1358,6 @@ static void bad_nickname(struct Client *client_p, const char *nick) sendto_server(NULL, NULL, CAP_TS6, NOCAPS, ":%s WALLOPS :Squitting %s because of bad nickname %s (NICKLEN mismatch?)", me.id, client_p->name, nick); - sendto_server(NULL, NULL, NOCAPS, CAP_TS6, - ":%s WALLOPS :Squitting %s because of bad nickname %s (NICKLEN mismatch?)", - me.name, client_p->name, nick); rb_snprintf(squitreason, sizeof squitreason, "Bad nickname introduced [%s]", nick);