else if(aconf->status & CONF_KILL)
{
if(ConfigFileEntry.kline_with_reason)
- {
sendto_one(client_p,
form_str(ERR_YOUREBANNEDCREEP),
- me.name, client_p->name, aconf->passwd);
- }
+ me.name, client_p->name,
+ get_user_ban_reason(aconf));
add_reject(client_p, aconf->user, aconf->host);
return (BANNED_CLIENT);
}
*port = (int) aconf->port;
}
+char *
+get_user_ban_reason(struct ConfItem *aconf)
+{
+ static char reasonbuf[BUFSIZE];
+
+ if (aconf->flags & CONF_FLAGS_TEMPORARY &&
+ (aconf->status == CONF_KILL || aconf->status == CONF_DLINE))
+ rb_snprintf(reasonbuf, sizeof reasonbuf,
+ "Temporary %c-line %d min. - ",
+ aconf->status == CONF_DLINE ? 'D' : 'K',
+ (aconf->hold - aconf->created) / 60);
+ else
+ reasonbuf[0] = '\0';
+ if (aconf->passwd)
+ rb_strlcat(reasonbuf, aconf->passwd, sizeof reasonbuf);
+ else
+ rb_strlcat(reasonbuf, "No Reason", sizeof reasonbuf);
+ if (aconf->created)
+ {
+ rb_strlcat(reasonbuf, " (", sizeof reasonbuf);
+ rb_strlcat(reasonbuf, smalldate(aconf->created),
+ sizeof reasonbuf);
+ rb_strlcat(reasonbuf, ")", sizeof reasonbuf);
+ }
+ return reasonbuf;
+}
+
void
get_printable_kline(struct Client *source_p, struct ConfItem *aconf,
char **host, char **reason,
static char null[] = "<NULL>";
*host = EmptyString(aconf->host) ? null : aconf->host;
- *reason = EmptyString(aconf->passwd) ? null : aconf->passwd;
*user = EmptyString(aconf->user) ? null : aconf->user;
+ *reason = get_user_ban_reason(aconf);
if(EmptyString(aconf->spasswd) || !IsOper(source_p))
*oper_reason = NULL;