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 |
