diff options
author | Waqas Hussain <waqas20@gmail.com> | 2010-01-23 18:16:10 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2010-01-23 18:16:10 +0500 |
commit | 54ca722e47be133f4e6ae7b9f8650f98ff7f619e (patch) | |
tree | 673f164ca329be02e4d0db9aeb9e3b4a472986e8 | |
parent | 237f6835634f7c878c085b724b2e07bf84ef014a (diff) | |
download | prosody-54ca722e47be133f4e6ae7b9f8650f98ff7f619e.tar.gz prosody-54ca722e47be133f4e6ae7b9f8650f98ff7f619e.zip |
mod_disco: Added option 'disco_items' to allow appending items to a host's disco#items result.
-rw-r--r-- | plugins/mod_disco.lua | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/plugins/mod_disco.lua b/plugins/mod_disco.lua index a96472c4..f7e51b83 100644 --- a/plugins/mod_disco.lua +++ b/plugins/mod_disco.lua @@ -12,6 +12,25 @@ local jid_split = require "util.jid".split; local jid_bare = require "util.jid".bare; local st = require "util.stanza" +local disco_items = module:get_option("disco_items") or {}; +do -- validate disco_items + for _, item in ipairs(disco_items) do + local err; + if type(item) ~= "table" then + err = "item is not a table"; + elseif type(item[1]) ~= "string" then + err = "item jid is not a string"; + elseif item[2] and type(item[2]) ~= "string" then + err = "item name is not a string"; + end + if err then + module:log("error", "option disco_items is malformed: %s", err); + disco_items = {}; -- TODO clean up data instead of removing it? + break; + end + end +end + module:add_identity("server", "im", "Prosody"); -- FIXME should be in the non-existing mod_router module:add_feature("http://jabber.org/protocol/disco#info"); module:add_feature("http://jabber.org/protocol/disco#items"); @@ -50,6 +69,9 @@ module:hook("iq/host/http://jabber.org/protocol/disco#items:query", function(eve for jid in pairs(componentmanager_get_children(module.host)) do reply:tag("item", {jid = jid}):up(); end + for _, item in ipairs(disco_items) do + reply:tag("item", {jid=item[1], name=item[2]}):up(); + end origin.send(reply); return true; end); |