Mercurial > prosody-hg
comparison plugins/mod_pubsub/mod_pubsub.lua @ 13456:e9ab660b9c5f
mod_pubsub: Add shell commands to create and list nodes
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 06 Mar 2024 17:38:21 +0000 |
| parents | c94989c557cd |
| children | 3347ed1014b8 |
comparison
equal
deleted
inserted
replaced
| 13455:2a001cd7f99a | 13456:e9ab660b9c5f |
|---|---|
| 248 | 248 |
| 249 jid = module.host; | 249 jid = module.host; |
| 250 normalize_jid = jid_bare; | 250 normalize_jid = jid_bare; |
| 251 })); | 251 })); |
| 252 end | 252 end |
| 253 | |
| 254 local function get_service(service_jid) | |
| 255 return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service; | |
| 256 end | |
| 257 | |
| 258 module:add_item("shell-command", { | |
| 259 section = "pubsub"; | |
| 260 section_desc = "Manage publish/subscribe nodes"; | |
| 261 name = "create_node"; | |
| 262 desc = "Create a node with the specified name"; | |
| 263 args = { | |
| 264 { name = "service_jid", type = "string" }; | |
| 265 { name = "node_name", type = "string" }; | |
| 266 }; | |
| 267 host_selector = "service_jid"; | |
| 268 | |
| 269 handler = function (self, service_jid, node_name) --luacheck: ignore 212/self | |
| 270 return get_service(service_jid):create(node_name, true); | |
| 271 end; | |
| 272 }); | |
| 273 | |
| 274 module:add_item("shell-command", { | |
| 275 section = "pubsub"; | |
| 276 section_desc = "Manage publish/subscribe nodes"; | |
| 277 name = "list_nodes"; | |
| 278 desc = "List nodes on a pubsub service"; | |
| 279 args = { | |
| 280 { name = "service_jid", type = "string" }; | |
| 281 }; | |
| 282 host_selector = "service_jid"; | |
| 283 | |
| 284 handler = function (self, service_jid) --luacheck: ignore 212/self | |
| 285 local service = get_service(service_jid); | |
| 286 local nodes = select(2, assert(service:get_nodes(true))); | |
| 287 local count = 0; | |
| 288 for node_name in pairs(nodes) do | |
| 289 count = count + 1; | |
| 290 self.session.print(node_name); | |
| 291 end | |
| 292 return true, ("%d nodes"):format(count); | |
| 293 end; | |
| 294 }); |
