diff -r 742977123168 -r b8bfcfbe5126 plugins/mod_pep.lua --- 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;