X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/907468c485f837cb8442c32509c8efec8f3f43b1..df22ecbf7794404ec7bfaff0475ae52704a0ad98:/modules/m_kline.c diff --git a/modules/m_kline.c b/modules/m_kline.c index b14f0c3..2f88823 100644 --- a/modules/m_kline.c +++ b/modules/m_kline.c @@ -29,8 +29,7 @@ #include "class.h" #include "client.h" #include "common.h" -#include "irc_string.h" -#include "sprintf_irc.h" +#include "match.h" #include "ircd.h" #include "hostmask.h" #include "numeric.h" @@ -493,7 +492,7 @@ static void apply_kline(struct Client *source_p, struct ConfItem *aconf, const char *reason, const char *oper_reason, const char *current_date) { - add_conf_by_address(aconf->host, CONF_KILL, aconf->user, aconf); + add_conf_by_address(aconf->host, CONF_KILL, aconf->user, NULL, aconf); write_confitem(KLINE_TYPE, source_p, aconf->user, aconf->host, reason, oper_reason, current_date, 0); } @@ -568,7 +567,10 @@ find_user_host(struct Client *source_p, const char *userhost, char *luser, char * its a nick, which support was removed for. */ if(strchr(userhost, '.') == NULL && strchr(userhost, ':') == NULL) + { + sendto_one_notice(source_p, ":K-Line must be a user@host or host"); return 0; + } luser[0] = '*'; /* no @ found, assume its *@somehost */ luser[1] = '\0'; @@ -587,8 +589,9 @@ find_user_host(struct Client *source_p, const char *userhost, char *luser, char static int valid_user_host(struct Client *source_p, const char *luser, const char *lhost) { - /* # is invalid, as is '!' (n!u@h kline) */ - if(strchr(lhost, '#') || strchr(luser, '#') || strchr(luser, '!')) + /* # is invalid, as are '!' (n!u@h kline) and '@' (u@@h kline) */ + if(strchr(lhost, '#') || strchr(luser, '#') || strchr(luser, '!') || + strchr(lhost, '@')) { sendto_one_notice(source_p, ":Invalid K-Line"); return 0; @@ -713,7 +716,7 @@ already_placed_kline(struct Client *source_p, const char *luser, const char *lho else piphost = NULL; - aconf = find_conf_by_address(lhost, NULL, NULL, (struct sockaddr *)piphost, CONF_KILL, t, luser); + aconf = find_conf_by_address(lhost, NULL, NULL, (struct sockaddr *)piphost, CONF_KILL, t, luser, NULL); if (aconf != NULL) { /* The above was really a lookup of a single IP,