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.
--- 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;