Mercurial > prosody-modules
diff mod_lastlog/mod_lastlog.lua @ 1049:59f031d1cd38
mod_last_offline: Merge into an option of mod_lastlog
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 03 Jun 2013 20:54:06 +0200 |
parents | 50bed746aa16 |
children | 59657e03c25c |
line wrap: on
line diff
--- a/mod_lastlog/mod_lastlog.lua Mon Jun 03 19:35:13 2013 +0200 +++ b/mod_lastlog/mod_lastlog.lua Mon Jun 03 20:54:06 2013 +0200 @@ -1,4 +1,5 @@ local datamanager = require "util.datamanager"; +local jid = require "util.jid"; local time = os.time; local log_ip = module:get_option_boolean("lastlog_ip_address", false); local host = module.host; @@ -25,8 +26,29 @@ end end); +if module:get_option_boolean("lastlog_stamp_offline") then + 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 data = datamanager.load(node, host, "lastlog"); + local timestamp = data and data.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); +end + function module.command(arg) - local user, host = require "util.jid".prepped_split(table.remove(arg, 1)); + local user, host = jid.prepped_split(table.remove(arg, 1)); require"core.storagemanager".initialize_host(host); local lastlog = assert(datamanager.load(user, host, "lastlog")); if lastlog then