plugins/mod_disco.lua
changeset 4337 a2ee8ab82dd9
parent 3695 d2c4856c7ed5
child 4985 0f72123ff513
equal deleted inserted replaced
4336:abcbcb15205c 4337:a2ee8ab82dd9
    52 		if not done[feature] then
    52 		if not done[feature] then
    53 			query:tag("feature", {var=feature}):up();
    53 			query:tag("feature", {var=feature}):up();
    54 			done[feature] = true;
    54 			done[feature] = true;
    55 		end
    55 		end
    56 	end
    56 	end
       
    57 	for _,extension in ipairs(module:get_host_items("extension")) do
       
    58 		if not done[extension] then
       
    59 			query:add_child(extension);
       
    60 			done[extension] = true;
       
    61 		end
       
    62 	end
    57 	_cached_server_disco_info = query;
    63 	_cached_server_disco_info = query;
    58 	_cached_server_caps_hash = calculate_hash(query);
    64 	_cached_server_caps_hash = calculate_hash(query);
    59 	_cached_server_caps_feature = st.stanza("c", {
    65 	_cached_server_caps_feature = st.stanza("c", {
    60 		xmlns = "http://jabber.org/protocol/caps";
    66 		xmlns = "http://jabber.org/protocol/caps";
    61 		hash = "sha-1";
    67 		hash = "sha-1";
    79 	return _cached_server_caps_hash;
    85 	return _cached_server_caps_hash;
    80 end
    86 end
    81 
    87 
    82 module:hook("item-added/identity", clear_disco_cache);
    88 module:hook("item-added/identity", clear_disco_cache);
    83 module:hook("item-added/feature", clear_disco_cache);
    89 module:hook("item-added/feature", clear_disco_cache);
       
    90 module:hook("item-added/extension", clear_disco_cache);
    84 module:hook("item-removed/identity", clear_disco_cache);
    91 module:hook("item-removed/identity", clear_disco_cache);
    85 module:hook("item-removed/feature", clear_disco_cache);
    92 module:hook("item-removed/feature", clear_disco_cache);
       
    93 module:hook("item-removed/extension", clear_disco_cache);
    86 
    94 
    87 -- Handle disco requests to the server
    95 -- Handle disco requests to the server
    88 module:hook("iq/host/http://jabber.org/protocol/disco#info:query", function(event)
    96 module:hook("iq/host/http://jabber.org/protocol/disco#info:query", function(event)
    89 	local origin, stanza = event.origin, event.stanza;
    97 	local origin, stanza = event.origin, event.stanza;
    90 	if stanza.attr.type ~= "get" then return; end
    98 	if stanza.attr.type ~= "get" then return; end