Comparison

plugins/mod_pubsub/pubsub.lib.lua @ 9131:d0d676b86013

pubsub.lib: Enable publish-options unconditionally
author Matthew Wild <mwild1@gmail.com>
date Mon, 06 Aug 2018 11:25:31 +0100
parent 9130:74525b8104d5
child 9136:07fc2c5c0c2e
comparison
equal deleted inserted replaced
9130:74525b8104d5 9131:d0d676b86013
9 local dataform = require"util.dataforms".new; 9 local dataform = require"util.dataforms".new;
10 10
11 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; 11 local xmlns_pubsub = "http://jabber.org/protocol/pubsub";
12 local xmlns_pubsub_errors = "http://jabber.org/protocol/pubsub#errors"; 12 local xmlns_pubsub_errors = "http://jabber.org/protocol/pubsub#errors";
13 local xmlns_pubsub_owner = "http://jabber.org/protocol/pubsub#owner"; 13 local xmlns_pubsub_owner = "http://jabber.org/protocol/pubsub#owner";
14
15 local enable_publish_options = module:get_option_boolean("enable_publish_options", true);
16 14
17 local _M = {}; 15 local _M = {};
18 16
19 local handlers = {}; 17 local handlers = {};
20 _M.handlers = handlers; 18 _M.handlers = handlers;
196 create = { "create-nodes", "instant-nodes", "item-ids", "create-and-configure" }; 194 create = { "create-nodes", "instant-nodes", "item-ids", "create-and-configure" };
197 delete = { "delete-nodes" }; 195 delete = { "delete-nodes" };
198 get_items = { "retrieve-items" }; 196 get_items = { "retrieve-items" };
199 get_subscriptions = { "retrieve-subscriptions" }; 197 get_subscriptions = { "retrieve-subscriptions" };
200 node_defaults = { "retrieve-default" }; 198 node_defaults = { "retrieve-default" };
201 publish = { "publish", "multi-items", enable_publish_options and "publish-options" or nil }; 199 publish = { "publish", "multi-items", "publish-options" };
202 purge = { "purge-nodes" }; 200 purge = { "purge-nodes" };
203 retract = { "delete-items", "retract-items" }; 201 retract = { "delete-items", "retract-items" };
204 set_node_config = { "config-node" }; 202 set_node_config = { "config-node" };
205 set_affiliation = { "modify-affiliations" }; 203 set_affiliation = { "modify-affiliations" };
206 }; 204 };
561 if not node then 559 if not node then
562 origin.send(pubsub_error_reply(stanza, "nodeid-required")); 560 origin.send(pubsub_error_reply(stanza, "nodeid-required"));
563 return true; 561 return true;
564 end 562 end
565 local publish_options = stanza.tags[1]:get_child("publish-options"); 563 local publish_options = stanza.tags[1]:get_child("publish-options");
566 if enable_publish_options and publish_options then 564 if publish_options then
567 -- Ensure that the node configuration matches the values in publish-options 565 -- Ensure that the node configuration matches the values in publish-options
568 local publish_options_form = publish_options:get_child("x", "jabber:x:data"); 566 local publish_options_form = publish_options:get_child("x", "jabber:x:data");
569 local required_config = config_from_xep0060(node_config_form:data(publish_options_form), true); 567 local required_config = config_from_xep0060(node_config_form:data(publish_options_form), true);
570 local node_accessible, node_config = service:get_node_config(node, stanza.attr.from); 568 local node_accessible, node_config = service:get_node_config(node, stanza.attr.from);
571 if node_accessible == false and service.config.autocreate_on_publish then 569 if node_accessible == false and service.config.autocreate_on_publish then