Software /
code /
prosody-modules
Annotate
mod_profile/README.md @ 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 | 6003:fe081789f7b5 |
rev | line source |
---|---|
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
1 --- |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
2 labels: |
4957
89226fb1af67
mod_profile: Obsolete. Remove. Redirect to mod_vcard_legacy
Kim Alvefur <zash@zash.se>
parents:
3665
diff
changeset
|
3 - 'Stage-Obsolete' |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
4 summary: 'Replacement for mod\_vcard with vcard4 support and PEP integration' |
4957
89226fb1af67
mod_profile: Obsolete. Remove. Redirect to mod_vcard_legacy
Kim Alvefur <zash@zash.se>
parents:
3665
diff
changeset
|
5 superseded_by: mod_vcard_legacy |
2376
f0e611e40e3f
mod_profile/README: Set a stage label
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
6 --- |
1782 | 7 |
3664
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
8 ::: {.alert .alert-warning} |
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
9 [mod\_vcard\_legacy][doc:modules:mod_vcard_legacy] and |
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
10 [mod\_vcard4][doc:modules:mod_vcard4] included with Prosody 0.11.x |
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
11 provide equivalent functionality. |
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
12 ::: |
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
13 |
3180 | 14 # Introduction |
1782 | 15 |
3664
2bbc56a19d74
mod_profile: Link to successors mod_vcard_legacy & mod_vcard4
Kim Alvefur <zash@zash.se>
parents:
3300
diff
changeset
|
16 This module was an experimental replacement for [mod\_vcard]. In addition to |
3180 | 17 the ageing protocol defined by [XEP-0054], it also supports the [new |
18 vCard 4 based protocol][xep0292] and integrates with [Personal | |
19 Eventing Protocol][xep0163]. | |
1782 | 20 |
3186
1fe5b156d220
mod_profile: Add support for XEP-0398
Kim Alvefur <zash@zash.se>
parents:
3180
diff
changeset
|
21 Also supports [XEP-0398: User Avatar to vCard-Based Avatars Conversion]. |
1fe5b156d220
mod_profile: Add support for XEP-0398
Kim Alvefur <zash@zash.se>
parents:
3180
diff
changeset
|
22 |
3180 | 23 The vCard 4, [User Avatar][xep0084] and [User Nickname][xep0172] |
24 PEP nodes are updated when the vCard is changed.. | |
25 | |
26 # Configuration | |
1782 | 27 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
28 modules_enabled = { |
3300
65dd8ebbd82c
mod_profile: Update README file next to recent mod_pep changes
Minami-o Le Sabreur <minami-o@biboumail.fr>
parents:
3186
diff
changeset
|
29 -- "vcard"; -- This module must be removed |
1782 | 30 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
31 "profile"; |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
32 } |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
33 |
3180 | 34 # Compatibility |
1782 | 35 |
3180 | 36 Requires Prosody **trunk** as of 2014-05-29. Won't work in 0.10.x. |
1782 | 37 |
3300
65dd8ebbd82c
mod_profile: Update README file next to recent mod_pep changes
Minami-o Le Sabreur <minami-o@biboumail.fr>
parents:
3186
diff
changeset
|
38 It depends on the trunk version of [mod\_pep][doc:modules:mod_pep] for PEP support, |
65dd8ebbd82c
mod_profile: Update README file next to recent mod_pep changes
Minami-o Le Sabreur <minami-o@biboumail.fr>
parents:
3186
diff
changeset
|
39 previously known as [mod\_pep\_plus][doc:modules:mod_pep_plus]. |