Mercurial > prosody-modules
view mod_last_offline/mod_last_offline.lua @ 889:9901d267f938
mod_carbons_copies: Initial commit; allow the user to enable v0 style carbons
for clients which are not carbons-capable yet. This will not interfere with
clients which have support for regular Message Carbons (XEP-0280).
This module takes two optional parameters:
carbons_copies_default - if set to true, copies will be enabled by default
carbons_copies_adhoc - Enable Adhoc-commands to allow the user to
enable/disable copies
author | Michael Holzt <kju@fqdn.org> |
---|---|
date | Sun, 23 Dec 2012 19:34:29 +0100 |
parents | bec0a995f5df |
children |
line wrap: on
line source
local datamanager = require "util.datamanager"; local jid_split = require "util.jid".split; local time = os.time; local NULL = {}; local host = module.host; module:hook("resource-unbind", function(event) local session = event.session; if session.username then datamanager.store(session.username, host, "last_online", { timestamp = time(), }); end end); local function offline_stamp(event) local stanza = event.stanza; local node, to_host = jid_split(stanza.attr.from); if to_host == host and event.origin == hosts[host] and stanza.attr.type == "unavailable" then local timestamp = (datamanager.load(node, host, "last_online") or NULL).timestamp; if timestamp then stanza:tag("delay", { xmlns = "urn:xmpp:delay", from = host, stamp = datetime.datetime(timestamp), }):up(); end end end module:hook("pre-presence/bare", offline_stamp); module:hook("pre-presence/full", offline_stamp);