265 end |
265 end |
266 origin.send(reply); |
266 origin.send(reply); |
267 return true; |
267 return true; |
268 end |
268 end |
269 |
269 |
|
270 function handlers.owner_set_subscriptions(origin, stanza, subscriptions, service) |
|
271 local node = subscriptions.attr.node; |
|
272 if not node then |
|
273 origin.send(pubsub_error_reply(stanza, "nodeid-required")); |
|
274 return true; |
|
275 end |
|
276 if not service:may(node, stanza.attr.from, "subscribe_other") then |
|
277 origin.send(pubsub_error_reply(stanza, "forbidden")); |
|
278 return true; |
|
279 end |
|
280 |
|
281 local node_obj = service.nodes[node]; |
|
282 if not node_obj then |
|
283 origin.send(pubsub_error_reply(stanza, "item-not-found")); |
|
284 return true; |
|
285 end |
|
286 |
|
287 for subscription_tag in subscriptions:childtags("subscription") do |
|
288 if subscription_tag.attr.subscription == 'subscribed' then |
|
289 local ok, err = service:add_subscription(node, stanza.attr.from, subscription_tag.attr.jid); |
|
290 if not ok then |
|
291 origin.send(pubsub_error_reply(stanza, err)); |
|
292 return true; |
|
293 end |
|
294 elseif subscription_tag.attr.subscription == 'none' then |
|
295 local ok, err = service:remove_subscription(node, stanza.attr.from, subscription_tag.attr.jid); |
|
296 if not ok then |
|
297 origin.send(pubsub_error_reply(stanza, err)); |
|
298 return true; |
|
299 end |
|
300 end |
|
301 end |
|
302 |
|
303 local reply = st.reply(stanza); |
|
304 origin.send(reply); |
|
305 return true; |
|
306 end |
|
307 |
270 function handlers.set_create(origin, stanza, create, service) |
308 function handlers.set_create(origin, stanza, create, service) |
271 local node = create.attr.node; |
309 local node = create.attr.node; |
272 local ok, ret, reply; |
310 local ok, ret, reply; |
273 local config; |
311 local config; |
274 local configure = stanza.tags[1]:get_child("configure"); |
312 local configure = stanza.tags[1]:get_child("configure"); |