Software /
code /
prosody
Comparison
plugins/mod_roster.lua @ 110:bb5ac5976a97
Fixed: Roster support
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Wed, 22 Oct 2008 21:20:07 +0500 |
parent | 108:1d79da482c5d |
child | 114:bed2a8508cf5 |
comparison
equal
deleted
inserted
replaced
109:7efedc96352a | 110:bb5ac5976a97 |
---|---|
4 | 4 |
5 local jid_split = require "util.jid".split; | 5 local jid_split = require "util.jid".split; |
6 local t_concat = table.concat; | 6 local t_concat = table.concat; |
7 | 7 |
8 local rm_remove_from_roster = require "core.rostermanager".remove_from_roster; | 8 local rm_remove_from_roster = require "core.rostermanager".remove_from_roster; |
9 local rm_add_to_roster = require "core.rostermanager".add_to_roster; | |
9 local rm_roster_push = require "core.rostermanager".roster_push; | 10 local rm_roster_push = require "core.rostermanager".roster_push; |
10 | 11 |
11 add_iq_handler("c2s", "jabber:iq:roster", | 12 add_iq_handler("c2s", "jabber:iq:roster", |
12 function (session, stanza) | 13 function (session, stanza) |
13 if stanza.tags[1].name == "query" then | 14 if stanza.tags[1].name == "query" then |
14 if stanza.attr.type == "get" then | 15 if stanza.attr.type == "get" then |
15 local roster = st.reply(stanza) | 16 local roster = st.reply(stanza) |
16 :query("jabber:iq:roster"); | 17 :query("jabber:iq:roster"); |
17 for jid in pairs(session.roster) do | 18 for jid in pairs(session.roster) do |
18 local item = st.stanza("item", { | 19 roster:tag("item", { |
19 jid = jid, | 20 jid = jid, |
20 subscription = session.roster[jid].subscription, | 21 subscription = session.roster[jid].subscription, |
21 name = session.roster[jid].name, | 22 name = session.roster[jid].name, |
22 }); | 23 }); |
23 for group in pairs(session.roster[jid].groups) do | 24 for group in pairs(session.roster[jid].groups) do |
24 item:tag("group"):text(group):up(); | 25 roster:tag("group"):text(group):up(); |
25 end | 26 end |
26 roster:add_child(item); | |
27 end | 27 end |
28 send(session, roster); | 28 send(session, roster); |
29 return true; | 29 return true; |
30 elseif stanza.attr.type == "set" then | 30 elseif stanza.attr.type == "set" then |
31 local query = stanza.tags[1]; | 31 local query = stanza.tags[1]; |
50 end | 50 end |
51 else | 51 else |
52 local r_item = {name = item.attr.name, groups = {}}; | 52 local r_item = {name = item.attr.name, groups = {}}; |
53 if r_item.name == "" then r_item.name = nil; end | 53 if r_item.name == "" then r_item.name = nil; end |
54 if session.roster[item.attr.jid] then | 54 if session.roster[item.attr.jid] then |
55 r_item.subscription = session.roster[item.attr.jid]; | 55 r_item.subscription = session.roster[item.attr.jid].subscription; |
56 else | 56 else |
57 r_item.subscription = "none"; | 57 r_item.subscription = "none"; |
58 end | 58 end |
59 for _, child in ipairs(item) do | 59 for _, child in ipairs(item) do |
60 if child.name == "group" then | 60 if child.name == "group" then |