File

plugins/mod_time.lua @ 11192:11f285a439a4

tools/cfgdump: Reads Prosody config file and pretty-prints it back out Useful for comparing what you think you have in your config with what Prosody sees, e.g. wrt (lack of) significance of indentation, order of options vs scope etc. (global options do not go at the end!) Could probably be turned into a prosodyctl command, especially if it learns to redact secrets and passwords.
author Kim Alvefur <zash@zash.se>
date Wed, 28 Oct 2020 22:48:31 +0100
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);