--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_host_status_heartbeat/mod_host_status_heartbeat.lua Tue Jun 28 22:33:13 2016 +0100
@@ -0,0 +1,28 @@
+local st = require "util.stanza";
+local time = require "socket".gettime;
+
+local heartbeat_interval = module:get_option_number("status_check_heartbeat_interval", 5);
+local heartbeat_mode = module:get_option_string("status_check_heartbeat_mode", "remote");
+
+local local_heartbeats = module:shared("/*/host_status_check/heartbeats");
+
+local heartbeat_methods = {
+ ["local"] = function()
+ module:log("debug", "Local heartbeat");
+ local_heartbeats[module.host] = time();
+ return heartbeat_interval;
+ end;
+
+ ["remote"] = function ()
+ module:fire_event("route/remote", {
+ origin = prosody.hosts[module.host];
+ stanza = st.stanza("heartbeat", { xmlns = "xmpp:prosody.im/heartbeat" });
+ });
+ return heartbeat_interval;
+ end;
+}
+
+local send_heartbeat = assert(heartbeat_methods[heartbeat_mode], "Unknown heartbeat_mode: "..heartbeat_mode);
+
+--FIXME: Commented for testing!!! :)
+module:add_timer(0, send_heartbeat);