X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=plugins%2Fmod_pubsub.lua;h=841de14761b8108e070911b88096f74b8806a292;hb=62e24f323209d90f117e65f964630369cfd03165;hp=efcbd7695b3f9ee878c0e34f488fc61645a575b6;hpb=5fcaaad24974593786a80d593ba496020e293000;p=prosody.git diff --git a/plugins/mod_pubsub.lua b/plugins/mod_pubsub.lua index efcbd769..841de147 100644 --- a/plugins/mod_pubsub.lua +++ b/plugins/mod_pubsub.lua @@ -192,8 +192,10 @@ local feature_map = { local function add_disco_features_from_service(disco, service) for method, features in pairs(feature_map) do if service[method] then - for _, feature in ipairs(feature_map) do - disco:tag("feature", { var = xmlns_pubsub.."#"..feature }):up(); + for _, feature in ipairs(features) do + if feature then + disco:tag("feature", { var = xmlns_pubsub.."#"..feature }):up(); + end end end end @@ -205,10 +207,11 @@ local function add_disco_features_from_service(disco, service) end local function build_disco_info(service) - disco_info = st.stanza("query", { xmlns = "http://jabber.org/protocol/disco#info" }) + local disco_info = st.stanza("query", { xmlns = "http://jabber.org/protocol/disco#info" }) :tag("identity", { category = "pubsub", type = "service" }):up() :tag("feature", { var = "http://jabber.org/protocol/pubsub" }):up(); add_disco_features_from_service(disco_info, service); + return disco_info; end module:hook("iq-get/host/http://jabber.org/protocol/disco#info:query", function (event) @@ -233,7 +236,8 @@ end); local admin_aff = module:get_option_string("default_admin_affiliation", "owner"); local function get_affiliation(jid) - if jid == module.host or usermanager.is_admin(jid, module.host) then + local bare_jid = jid_bare(jid); + if bare_jid == module.host or usermanager.is_admin(bare_jid, module.host) then return admin_aff; end end