diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/kike.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -923,6 +923,7 @@ enum IRC_ERR_NOTEXTTOSEND = 412, IRC_ERR_UNKNOWNCOMMAND = 421, IRC_ERR_NOMOTD = 422, + IRC_ERR_NOADMININFO = 423, IRC_ERR_NONICKNAMEGIVEN = 431, IRC_ERR_ERRONEOUSNICKNAME = 432, IRC_ERR_NICKNAMEINUSE = 433, @@ -1000,6 +1001,7 @@ static const char *g_default_replies[] = [IRC_ERR_NOTEXTTOSEND] = ":No text to send", [IRC_ERR_UNKNOWNCOMMAND] = "%s: Unknown command", [IRC_ERR_NOMOTD] = ":MOTD File is missing", + [IRC_ERR_NOADMININFO] = "%s :No administrative info available", [IRC_ERR_NONICKNAMEGIVEN] = ":No nickname given", [IRC_ERR_ERRONEOUSNICKNAME] = "%s :Erroneous nickname", [IRC_ERR_NICKNAMEINUSE] = "%s :Nickname is already in use", @@ -2129,6 +2131,14 @@ irc_handle_ison (const struct irc_message *msg, struct client *c) } static void +irc_handle_admin (const struct irc_message *msg, struct client *c) +{ + if (msg->params.len > 0 && !irc_is_this_me (c->ctx, msg->params.vector[0])) + RETURN_WITH_REPLY (c, IRC_ERR_NOSUCHSERVER, msg->params.vector[0]); + irc_send_reply (c, IRC_ERR_NOADMININFO, c->ctx->server_name); +} + +static void irc_handle_kill (const struct irc_message *msg, struct client *c) { if (msg->params.len < 2) @@ -2188,6 +2198,7 @@ irc_register_handlers (struct server_context *ctx) { "USERS", true, irc_handle_users }, { "SUMMON", true, irc_handle_summon }, { "AWAY", true, irc_handle_away }, + { "ADMIN", true, irc_handle_admin }, { "MODE", true, irc_handle_mode }, { "PRIVMSG", true, irc_handle_privmsg }, |