mix_pam: Make the roster annotations work
This commit is contained in:
parent
562d0d7368
commit
f91e597c57
@ -287,30 +287,32 @@ end);
|
|||||||
module:hook("roster-get", function(event)
|
module:hook("roster-get", function(event)
|
||||||
-- NOTE: Currently this requires a patch to make mod_roster emit
|
-- NOTE: Currently this requires a patch to make mod_roster emit
|
||||||
-- the roster-get event
|
-- the roster-get event
|
||||||
local annotate = event.stanza
|
local reply, stanza = event.reply, event.stanza;
|
||||||
:get_child("query", "jabber:iq:roster")
|
local client_query = stanza:get_child("query", "jabber:iq:roster");
|
||||||
:get_child("annotate", mix_roster_xmlns);
|
if not client_query then return; end
|
||||||
|
|
||||||
|
local annotate = client_query:get_child("annotate", mix_roster_xmlns);
|
||||||
if not annotate then return; end
|
if not annotate then return; end
|
||||||
local stanza = event.stanza;
|
|
||||||
|
|
||||||
module:log("debug", "Annotated roster request received");
|
module:log("debug", "Annotated roster request received");
|
||||||
|
|
||||||
-- User requested the roster with an <annotate/>
|
-- User requested the roster with an <annotate/>
|
||||||
local roster = rm_load_roster(jid.bare(stanza.attr.from));
|
local roster = rm_load_roster(jid.node(stanza.attr.from), jid.host(stanza.attr.from));
|
||||||
local query = event.reply:get_child("query", "jabber:iq:roster");
|
local query = reply:get_child("query", "jabber:iq:roster");
|
||||||
for contact, roster_item in pairs(roster) do
|
query:maptags(function (item)
|
||||||
if roster_item["mix_spid"] ~= nil then
|
-- Bail early, just in case
|
||||||
for _, item in ipairs(query:childtags("item")) do
|
if item.name ~= "item" then return item; end
|
||||||
if item.attr.jid == contact then
|
|
||||||
|
local spid = roster[item.attr.jid]["mix_spid"];
|
||||||
|
if spid ~= nil then
|
||||||
item:tag("channel", {
|
item:tag("channel", {
|
||||||
xmlns = mix_roster_xmlns,
|
xmlns = mix_roster_xmlns,
|
||||||
["participant-id"] = roster_item["mix_spid"],
|
["participant-id"] = spid,
|
||||||
});
|
});
|
||||||
break;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return item;
|
||||||
|
end);
|
||||||
end);
|
end);
|
||||||
|
|
||||||
module:hook("message/bare", function(event)
|
module:hook("message/bare", function(event)
|
||||||
|
Loading…
Reference in New Issue
Block a user