comparison mod_pubsub_serverinfo/mod_pubsub_serverinfo.lua @ 5805:55b99f593c3a

mod_pubsub_serverinfo: Disco/info cache TTL should be configurable This module caches the disco/info results of remote domains. This commit introduces a new configuration option that allows an admin to configure the cache expiry duration.
author Guus der Kinderen <guus.der.kinderen@gmail.com>
date Thu, 04 Jan 2024 12:05:51 +0100
parents c3eeeb968403
children 2465d5191ae9
comparison
equal deleted inserted replaced
5804:c3eeeb968403 5805:55b99f593c3a
5 local local_domain = module:get_host(); 5 local local_domain = module:get_host();
6 local service = module:get_option(module.name .. "_service") or "pubsub." .. local_domain; 6 local service = module:get_option(module.name .. "_service") or "pubsub." .. local_domain;
7 local node = module:get_option(module.name .. "_node") or "serverinfo"; 7 local node = module:get_option(module.name .. "_node") or "serverinfo";
8 local actor = module.host .. "/modules/" .. module.name; 8 local actor = module.host .. "/modules/" .. module.name;
9 local publication_interval = module:get_option(module.name .. "_publication_interval") or 300; 9 local publication_interval = module:get_option(module.name .. "_publication_interval") or 300;
10 local cache_ttl = module:get_option(module.name .. "_cache_ttl") or 3600;
10 11
11 local opt_in_reports 12 local opt_in_reports
12 13
13 function module.load() 14 function module.load()
14 discover_node():next( 15 discover_node():next(
211 if query ~= nil then 212 if query ~= nil then
212 for feature in query:childtags("feature", "http://jabber.org/protocol/disco#info") do 213 for feature in query:childtags("feature", "http://jabber.org/protocol/disco#info") do
213 if feature.attr.var == 'urn:xmpp:serverinfo:0' then 214 if feature.attr.var == 'urn:xmpp:serverinfo:0' then
214 opt_in_cache[remoteDomain] = { 215 opt_in_cache[remoteDomain] = {
215 opt_in = true; 216 opt_in = true;
216 expires = os.time() + 3600; 217 expires = os.time() + cache_ttl;
217 } 218 }
218 return; -- prevent 'false' to be cached, down below. 219 return; -- prevent 'false' to be cached, down below.
219 end 220 end
220 end 221 end
221 end 222 end
222 end 223 end
223 opt_in_cache[remoteDomain] = { 224 opt_in_cache[remoteDomain] = {
224 opt_in = false; 225 opt_in = false;
225 expires = os.time() + 3600; 226 expires = os.time() + cache_ttl;
226 } 227 }
227 end, 228 end,
228 function(response) 229 function(response)
229 opt_in_cache[remoteDomain] = { 230 opt_in_cache[remoteDomain] = {
230 opt_in = false; 231 opt_in = false;
231 expires = os.time() + 3600; 232 expires = os.time() + cache_ttl;
232 } 233 }
233 end 234 end
234 ); 235 );
235 236
236 -- return 'false' for now. Better luck next time... 237 -- return 'false' for now. Better luck next time...