Software /
code /
prosody-modules
Annotate
mod_nodeinfo2/mod_nodeinfo2.lua @ 6110:1a6cd0bbb7ab
mod_compliance_2023: Add 2023 Version of the compliance module, basis is the 2021 Version.
diff --git a/mod_compliance_2023/README.md b/mod_compliance_2023/README.md
new file mode 100644
--- /dev/null
+++ b/mod_compliance_2023/README.md
@@ -0,0 +1,22 @@
+---
+summary: XMPP Compliance Suites 2023 self-test
+labels:
+- Stage-Beta
+rockspec:
+ dependencies:
+ - mod_cloud_notify
+
+...
+
+Compare the list of enabled modules with
+[XEP-0479: XMPP Compliance Suites 2023] and produce basic report to the
+Prosody log file.
+
+If installed with the Prosody plugin installer then all modules needed for a green checkmark should be included. (With prosody 0.12 only [mod_cloud_notify] is not included with prosody and we need the community module)
+
+# Compatibility
+
+ Prosody-Version Status
+ --------------- ----------------------
+ trunk Works as of 2024-12-21
+ 0.12 Works
diff --git a/mod_compliance_2023/mod_compliance_2023.lua b/mod_compliance_2023/mod_compliance_2023.lua
new file mode 100644
--- /dev/null
+++ b/mod_compliance_2023/mod_compliance_2023.lua
@@ -0,0 +1,79 @@
+-- Copyright (c) 2021 Kim Alvefur
+--
+-- This module is MIT licensed.
+
+local hostmanager = require "core.hostmanager";
+
+local array = require "util.array";
+local set = require "util.set";
+
+local modules_enabled = module:get_option_inherited_set("modules_enabled");
+
+for host in pairs(hostmanager.get_children(module.host)) do
+ local component = module:context(host):get_option_string("component_module");
+ if component then
+ modules_enabled:add(component);
+ modules_enabled:include(module:context(host):get_option_set("modules_enabled", {}));
+ end
+end
+
+local function check(suggested, alternate, ...)
+ if set.intersection(modules_enabled, set.new({suggested; alternate; ...})):empty() then return suggested; end
+ return false;
+end
+
+local compliance = {
+ array {"Server"; check("tls"); check("disco")};
+
+ array {"Advanced Server"; check("pep", "pep_simple")};
+
+ array {"Web"; check("bosh"); check("websocket")};
+
+ -- No Server requirements for Advanced Web
+
+ array {"IM"; check("vcard_legacy", "vcard"); check("carbons"); check("http_file_share", "http_upload")};
+
+ array {
+ "Advanced IM";
+ check("vcard_legacy", "vcard");
+ check("blocklist");
+ check("muc");
+ check("private");
+ check("smacks");
+ check("mam");
+ check("bookmarks");
+ };
+
+ array {"Mobile"; check("smacks"); check("csi_simple", "csi_battery_saver")};
+
+ array {"Advanced Mobile"; check("cloud_notify")};
+
+ array {"A/V Calling"; check("turn_external", "external_services", "turncredentials", "extdisco")};
+
+};
+
+function check_compliance()
+ local compliant = true;
+ for _, suite in ipairs(compliance) do
+ local section = suite:pop(1);
+ if module:get_option_boolean("compliance_" .. section:lower():gsub("%A", "_"), true) then
+ local missing = set.new(suite:filter(function(m) return type(m) == "string" end):map(function(m) return "mod_" .. m end));
+ if suite[1] then
+ if compliant then
+ compliant = false;
+ module:log("warn", "Missing some modules for XMPP Compliance 2023");
+ end
+ module:log("info", "%s Compliance: %s", section, missing);
+ end
+ end
+ end
+
+ if compliant then module:log("info", "XMPP Compliance 2023: Compliant ✔️"); end
+end
+
+if prosody.start_time then
+ check_compliance()
+else
+ module:hook_global("server-started", check_compliance);
+end
+
author | Menel <menel@snikket.de> |
---|---|
date | Sun, 22 Dec 2024 16:06:28 +0100 |
parent | 4595:bac3dae031ee |
rev | line source |
---|---|
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local json = require "util.json"; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local array = require "util.array"; |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
3 local add_task = require "util.timer".add_task; |
3707
3248295e1b16
mod_nodeinfo2: Retrieve message count from mod_measure_message_e2ee for localPosts and localComments.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3706
diff
changeset
|
4 local get_stats = require "core.statsmanager".get_stats; |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
5 local list_users = require "core.usermanager".users; |
3708
0a800463bc08
mod_nodeinfo2: Fetch active users from mod_lastlog.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3707
diff
changeset
|
6 local os_time = os.time; |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
4595
bac3dae031ee
Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents:
3792
diff
changeset
|
8 assert(get_stats, "not compatible with trunk based on openmetrics"); |
bac3dae031ee
Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents:
3792
diff
changeset
|
9 |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 module:depends("http"); |
3792
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
11 |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
12 local expose_users = module:get_option_boolean("nodeinfo2_expose_users", true); |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
13 if expose_users then |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
14 module:depends("lastlog"); |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
15 end |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
16 |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
17 local expose_posts = module:get_option_boolean("nodeinfo2_expose_posts", true); |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
18 if expose_posts then |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
19 module:depends("measure_message_e2ee"); |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
20 end |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
3784
741a1e400de4
mod_nodeinfo2: Count messages per host
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3783
diff
changeset
|
22 local main_store = module:open_store(); |
741a1e400de4
mod_nodeinfo2: Count messages per host
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3783
diff
changeset
|
23 local lastlog_store = module:open_store("lastlog"); |
3708
0a800463bc08
mod_nodeinfo2: Fetch active users from mod_lastlog.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3707
diff
changeset
|
24 |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
25 local data; |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
26 if expose_posts then |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
27 data = main_store:get("nodeinfo2") or { message_count = 0 }; |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
28 end |
3710
7f5ce667d93e
mod_nodeinfo2: Store and restore the total message count.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3708
diff
changeset
|
29 |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
30 local total_users = 0; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
31 local week_users = 0; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
32 local month_users = 0; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
33 local half_year_users = 0; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
34 |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
35 local function update_user_list() |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
36 for user in list_users(module.host) do |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
37 total_users = total_users + 1; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
38 local lastlog = lastlog_store:get(user); |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
39 if lastlog and lastlog.timestamp then |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
40 local delta = os_time() - lastlog.timestamp; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
41 if delta < 7 * 86400 then |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
42 week_users = week_users + 1; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
43 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
44 if delta < 30 * 86400 then |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
45 month_users = month_users + 1; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
46 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
47 if delta < 6 * 30 * 86400 then |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
48 half_year_users = half_year_users + 1; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
49 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
50 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
51 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
52 |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
53 -- Remove the properties if we couldn’t find a single active user. It most likely means mod_lastlog isn’t in use. |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
54 if half_year_users == 0 and month_users == 0 and week_users == 0 then |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
55 week_users = nil; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
56 month_users = nil; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
57 half_year_users = nil; |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
58 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
59 end |
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
60 |
3792
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
61 if expose_users then |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
62 add_task(86400, update_user_list); |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
63 update_user_list(); |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
64 end |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
65 |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 module:provides("http", { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
67 default_path = "/.well-known/x-nodeinfo2"; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 route = { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 GET = function (event) |
3792
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
70 local usage = {}; |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
71 if expose_users then |
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
72 usage.users = { |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
73 total = total_users; |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
74 activeWeek = week_users; |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
75 activeMonth = month_users; |
3790
352f3efe1b67
mod_nodeinfo2: Refresh the number of recent users daily
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3789
diff
changeset
|
76 activeHalfyear = half_year_users; |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
77 }; |
3792
aec772bbd558
mod_nodeinfo2: Only expose amount of accounts if nodeinfo2_expose_users isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3791
diff
changeset
|
78 end |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
79 |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
80 if expose_posts then |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
81 local stats, changed_only, extras = get_stats(); |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
82 for stat, _ in pairs(stats) do |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
83 if stat == "/"..module.host.."/mod_measure_message_e2ee/message:rate" then |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
84 local new_message_count = extras[stat].total; |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
85 if new_message_count ~= data.message_count then |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
86 data = { message_count = new_message_count }; |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
87 main_store:set("nodeinfo2", data); |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
88 end |
3710
7f5ce667d93e
mod_nodeinfo2: Store and restore the total message count.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3708
diff
changeset
|
89 end |
3707
3248295e1b16
mod_nodeinfo2: Retrieve message count from mod_measure_message_e2ee for localPosts and localComments.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3706
diff
changeset
|
90 end |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
91 usage.localPosts = data.message_count; |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
92 -- TODO: also count PubSub replies here. |
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
93 usage.localComments = 0; |
3707
3248295e1b16
mod_nodeinfo2: Retrieve message count from mod_measure_message_e2ee for localPosts and localComments.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3706
diff
changeset
|
94 end |
3248295e1b16
mod_nodeinfo2: Retrieve message count from mod_measure_message_e2ee for localPosts and localComments.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3706
diff
changeset
|
95 |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
96 event.response.headers.content_type = "application/json"; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
97 return json.encode({ |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
98 version = "1.0"; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
99 server = { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
100 baseUrl = module:http_url("","/"); |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
101 name = module.host; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
102 software = "Prosody"; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
103 version = prosody.version; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 }; |
3706 | 105 --[[ TODO re-use data from mod_server_contact_info ? |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
106 organization = { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
107 name = ""; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
108 contact = ""; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
109 account = ""; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
110 }; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
111 --]] |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
112 protocols = array { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
113 "xmpp", |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
114 }; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
115 services = { |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
116 inbound = array { |
3791
34a8f9f996ec
mod_nodeinfo2: Expose XMPP services
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3790
diff
changeset
|
117 "xmpp"; |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
118 }; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
119 outbound = array { |
3791
34a8f9f996ec
mod_nodeinfo2: Expose XMPP services
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3790
diff
changeset
|
120 "xmpp"; |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
121 }; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
122 }; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
123 openRegistrations = module:get_option_boolean("allow_registration", false); |
3789
e3b673df3906
mod_nodeinfo2: Only expose message stats if nodeinfo2_expose_posts isn’t set to false
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3786
diff
changeset
|
124 usage = usage; |
3705
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
125 }); |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
126 end; |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
127 } |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
128 }); |
5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
129 |