Better support for the KILL command

This commit is contained in:
2016-09-23 22:50:30 +02:00
parent 26f94d2459
commit 92a4d4b5a7
2 changed files with 37 additions and 0 deletions

View File

@@ -6460,6 +6460,20 @@ irc_handle_kick (struct server *s, const struct irc_message *msg)
}
}
static void
irc_handle_kill (struct server *s, const struct irc_message *msg)
{
if (!msg->prefix || msg->params.len < 2)
return;
const char *target = msg->params.vector[0];
const char *comment = msg->params.vector[1];
if (irc_is_this_us (s, target))
log_server_status (s, s->buffer,
"You've been killed by #n (#m)", msg->prefix, comment);
}
static void
irc_handle_mode (struct server *s, const struct irc_message *msg)
{
@@ -6959,6 +6973,7 @@ static struct irc_handler g_irc_handlers[] =
{ "INVITE", irc_handle_invite },
{ "JOIN", irc_handle_join },
{ "KICK", irc_handle_kick },
{ "KILL", irc_handle_kill },
{ "MODE", irc_handle_mode },
{ "NICK", irc_handle_nick },
{ "NOTICE", irc_handle_notice },
@@ -11014,6 +11029,20 @@ handle_command_whowas (struct handler_args *a)
return true;
}
static bool
handle_command_kill (struct handler_args *a)
{
if (!*a->arguments)
return false;
char *target = cut_word (&a->arguments);
if (*a->arguments)
irc_send (a->s, "KILL %s :%s", target, a->arguments);
else
irc_send (a->s, "KILL %s", target);
return true;
}
static bool
handle_command_nick (struct handler_args *a)
{
@@ -11209,6 +11238,9 @@ g_command_handlers[] =
{ "oper", "Authenticate as an IRC operator",
"<name> <password>",
handle_command_oper, HANDLER_SERVER },
{ "kill", "Kick another user from the server",
"<user> <comment>",
handle_command_kill, HANDLER_SERVER },
{ "stats", "Query server statistics",
"[<query> [<target>]]",
handle_command_stats, HANDLER_SERVER },