File

plugins/mod_time.lua @ 11749:83d6d6a70edf

net.http: fail open if surrounding code does not configure TLS Previously, if surrounding code was not configuring the TLS context used default in net.http, it would not validate certificates at all. This is not a security issue with prosody, because prosody updates the context with `verify = "peer"` as well as paths to CA certificates in util.startup.init_http_client. Nevertheless... Let's not leave this pitfall out there in the open.
author Jonas Schäfer <jonas@wielicki.name>
date Sun, 29 Aug 2021 15:04:47 +0200
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);