Mercurial > prosody-hg
comparison plugins/mod_pubsub/pubsub.lib.lua @ 9124:dcc490f0044d
pubsub.lib: auto-create node with publish-options if autocreation is enabled
| author | Jonas Wielicki <jonas@wielicki.name> |
|---|---|
| date | Sun, 05 Aug 2018 11:44:49 +0200 |
| parents | 5d5aa1c4fe34 |
| children | da7a2db01d6a c68d62ae9cb7 |
comparison
equal
deleted
inserted
replaced
| 9123:5d5aa1c4fe34 | 9124:dcc490f0044d |
|---|---|
| 550 local publish_options = stanza.tags[1]:get_child("publish-options"); | 550 local publish_options = stanza.tags[1]:get_child("publish-options"); |
| 551 if enable_publish_options and publish_options then | 551 if enable_publish_options and publish_options then |
| 552 -- Ensure that the node configuration matches the values in publish-options | 552 -- Ensure that the node configuration matches the values in publish-options |
| 553 local publish_options_form = publish_options:get_child("x", "jabber:x:data"); | 553 local publish_options_form = publish_options:get_child("x", "jabber:x:data"); |
| 554 local required_config = config_from_xep0060(node_config_form:data(publish_options_form), true); | 554 local required_config = config_from_xep0060(node_config_form:data(publish_options_form), true); |
| 555 local node_config = service:get_node_config(node, stanza.attr.from); | 555 local node_accessible, node_config = service:get_node_config(node, stanza.attr.from); |
| 556 if not check_preconditions(node_config, required_config) then | 556 if node_accessible == false and service.config.autocreate_on_publish then |
| 557 module:log("debug", "creating node %s with publish-options", node) | |
| 558 -- we need to create the node here so that it is configured | |
| 559 -- correctly | |
| 560 local created, err = service:create(node, stanza.attr.from, required_config) | |
| 561 if not created then | |
| 562 local reply = pubsub_error_reply(stanza, err); | |
| 563 origin.send(reply); | |
| 564 return true; | |
| 565 end | |
| 566 elseif not check_preconditions(node_config, required_config) then | |
| 557 local reply = pubsub_error_reply(stanza, "precondition-not-met"); | 567 local reply = pubsub_error_reply(stanza, "precondition-not-met"); |
| 558 origin.send(reply); | 568 origin.send(reply); |
| 559 return true; | 569 return true; |
| 560 end | 570 end |
| 561 end | 571 end |
