Software /
code /
prosody
Changeset
9542:b8bfcfbe5126
mod_pep: Add automatic subscriptions on node creation (fixes #1222)
Replaces automatic node creation on subscription, since this casues
problems when trying to keep nodes private or other specific settings.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 20 Oct 2018 20:22:55 +0200 |
parents | 9541:742977123168 |
children | 9545:9dc7280dd8dc |
files | plugins/mod_pep.lua |
diffstat | 1 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_pep.lua Sat Oct 20 20:12:53 2018 +0200 +++ b/plugins/mod_pep.lua Sat Oct 20 20:22:55 2018 +0200 @@ -158,6 +158,21 @@ return simple_broadcast; end +local function on_node_creation(event) + local service = event.service; + local node = event.node; + local username = service.config.pep_username; + + local service_recipients = recipients[username]; + if not service_recipients then return; end + + for recipient, nodes in pairs(service_recipients) do + if nodes:contains(node) then + service:add_subscription(node, recipient, recipient, { presence = true }); + end + end +end + function get_pep_service(username) module:log("debug", "get_pep_service(%q)", username); local user_bare = jid_join(username, host); @@ -174,7 +189,7 @@ }; autocreate_on_publish = true; - autocreate_on_subscribe = true; + autocreate_on_subscribe = false; nodestore = nodestore(username); itemstore = simple_itemstore(username); @@ -216,6 +231,11 @@ return service; end +module:hook("item-added/pep-service", function (event) + local service = event.item.service; + module:hook_object_event(service.events, "node-created", on_node_creation); +end); + function handle_pubsub_iq(event) local origin, stanza = event.origin, event.stanza; local service_name = origin.username;