From 3d06d7c30922b8cd1d37bbd36f6bb8865eca19bf Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sat, 20 Oct 2018 20:22:55 +0200 Subject: 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. --- plugins/mod_pep.lua | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'plugins/mod_pep.lua') diff --git a/plugins/mod_pep.lua b/plugins/mod_pep.lua index 069d67f2..681e5be8 100644 --- a/plugins/mod_pep.lua +++ b/plugins/mod_pep.lua @@ -158,6 +158,21 @@ local function get_broadcaster(username) 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 @@ function get_pep_service(username) }; autocreate_on_publish = true; - autocreate_on_subscribe = true; + autocreate_on_subscribe = false; nodestore = nodestore(username); itemstore = simple_itemstore(username); @@ -216,6 +231,11 @@ function get_pep_service(username) 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; -- cgit v1.2.3