Mercurial > prosody-modules
diff mod_nodeinfo2/mod_nodeinfo2.lua @ 3784:741a1e400de4
mod_nodeinfo2: Count messages per host
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sun, 29 Dec 2019 21:09:03 +0100 |
parents | 908b5fd47634 |
children | 58e484426d13 |
line wrap: on
line diff
--- a/mod_nodeinfo2/mod_nodeinfo2.lua Sun Dec 29 21:08:42 2019 +0100 +++ b/mod_nodeinfo2/mod_nodeinfo2.lua Sun Dec 29 21:09:03 2019 +0100 @@ -7,7 +7,8 @@ module:depends("lastlog"); module:depends("measure_message_e2ee"); -local store = module:open_store("lastlog"); +local main_store = module:open_store(); +local lastlog_store = module:open_store("lastlog"); local total_users = 0; local half_year_users = 0; @@ -15,7 +16,7 @@ local week_users = 0; for user in require "core.usermanager".users(module.host) do -- TODO refresh at some interval? total_users = total_users + 1; - local lastlog = store:get(user); + local lastlog = lastlog_store:get(user); if lastlog and lastlog.timestamp then local delta = os_time() - lastlog.timestamp; if delta < 6 * 30 * 24 * 60 * 60 then @@ -37,8 +38,7 @@ week_users = nil; end -local message_count_store = module:open_store("message_count"); -local message_count = message_count_store:get("message_count"); +local data = main_store:get("nodeinfo2"); module:provides("http", { default_path = "/.well-known/x-nodeinfo2"; @@ -46,11 +46,11 @@ GET = function (event) local stats, changed_only, extras = get_stats(); for stat, _ in pairs(stats) do - if stat == "/*/mod_measure_message_e2ee/message:rate" then + if stat == "/"..module.host.."/mod_measure_message_e2ee/message:rate" then local new_message_count = extras[stat].total; - if new_message_count ~= message_count[1] then - message_count = { new_message_count }; - message_count_store:set("message_count", message_count); + if not data or new_message_count ~= data.message_count then + data = { message_count = new_message_count }; + main_store:set("nodeinfo2", data); end end end @@ -91,7 +91,7 @@ activeMonth = month_users; activeWeek = week_users; }; - localPosts = message_count; + localPosts = data.message_count; -- TODO: also count PubSub replies here. localComments = 0; };