Example XMPP server configurations#

Note

These examples are not meant to be complete, but rather show the relevant parts for slidge.

Example 1: prosody#

Note

Uncomment/comment the relevant lines if you’d rather use HTTP File Upload for Attachments.

 1modules_enabled = {
 2  -- [...]
 3  -- "http_file_share"; -- for attachments with the "upload" option
 4  "http_files"; -- for attachments with the "no upload" option
 5  "privilege"; -- for roster sync and 'legacy carbons'
 6}
 7
 8-- for attachments with the "no upload" option
 9-- in slidge's config: no-upload-path=/var/lib/slidge/attachments
10http_files_dir = "/var/lib/slidge/attachments"
11
12local _privileges = {
13    roster = "both";
14    message = "outgoing";
15    iq = {
16      ["http://jabber.org/protocol/pubsub"] = "both";
17      ["http://jabber.org/protocol/pubsub#owner"] = "set";
18    };
19}
20
21VirtualHost "example.org"
22  -- for roster sync and 'legacy carbons'
23  privileged_entities = {
24    ["superduper.example.org"] =_privileges,
25    ["other-walled-garden.example.org"] = _privileges,
26    -- repeat for other slidge plugins…
27  }
28
29Component "superduper.example.org"
30  component_secret = "secret"
31  modules_enabled = {"privilege"}
32
33Component "other-walled-garden.example.org"
34  component_secret = "some-other-secret"
35  modules_enabled = {"privilege"}
36
37-- repeat for other slidge plugins…
38
39-- -- for attachments with the "upload" option
40-- -- in slidge's config: upload-service=upload.example.org
41-- Component "upload.example.org" "http_file_share"

Example 2: ejabberd/upload-service#

Note

See additional notes in Example 2: ejabberd mod_http_upload to get Attachments working.

Note

This example does not cover the No upload option for attachments. For ‘no upload’ with ejabberd, you need an external HTTP server, eg Example 2: nginx.

 1listen:
 2  -
 3    ip: 127.0.0.1
 4    port: 5347
 5    module: ejabberd_service
 6    # The next line is required if you're settings up multiple bridges
 7    global_routes: false
 8    hosts:
 9      - "superduper.example.org":
10          password: secret
11      - "other-walled-garden.example.org":
12          password: some-other-secret
13      # repeat for other slidge plugins…
14
15  # HTTP upload service (XEP-0363)
16  -
17    port: 5443
18    module: ejabberd_http
19    tls: true
20    request_handlers:
21      /upload: mod_http_upload
22
23acl:
24  slidge_acl:
25    server:
26      - "superduper.example.org"
27      - "other-walled-garden.example.org"
28      # repeat for other slidge plugins you added in the listen section above
29
30access_rules:
31  slidge_rule:
32    - allow: slidge_acl
33
34modules:
35  mod_http_upload:
36    # A path that ejabberd has Read and Write access to
37    docroot: /ejabberd/upload
38    put_url: "https://@HOST@:5443/upload"
39    access:
40      - allow: local
41      - allow: slidge_acl
42
43  # for roster auto-fill and "carbons from legacy apps"
44  # (broken in ejabberd when this was written, hopefully fixed since)
45  mod_privilege:
46    roster:
47      both: slidge_rule
48    message:
49      outgoing: slidge_rule
50  mod_roster:
51    versioning: true