Software / code / prosody-modules
Annotate
mod_pubsub_post/README.markdown @ 3501:1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 24 Aug 2018 14:52:09 +0200 |
| parent | 3256:0992c0398783 |
| child | 3502:42e9e3c5eb02 |
| rev | line source |
|---|---|
| 3100 | 1 # Introduction |
| 2 | |
| 3 Lets you easily publish data to PubSub using a HTTP POST request. The | |
| 4 payload can be Atom feeds, arbitrary XML, or arbitrary JSON. The type | |
| 5 should be indicated via the `Content-Type` header. | |
| 6 | |
| 7 ``` {.bash} | |
| 8 curl http://localhost:5280/pubsub_post/princely_musings \ | |
| 9 -H "Content-Type: application/json" \ | |
| 10 --data-binary '{"musing":"To be, or not to be: that is the question"}' | |
| 11 ``` | |
| 12 | |
|
3153
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
13 - JSON data is wrapped in a [XEP-0335] container. |
|
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
14 - An Atom feed may have many `<entry>` and each one is published as |
|
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
15 its own PubSub item. |
|
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
16 - Other XML is simply published to a randomly named item as-is. |
|
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
17 |
| 3100 | 18 # Configuration |
| 19 | |
| 20 ## Authentication | |
| 21 | |
| 22 Authentication can be handled in two different ways. | |
| 23 | |
| 24 ### None | |
| 25 | |
| 26 ``` {.lua} | |
| 27 pubsub_post_actor = "superuser" | |
| 28 ``` | |
| 29 | |
| 30 The module uses an internal actor that has all privileges and can always | |
| 31 do everything. It is strongly suggested that you do not expose this to | |
| 32 the Internet. *Maybe* it shouldn't be the default... | |
| 33 | |
| 34 ### IP | |
| 35 | |
| 36 ``` {.lua} | |
| 37 pubsub_post_actor = "request.ip" | |
| 38 ``` | |
| 39 | |
| 40 Uses the IP address from the HTTP request as actor, which means this | |
| 41 pseudo-JID must be given a 'publisher' affiliation. This should work | |
| 42 nicely with the `autocreate_on_publish` setting, where the first actor | |
| 43 to attempt to publish to a non-existant node becomes owner of it, which | |
| 44 includes publishing rights. | |
| 45 | |
|
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
46 ## WebSub |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
47 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
48 ``` {.lua} |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
49 -- Per node secrets |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
50 pubsub_post_secrets = { |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
51 my_node = "shared secret" |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
52 } |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
53 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
54 -- Same secret for all nodes |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
55 pubsub_post_secret = "shared secret" |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
56 ``` |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
57 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
58 This enables the |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
59 [WebSub](https://www.w3.org/TR/2018/REC-websub-20180123/) [Authenticated |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
60 Content |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
61 Distribution](https://www.w3.org/TR/2018/REC-websub-20180123/#authenticated-content-distribution) |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
62 authentication method, where payloads are signed using a shared secret. |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
63 |
|
3256
0992c0398783
mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents:
3153
diff
changeset
|
64 ## Setting up affiliations |
|
0992c0398783
mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents:
3153
diff
changeset
|
65 |
|
3152
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3151
diff
changeset
|
66 Prosodys PubSub module supports [setting affiliations via |
|
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3151
diff
changeset
|
67 XMPP](https://xmpp.org/extensions/xep-0060.html#owner-affiliations), in |
|
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3151
diff
changeset
|
68 trunk since [revision |
|
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3151
diff
changeset
|
69 384ef9732b81](https://hg.prosody.im/trunk/rev/384ef9732b81). |
| 3100 | 70 |
| 71 It can however be done from another plugin: | |
| 72 | |
| 73 ``` {.lua} | |
| 74 local mod_pubsub = module:depends("pubsub"); | |
| 75 local pubsub = mod_pubsub.service; | |
| 76 | |
| 77 pubsub:create("princely_musings", true); | |
| 78 pubsub:set_affiliation("princely_musings", true, "127.0.0.1", "publisher"); | |
| 79 ``` |