author | Kim Alvefur <zash@zash.se> |
Fri, 24 Aug 2018 14:52:09 +0200 | |
changeset 3505 | 1df139b157fb |
parent 3260 | 0992c0398783 |
child 3506 | 42e9e3c5eb02 |
permissions | -rw-r--r-- |
3104 | 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 |
||
3157
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3156
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:
3156
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:
3156
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:
3156
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:
3156
diff
changeset
|
17 |
|
3104 | 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 |
||
3505
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
46 |
## WebSub |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
47 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
48 |
``` {.lua} |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
49 |
-- Per node secrets |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
50 |
pubsub_post_secrets = { |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
51 |
my_node = "shared secret" |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
52 |
} |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
53 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
54 |
-- Same secret for all nodes |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
55 |
pubsub_post_secret = "shared secret" |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
56 |
``` |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
57 |
|
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
diff
changeset
|
58 |
This enables the |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
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:
3260
diff
changeset
|
60 |
Content |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3260
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:
3260
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:
3260
diff
changeset
|
63 |
|
3260
0992c0398783
mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents:
3157
diff
changeset
|
64 |
## Setting up affiliations |
0992c0398783
mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents:
3157
diff
changeset
|
65 |
|
3156
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3155
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:
3155
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:
3155
diff
changeset
|
68 |
trunk since [revision |
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3155
diff
changeset
|
69 |
384ef9732b81](https://hg.prosody.im/trunk/rev/384ef9732b81). |
3104 | 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 |
``` |