plugins/mod_time.lua
author Kim Alvefur <zash@zash.se>
Sat, 23 Mar 2024 20:48:19 +0100
changeset 13465 c673ff1075bd
parent 12981 74b9e05af71e
permissions -rw-r--r--
mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 1513
diff changeset
     1
-- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2012
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2012
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 2923
diff changeset
     4
--
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
     5
-- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
     6
-- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
     7
--
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
     8
12981
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12639
diff changeset
     9
local st = require "prosody.util.stanza";
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12639
diff changeset
    10
local datetime = require "prosody.util.datetime".datetime;
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12639
diff changeset
    11
local now = require "prosody.util.time".now;
1513
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    12
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    13
-- XEP-0202: Entity Time
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    14
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    15
module:add_feature("urn:xmpp:time");
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    16
2012
12131e7d3c25 mod_time: Updated to use events (which also fixes a few minor issues).
Waqas Hussain <waqas20@gmail.com>
parents: 1523
diff changeset
    17
local function time_handler(event)
12131e7d3c25 mod_time: Updated to use events (which also fixes a few minor issues).
Waqas Hussain <waqas20@gmail.com>
parents: 1523
diff changeset
    18
	local origin, stanza = event.origin, event.stanza;
9228
0ba963e82ac7 mod_time: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 5776
diff changeset
    19
	origin.send(st.reply(stanza):tag("time", {xmlns="urn:xmpp:time"})
0ba963e82ac7 mod_time: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 5776
diff changeset
    20
		:tag("tzo"):text("+00:00"):up() -- TODO get the timezone in a platform independent fashion
12636
70ae68bb0aa5 mod_time: Return sub-second precision timestamps
Kim Alvefur <zash@zash.se>
parents: 9228
diff changeset
    21
		:tag("utc"):text(datetime(now())));
9228
0ba963e82ac7 mod_time: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 5776
diff changeset
    22
	return true;
2012
12131e7d3c25 mod_time: Updated to use events (which also fixes a few minor issues).
Waqas Hussain <waqas20@gmail.com>
parents: 1523
diff changeset
    23
end
12131e7d3c25 mod_time: Updated to use events (which also fixes a few minor issues).
Waqas Hussain <waqas20@gmail.com>
parents: 1523
diff changeset
    24
9228
0ba963e82ac7 mod_time: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 5776
diff changeset
    25
module:hook("iq-get/bare/urn:xmpp:time:time", time_handler);
0ba963e82ac7 mod_time: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 5776
diff changeset
    26
module:hook("iq-get/host/urn:xmpp:time:time", time_handler);
1513
5c62216dd516 mod_time Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
    27