Comparison

mod_delegation/README.markdown @ 1803:4d73a1a6ba68

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