From 1b0553da107f9bd138670db5d360e272691db125 Mon Sep 17 00:00:00 2001 From: Justin Date: Sun, 9 Aug 2015 09:13:42 -0700 Subject: [PATCH] Add support for IRC VERSION query --- commands.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/commands.go b/commands.go index 20a92de..f0c50d3 100644 --- a/commands.go +++ b/commands.go @@ -890,3 +890,17 @@ func TimeHandler(message *irc.Message, client *Client) { m := irc.Message{Prefix: client.Server.Prefix, Command: irc.RPL_TIME, Params: []string{client.Nickname, client.Server.Config.Name}, Trailing: time.Now().Format(time.UnixDate)} client.Encode(&m) } + +// VersionHandler is a specialized CommandHandler to respond to channel IRC VERSION commands from a client +// Implemented according to RFC 1459 Section 4.3.1 and RFC 2812 Section 3.4.3 +func VersionHandler(message *irc.Message, client *Client) { + if len(message.Params) != 0 { + m := irc.Message{Prefix: client.Server.Prefix, Command: irc.ERR_NOSUCHSERVER, Params: []string{client.Nickname, message.Params[0]}, Trailing: "No such server"} + client.Encode(&m) + return + } + + p := fmt.Sprintf("%s.%s %s", client.Server.Config.Version, "", client.Server.Config.Name) + m := irc.Message{Prefix: client.Server.Prefix, Command: irc.RPL_VERSION, Params: []string{client.Nickname, p}} + client.Encode(&m) +}