comparison mod_delegation/README.md @ 5975:fe081789f7b5

All community modules: Unify file extention of Markdown files to .md
author Menel <menel@snikket.de>
date Tue, 22 Oct 2024 10:26:01 +0200
parents mod_delegation/README.markdown@679f1834dbdb
children
comparison
equal deleted inserted replaced
5974:5a65a632d5b9 5975:fe081789f7b5
1 ---
2 labels:
3 - 'Stage-Beta'
4 summary: 'XEP-0355 (Namespace Delegation) implementation'
5 ...
6
7 Introduction
8 ============
9
10 Namespace Delegation is an extension which allows server to delegate some
11 features handling to an entity/component. Typical use case is an external PEP
12 service, but it can be used more generally when your preferred server lack one
13 internal feature, and you found an external component which can do it.
14
15 Details
16 =======
17
18 You can have all the details by reading the
19 [XEP-0355](http://xmpp.org/extensions/xep-0355.html). Only the admin mode is
20 implemented so far.
21
22 Usage
23 =====
24
25 To use the module, like usual add **"delegation"** to your *modules\_enabled*.
26 Note that if you use it with a local component, you also need to activate the
27 module in your component section:
28
29 modules_enabled = {
30 [...]
31
32 "delegation";
33 }
34
35 [...]
36
37 Component "youcomponent.yourdomain.tld"
38 component_secret = "yourpassword"
39 modules_enabled = {"delegation"}
40
41 then specify delegated namespaces **in your host section** like that:
42
43 VirtualHost "yourdomain.tld"
44
45 delegations = {
46 ["urn:xmpp:mam:2"] = {
47 filtering = {"node"};
48 jid = "pubsub.yourdomain.tld";
49 },
50 ["http://jabber.org/protocol/pubsub"] = {
51 jid = "pubsub.yourdomain.tld";
52 },
53 ["http://jabber.org/protocol/pubsub#owner"] = {
54 jid = "pubsub.yourdomain.tld";
55 },
56 ["urn:xmpp:delegation:2:bare:disco#info:*"] = {
57 jid = "pubsub.yourdomain.tld";
58 },
59 ["urn:xmpp:delegation:2:bare:disco#items:*"] = {
60 jid = "pubsub.yourdomain.tld";
61 },
62
63 }
64
65 Here all MAM requests with a "node" attribute (i.e. all MAM pubsub request) will
66 be delegated to pubsub.yourdomain.tld. Similarly, all pubsub request to the host
67 (i.e. the PEP requests) will be delegated to pubsub.yourdomain.tld. Check the
68 XEP for the meaning of "urn:xmpp:delegation:2:bare:disco#info:*" and
69 "urn:xmpp:delegation:2:bare:disco#items:*".
70
71 **/!\ Be extra careful when you give a delegation to an entity/component, it's a
72 powerful access, only do it if you absolutely trust the component/entity, and
73 you know where the software is coming from**
74
75 Configuration
76 =============
77
78 The configuration is done with a table which map delegated namespace to
79 namespace data. Namespace data MUST have a **jid** (in the form **jid =
80 "delegated@domain.tld"**) and MAY have an additional **filtering** array. If
81 filtering is present, request with attributes in the array will be delegated,
82 others will be treated normally (i.e. by Prosody).
83
84 If you are not a developer, the delegated namespace(s)/attribute(s) are most
85 probably specified with the external component/entity you want to use.
86
87 The pseudo-namespace `http://jabber.org/protocol/disco#items:*` is used to
88 delegate remaining disco#items (i.e. items nodes not already handled by Prosody
89 itself).
90
91 Compatibility
92 =============
93
94 If you use it with Prosody 0.9 and a component, you need to patch
95 core/mod\_component.lua to fire a new signal. To do it, copy the following patch
96 in a, for example, /tmp/component.patch file:
97
98 diff --git a/plugins/mod_component.lua b/plugins/mod_component.lua
99 --- a/plugins/mod_component.lua
100 +++ b/plugins/mod_component.lua
101 @@ -85,6 +85,7 @@
102 session.type = "component";
103 module:log("info", "External component successfully authenticated");
104 session.send(st.stanza("handshake"));
105 + module:fire_event("component-authenticated", { session = session });
106
107 return true;
108 end
109
110 Then, at the root of prosody, enter:
111
112 `patch -p1 < /tmp/component.patch`
113
114 ----- ----------------------------------------------------
115 0.11 Works
116 0.10 Works
117 0.9 Need a patched core/mod\_component.lua (see above)
118 ----- ----------------------------------------------------
119
120 Note
121 ====
122
123 This module is often used with mod\_privilege (c.f. XEP for more details)