Comparison

mod_http_roster_admin/README.markdown @ 2312:234d679076c4

Proper markdown syntax
author JC Brand <jcbrand@minddistrict.com>
date Wed, 28 Sep 2016 15:15:21 +0000
parent 2311:73967121cf5e
child 3006:e6f91e00b507
comparison
equal deleted inserted replaced
2311:73967121cf5e 2312:234d679076c4
2 labels: 2 labels:
3 - 'Stage-Beta' 3 - 'Stage-Beta'
4 summary: Delegate roster management to an external service 4 summary: Delegate roster management to an external service
5 ... 5 ...
6 6
7 NOTE: THIS MODULE IS RELEASED UNDER THE MOZILLA PUBLIC LICENSE VERSION 2. 7 *NOTE: THIS MODULE IS RELEASED UNDER THE MOZILLA PUBLIC LICENSE VERSION 2.*
8 8
9 Normally the XMPP server will store and maintain the users' contact 9 Normally the XMPP server will store and maintain the users' contact
10 rosters. This module lets you delegate roster management to an external 10 rosters. This module lets you delegate roster management to an external
11 service. 11 service.
12 12
13 Prosody will make an HTTP request to fetch the roster from the external 13 Prosody will make an HTTP request to fetch the roster from the external
14 service. The service will need to notify Prosody whenever a user's roster 14 service. The service will need to notify Prosody whenever a user's roster
15 changes, so that Prosody can fetch a new roster for that user. 15 changes, so that Prosody can fetch a new roster for that user.
16 16
17 Configuring this module 17 ## Configuring this module
18 -----------------------
19 18
20 This module relies on `mod_storage_memory` and `mod_block_subscriptions`. 19 This module relies on `mod_storage_memory` and `mod_block_subscriptions`.
21 20
22 In `.parts/prosody/etc/prosody/prosody.cfg.lua`, where your particular 21 In `.parts/prosody/etc/prosody/prosody.cfg.lua`, where your particular
23 `VirtualHost` is being configured, add the following: 22 `VirtualHost` is being configured, add the following:
43 42
44 When the user *john* then connects to Prosody, and `http_roster_url` is 43 When the user *john* then connects to Prosody, and `http_roster_url` is
45 set to “http://app.example.org/contacts/%s”, then Prosody will make a 44 set to “http://app.example.org/contacts/%s”, then Prosody will make a
46 GET request to http://app.example.org/contacts/john 45 GET request to http://app.example.org/contacts/john
47 46
48 Notifying Prosody of roster changes 47 ## Notifying Prosody of roster changes
49 ***********************************
50 48
51 The external service needs to notify Prosody whenever a user's roster 49 The external service needs to notify Prosody whenever a user's roster
52 changes. To do this, it must make an HTTP POST request to either: 50 changes. To do this, it must make an HTTP POST request to either:
53 51
54 * http://localhost:5280/roster_admin/refresh 52 - http://localhost:5280/roster_admin/refresh
55 * https://localhost:5281/roster_admin/refresh 53 - https://localhost:5281/roster_admin/refresh
56 54
57 Make sure that the "http_files" module is enabled in Prosody's configuration, 55 Make sure that the "http_files" module is enabled in Prosody's configuration,
58 for the above URLs to served. 56 for the above URLs to served.
59 57
60 Ports 5280/5281 can be firewalled and the web server (i.e. Apache or Nginx) 58 Ports 5280/5281 can be firewalled and the web server (i.e. Apache or Nginx)
65 rosters have changed. 63 rosters have changed.
66 64
67 For example, if user ‘john’ became friends with ‘aaron’, both john’s 65 For example, if user ‘john’ became friends with ‘aaron’, both john’s
68 contact list and aaron’s contact lists have changed: 66 contact list and aaron’s contact lists have changed:
69 67
70 ```
71 ["john", "aaron"] 68 ["john", "aaron"]
72 ```
73 69
74 When the operation is complete Prosody will reply with a summary of the 70 When the operation is complete Prosody will reply with a summary of the
75 operation - a JSON object containing: 71 operation - a JSON object containing:
76 72
77 * **status**: either “ok” (success) or “error” (operation completely failed) 73 - **status**: either “ok” (success) or “error” (operation completely failed)
78 * **message**: A human-readable message (for logging and debugging purposes) 74 - **message**: A human-readable message (for logging and debugging purposes)
79 * **updated**: The number of rosters successfully updated 75 - **updated**: The number of rosters successfully updated
80 * **errors**: The number of rosters that failed to update 76 - **errors**: The number of rosters that failed to update
81 77
82 Example: 78 Example:
83 79
84 ```
85 { 80 {
86 "status": "ok", 81 "status": "ok",
87 "message": "roster update complete", 82 "message": "roster update complete",
88 "updated": 2, 83 "updated": 2,
89 "errors": 0 84 "errors": 0
90 } 85 }
91 ```
92 86
93 Prosody may also return status codes `400` or `500` in case of errors (such 87 Prosody may also return status codes `400` or `500` in case of errors (such
94 as a missing/malformed body). 88 as a missing/malformed body).