Mercurial > prosody-modules
comparison mod_pubsub_serverinfo/mod_pubsub_serverinfo.lua @ 5816:45d0802d0787
mod_pubsub_serverinfo: Allow configuration of node persistence/deletion
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 08 Jan 2024 15:54:09 +0000 |
parents | 77c5709bd57a |
children | 7905766d01f6 |
comparison
equal
deleted
inserted
replaced
5815:77c5709bd57a | 5816:45d0802d0787 |
---|---|
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 local cache_ttl = module:get_option(module.name .. "_cache_ttl") or 3600; |
11 local delete_node_on_unload = module:get_option_boolean(module.name.."_delete_node_on_unload", false); | |
12 local persist_items = module:get_option_boolean(module.name.."_persist_items", true); | |
11 | 13 |
12 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; | 14 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; |
13 | 15 |
14 function module.load() | 16 function module.load() |
15 discover_node():next( | 17 discover_node():next( |
37 module:add_timer(10, publish_serverinfo); | 39 module:add_timer(10, publish_serverinfo); |
38 end | 40 end |
39 | 41 |
40 function module.unload() | 42 function module.unload() |
41 -- This removes all subscribers, which may or may not be desirable, depending on the reason for the unload. | 43 -- This removes all subscribers, which may or may not be desirable, depending on the reason for the unload. |
42 delete_node(); -- Should this block, to delay unload() until the node is deleted? | 44 if delete_node_on_unload then |
45 delete_node(); | |
46 end | |
43 end | 47 end |
44 | 48 |
45 -- Returns a promise of a boolean | 49 -- Returns a promise of a boolean |
46 function discover_node() | 50 function discover_node() |
47 local request = st.iq({ type = "get", to = service, from = actor, id = new_id() }) | 51 local request = st.iq({ type = "get", to = service, from = actor, id = new_id() }) |
82 :up() | 86 :up() |
83 :tag("field", { var = "pubsub#max_items" }) | 87 :tag("field", { var = "pubsub#max_items" }) |
84 :text_tag("value", "1") | 88 :text_tag("value", "1") |
85 :up() | 89 :up() |
86 :tag("field", { var = "pubsub#persist_items" }) | 90 :tag("field", { var = "pubsub#persist_items" }) |
87 :text_tag("value", "0") | 91 :text_tag("value", persist_items and "1" or "0") |
88 | 92 |
89 module:log("debug", "Sending request to create pub/sub node '%s' at %s", node, service) | 93 module:log("debug", "Sending request to create pub/sub node '%s' at %s", node, service) |
90 return module:send_iq(request):next( | 94 return module:send_iq(request):next( |
91 function(response) | 95 function(response) |
92 if response.stanza == nil or response.stanza.attr.type ~= "result" then | 96 if response.stanza == nil or response.stanza.attr.type ~= "result" then |