X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/cbe4e1ba31fb4580a6367a2c89d43f88162ea13b..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/m_signon.c?ds=sidebyside diff --git a/modules/m_signon.c b/modules/m_signon.c index b0503434..79480d94 100644 --- a/modules/m_signon.c +++ b/modules/m_signon.c @@ -48,7 +48,7 @@ #include "monitor.h" #include "s_stats.h" #include "snomask.h" -#include "irc_string.h" +#include "match.h" #include "s_user.h" static int me_svslogin(struct Client *, struct Client *, int, const char **); @@ -152,7 +152,11 @@ me_svslogin(struct Client *client_p, struct Client *source_p, int valid = 0; if(!(source_p->flags & FLAGS_SERVICE)) + { + sendto_realops_snomask(SNO_GENERAL, L_ALL, + "Non-service server %s attempting to execute services-only command SVSLOGIN", source_p->name); return 0; + } if((target_p = find_client(parv[1])) == NULL) return 0; @@ -213,8 +217,11 @@ me_svslogin(struct Client *client_p, struct Client *source_p, exist_p->flags |= FLAGS_KILLED; kill_client_serv_butone(NULL, exist_p, "%s (Nickname regained by services)", me.name); + sendto_realops_snomask(SNO_SKILL, L_ALL, + "Nick collision due to SVSLOGIN on %s", + nick); - snprintf(buf, sizeof(buf), "Killed (%s (Nickname regained by services))", + rb_snprintf(buf, sizeof(buf), "Killed (%s (Nickname regained by services))", me.name); exit_client(NULL, exist_p, &me, buf); }else if((exist_p = find_client(nick)) && IsUnknown(exist_p) && exist_p != target_p) { @@ -431,9 +438,6 @@ send_signon(struct Client *client_p, struct Client *target_p, sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s SIGNON %s %s %s %ld %s", use_id(target_p), nick, user, host, (long) target_p->tsinfo, *login ? login : "0"); - sendto_server(client_p, NULL, NOCAPS, CAP_TS6, ":%s SIGNON %s %s %s %ld %s", - target_p->name, nick, user, host, - (long) target_p->tsinfo, *login ? login : "0"); strcpy(target_p->user->suser, login);