Software /
code /
prosody-modules
Changeset
3789:e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Mon, 30 Dec 2019 22:20:11 +0100 |
parents | 3788:14028430638b |
children | 3790:352f3efe1b67 |
files | mod_nodeinfo2/README.markdown mod_nodeinfo2/mod_nodeinfo2.lua |
diffstat | 2 files changed, 38 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_nodeinfo2/README.markdown Mon Dec 30 12:04:35 2019 +0000 +++ b/mod_nodeinfo2/README.markdown Mon Dec 30 22:20:11 2019 +0100 @@ -22,7 +22,13 @@ } ``` -This module depends on [mod\_http](https://prosody.im/doc/http), all of its +Set the `nodeinfo2_expose_posts` option to false if you don’t want to expose +statistics about the amount of messages being exchanged by your users: +``` +nodeinfo2_expose_posts = false +``` + +This module depends on [mod\_http](https://prosody.im/doc/http), most of its configuration actually happens in this module. Compatibility
--- a/mod_nodeinfo2/mod_nodeinfo2.lua Mon Dec 30 12:04:35 2019 +0000 +++ b/mod_nodeinfo2/mod_nodeinfo2.lua Mon Dec 30 22:20:11 2019 +0100 @@ -5,7 +5,11 @@ module:depends("http"); module:depends("lastlog"); -module:depends("measure_message_e2ee"); + +local expose_posts = module:get_option_boolean("nodeinfo2_expose_posts", true); +if expose_posts then + module:depends("measure_message_e2ee"); +end local main_store = module:open_store(); local lastlog_store = module:open_store("lastlog"); @@ -38,21 +42,38 @@ week_users = nil; end -local data = main_store:get("nodeinfo2") or { message_count = 0 }; +local data; +if expose_posts then + data = main_store:get("nodeinfo2") or { message_count = 0 }; +end module:provides("http", { default_path = "/.well-known/x-nodeinfo2"; route = { GET = function (event) - local stats, changed_only, extras = get_stats(); - for stat, _ in pairs(stats) do - if stat == "/"..module.host.."/mod_measure_message_e2ee/message:rate" then - local new_message_count = extras[stat].total; - if new_message_count ~= data.message_count then - data = { message_count = new_message_count }; - main_store:set("nodeinfo2", data); + local usage = { + users = { + total = total_users; + activeHalfyear = half_year_users; + activeMonth = month_users; + activeWeek = week_users; + }; + }; + + if expose_posts then + local stats, changed_only, extras = get_stats(); + for stat, _ in pairs(stats) do + if stat == "/"..module.host.."/mod_measure_message_e2ee/message:rate" then + local new_message_count = extras[stat].total; + if new_message_count ~= data.message_count then + data = { message_count = new_message_count }; + main_store:set("nodeinfo2", data); + end end end + usage.localPosts = data.message_count; + -- TODO: also count PubSub replies here. + usage.localComments = 0; end event.response.headers.content_type = "application/json"; @@ -84,17 +105,7 @@ }; --]] openRegistrations = module:get_option_boolean("allow_registration", false); - usage = { - users = { - total = total_users; - activeHalfyear = half_year_users; - activeMonth = month_users; - activeWeek = week_users; - }; - localPosts = data.message_count; - -- TODO: also count PubSub replies here. - localComments = 0; - }; + usage = usage; }); end; }