Software / code / prosody
Comparison
plugins/muc/muc.lib.lua @ 6101:a861dc18e08d
plugins/muc/muc.lib: Add disco iq handlers with compatible argument signature
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Fri, 21 Feb 2014 19:06:33 -0500 |
| parent | 6100:c78ba94d3261 |
| child | 6102:385772166289 |
comparison
equal
deleted
inserted
replaced
| 6100:c78ba94d3261 | 6101:a861dc18e08d |
|---|---|
| 825 end | 825 end |
| 826 self:set_persistent(false); | 826 self:set_persistent(false); |
| 827 module:fire_event("muc-room-destroyed", { room = self }); | 827 module:fire_event("muc-room-destroyed", { room = self }); |
| 828 end | 828 end |
| 829 | 829 |
| 830 function room_mt:handle_disco_info_get_query(origin, stanza) | |
| 831 origin.send(self:get_disco_info(stanza)); | |
| 832 return true; | |
| 833 end | |
| 834 | |
| 835 function room_mt:handle_disco_items_get_query(origin, stanza) | |
| 836 origin.send(self:get_disco_items(stanza)); | |
| 837 return true; | |
| 838 end | |
| 839 | |
| 830 function room_mt:handle_admin_item_set_command(origin, stanza) | 840 function room_mt:handle_admin_item_set_command(origin, stanza) |
| 831 local item = stanza.tags[1].tags[1]; | 841 local item = stanza.tags[1].tags[1]; |
| 832 if item.attr.jid then -- Validate provided JID | 842 if item.attr.jid then -- Validate provided JID |
| 833 item.attr.jid = jid_prep(item.attr.jid); | 843 item.attr.jid = jid_prep(item.attr.jid); |
| 834 if not item.attr.jid then | 844 if not item.attr.jid then |
| 949 | 959 |
| 950 function room_mt:handle_iq_to_room(origin, stanza) | 960 function room_mt:handle_iq_to_room(origin, stanza) |
| 951 local type = stanza.attr.type; | 961 local type = stanza.attr.type; |
| 952 local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns; | 962 local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns; |
| 953 if xmlns == "http://jabber.org/protocol/disco#info" and type == "get" and not stanza.tags[1].attr.node then | 963 if xmlns == "http://jabber.org/protocol/disco#info" and type == "get" and not stanza.tags[1].attr.node then |
| 954 origin.send(self:get_disco_info(stanza)); | 964 return self:handle_disco_info_get_query(origin, stanza) |
| 955 return true; | |
| 956 elseif xmlns == "http://jabber.org/protocol/disco#items" and type == "get" and not stanza.tags[1].attr.node then | 965 elseif xmlns == "http://jabber.org/protocol/disco#items" and type == "get" and not stanza.tags[1].attr.node then |
| 957 origin.send(self:get_disco_items(stanza)); | 966 return self:handle_disco_items_get_query(origin, stanza) |
| 958 return true; | |
| 959 elseif xmlns == "http://jabber.org/protocol/muc#admin" then | 967 elseif xmlns == "http://jabber.org/protocol/muc#admin" then |
| 960 local item = stanza.tags[1].tags[1]; | 968 local item = stanza.tags[1].tags[1]; |
| 961 if item and item.name == "item" then | 969 if item and item.name == "item" then |
| 962 if type == "set" then | 970 if type == "set" then |
| 963 return self:handle_admin_item_set_command(origin, stanza) | 971 return self:handle_admin_item_set_command(origin, stanza) |