File

plugins/mod_time.lua @ 13465:54a936345aaa 0.12

prosodyctl check: Warn about invalid domain names in the config file This ensures that domain names of virtual hosts and components are valid in XMPP, and that they are encoded correctly.
author Matthew Wild <mwild1@gmail.com>
date Wed, 27 Mar 2024 15:35:15 +0000
parent 9225:0ba963e82ac7
child 12632:70ae68bb0aa5
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local st = require "util.stanza";
local datetime = require "util.datetime".datetime;
local legacy = require "util.datetime".legacy;

-- XEP-0202: Entity Time

module:add_feature("urn:xmpp:time");

local function time_handler(event)
	local origin, stanza = event.origin, event.stanza;
	origin.send(st.reply(stanza):tag("time", {xmlns="urn:xmpp:time"})
		:tag("tzo"):text("+00:00"):up() -- TODO get the timezone in a platform independent fashion
		:tag("utc"):text(datetime()));
	return true;
end

module:hook("iq-get/bare/urn:xmpp:time:time", time_handler);
module:hook("iq-get/host/urn:xmpp:time:time", time_handler);

-- XEP-0090: Entity Time (deprecated)

module:add_feature("jabber:iq:time");

local function legacy_time_handler(event)
	local origin, stanza = event.origin, event.stanza;
	origin.send(st.reply(stanza):tag("query", {xmlns="jabber:iq:time"})
		:tag("utc"):text(legacy()));
	return true;
end

module:hook("iq-get/bare/jabber:iq:time:query", legacy_time_handler);
module:hook("iq-get/host/jabber:iq:time:query", legacy_time_handler);