From ffa830cf041770773717bc4658b07b46604c7930 Mon Sep 17 00:00:00 2001 From: Les De Ridder Date: Wed, 22 Mar 2017 17:33:56 +0100 Subject: [PATCH] Implement TIME --- source/ircd/connection.d | 14 ++++++++++++++ source/ircd/server.d | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/source/ircd/connection.d b/source/ircd/connection.d index 78b0fb4..054fdf9 100644 --- a/source/ircd/connection.d +++ b/source/ircd/connection.d @@ -169,6 +169,10 @@ class Connection if(!registered) sendErrNotRegistered(); else onVersion(message); break; + case "TIME": + if(!registered) sendErrNotRegistered(); + else onTime(message); + break; default: writeln("unknown command '", message.command, "'"); send(Message(_server.name, "421", [nick, message.command, "Unknown command"])); @@ -583,6 +587,16 @@ class Connection _server.sendVersion(this); } + void onTime(Message message) + { + if(message.parameters.length > 0) + { + notImplemented("querying the time of another server"); + return; + } + _server.sendTime(this); + } + void sendWhoReply(string channel, Connection user, uint hopCount) { auto flags = user.modes.canFind('a') ? "G" : "H"; diff --git a/source/ircd/server.d b/source/ircd/server.d index b146b36..1dd736c 100644 --- a/source/ircd/server.d +++ b/source/ircd/server.d @@ -6,6 +6,7 @@ import std.range; import std.conv; import std.socket; import core.time; +import std.datetime; import vibe.core.core; @@ -256,6 +257,12 @@ class Server connection.send(Message(name, "351", [connection.nick, versionString ~ ".", name, ""], true)); } + void sendTime(Connection connection) + { + auto timeString = Clock.currTime.toISOExtString; + connection.send(Message(name, "391", [connection.nick, name, timeString], true)); + } + void invite(Connection inviter, string target, string channelName) { auto user = connections.find!(c => c.nick = target)[0];