Mercurial > prosody-modules
view mod_s2s_keepalive/mod_s2s_keepalive.lua @ 3025:5b8983e100da
mod_vcard_command: a simplistic way to get and set vcard data for registered users
Use "prosodyctl get user@example.com" to print the XML to stdout, and
"prosodyctl set user@example.com /file/name" to set the vcard info from
an xml file.
author | Stefan `Sec` Zehl <sec@42.org> |
---|---|
date | Tue, 08 Oct 2013 16:38:40 +0000 |
parents | 2db2c03dfb95 |
children | 427879b46061 |
line wrap: on
line source
local st = require "util.stanza"; local keepalive_servers = module:get_option_set("keepalive_servers"); local keepalive_interval = module:get_option_number("keepalive_interval", 60); local host = module.host; local function send_pings() for remote_domain, session in pairs(hosts[host].s2sout) do if session.type == "s2sout" -- as opposed to _unauthed and (not(keepalive_servers) or keepalive_servers:contains(remote_domain)) then session.sends2s(st.iq({ to = remote_domain, type = "get", from = host, id = "keepalive" }) :tag("ping", { xmlns = "urn:xmpp:ping" }) ); -- Note: We don't actually check if this comes back. end end for session in pairs(prosody.incoming_s2s) do if session.type == "s2sin" -- as opposed to _unauthed and (not(keepalive_servers) or keepalive_servers:contains(session.from_host)) then session.sends2s " "; -- If the connection is dead, this should make it time out. end end return keepalive_interval; end if module.add_timer then -- 0.9 module:add_timer(keepalive_interval, send_pings); else -- 0.8 local timer = require "util.timer"; local unloaded; timer.add_task(keepalive_interval, function() if not unloaded then return send_pings() end end); function module.unload() unloaded = true end end