Software /
code /
prosody-modules
File
mod_invites_page/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 | 6089:9708b2ae6884 |
line wrap: on
line source
--- labels: - 'Stage-Beta' summary: 'Generate friendly web page for invitations' rockspec: dependencies: - mod_register_apps build: copy_directories: - html - static ... Introduction ============ This module is part of the suite of modules that implement invite-based account registration for Prosody. The other modules are: - [mod_invites] - [mod_invites_adhoc] - [mod_invites_register] - [mod_invites_register_web] - [mod_invites_api] - [mod_register_apps] For details and a full overview, start with the [mod_invites] documentation. Details ======= mod_invites_page provides a unique web page for each generated invitation. Without this module, Prosody will only be able to generate invite links as `xmpp:` URIs (they look something like `xmpp:example.com?register;preauth=29Xbxr91`). URIs will only work if the invited user already has an XMPP client installed. This is usually not the case. This module transforms the URI into a friendly web page that can be shared via any method (email, SMS, etc.), and opened in any browser. The page explains the invitation and guides the user to set up their account using one of a configurable list of XMPP clients (to configure the list, see mod_register_apps documentation). For a complete experience one should also load [mod_invites_register], [mod_invites_register_web], [mod_register_apps] and [mod_http_libjs] see [mod_invites] Configuration ============= | Name | Description | Default | |---------------------------|--------------------------------------------------------------------------------|-----------------------------------------------------| | invites_page | The format of an invite page URL (must begin with `https://`) | `"https://{host}:5281/invites_page?{invite.token}"` | | invites_registration_page | The format of an invite registration page URL (may be relative to invites_page)| `"register?t={invite.token}&c={app.id}"` | | site_name | The friendly name of the server | `"example.com"` | | invites_page_external | Set this to true if your invitation pages will be rendered by something else | `false` | The `invites_page` and `invites_registration_page` options are templates that support a number of variables. The most useful being `{host}` and `{invite.token}`. All the usual [HTTP configuration options](https://prosody.im/doc/http) can be used to configure this module. In particular, if you run Prosody behind a reverse proxy such as nginx or Apache, you will probably want to set `http_external_url` so that Prosody knows what URLs should look like for users. If you want to disable this module's built-in pages and use an external invitation page generator (such as [ge0rg/easy-xmpp-invitation](https://github.com/ge0rg/easy-xmpp-invitation) then set `invites_page_external = true` and set `invites_page` to the appropriate URL for your installation. Compatibility ============= Prosody-Version Status --------------- --------------------- trunk Works as of 24-12-08 0.12 Works