Software /
code /
prosody-modules
Comparison
mod_delegation/mod_delegation.lua @ 3271:7504f765e767
mod_delegation: Simplify iq handling by hooking on iq-get/ instead of iq/.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Fri, 24 Aug 2018 21:36:58 +0200 |
parent | 2758:82109d8eca41 |
child | 3317:36a9170352b5 |
comparison
equal
deleted
inserted
replaced
3270:7776c9dc5f37 | 3271:7504f765e767 |
---|---|
563 -- for now it's OK because Prosody is not returning anything on request on bare jid | 563 -- for now it's OK because Prosody is not returning anything on request on bare jid |
564 -- but to be properly done, any Prosody reply should be kept and managing entities items should be added (merged) to it. | 564 -- but to be properly done, any Prosody reply should be kept and managing entities items should be added (merged) to it. |
565 -- account-disco-items can't be cancelled (return value of hooks are not checked in mod_disco), so corountine needs | 565 -- account-disco-items can't be cancelled (return value of hooks are not checked in mod_disco), so corountine needs |
566 -- to be used with util.async (to get the IQ result, merge items then return from the event) | 566 -- to be used with util.async (to get the IQ result, merge items then return from the event) |
567 local origin, stanza = event.origin, event.stanza; | 567 local origin, stanza = event.origin, event.stanza; |
568 if stanza.attr.type ~= "get" then return; end | |
569 local node = stanza.tags[1].attr.node; | 568 local node = stanza.tags[1].attr.node; |
570 local username = jid_split(stanza.attr.to) or origin.username; | 569 local username = jid_split(stanza.attr.to) or origin.username; |
571 if not stanza.attr.to or is_contact_subscribed(username, module.host, jid_bare(stanza.attr.from)) then | 570 if not stanza.attr.to or is_contact_subscribed(username, module.host, jid_bare(stanza.attr.from)) then |
572 if node == nil or node == "" then | 571 if node == nil or node == "" then |
573 local ns_data = ns_delegations[_DISCO_REMAINING] | 572 local ns_data = ns_delegations[_DISCO_REMAINING] |
576 return true | 575 return true |
577 end | 576 end |
578 end | 577 end |
579 end | 578 end |
580 end | 579 end |
581 module:hook("iq/bare/http://jabber.org/protocol/disco#items:query", disco_items_hook, 100) | 580 module:hook("iq-get/bare/http://jabber.org/protocol/disco#items:query", disco_items_hook, 100) |
582 | 581 |
583 local function disco_items_raw_hook(event) | 582 local function disco_items_raw_hook(event) |
584 -- this method is called when account-disco-items-* event are not called | 583 -- this method is called when account-disco-items-* event are not called |
585 -- notably when a disco-item is done by an unsubscibed entity | 584 -- notably when a disco-item is done by an unsubscibed entity |
586 -- (i.e. an entity doing a disco#item on an entity without having | 585 -- (i.e. an entity doing a disco#item on an entity without having |