Software /
code /
prosody
Changeset
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 | 13455:2a001cd7f99a |
children | 13457:3347ed1014b8 |
files | plugins/mod_pubsub/mod_pubsub.lua |
diffstat | 1 files changed, 42 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_pubsub/mod_pubsub.lua Sat Mar 02 14:14:27 2024 +0100 +++ b/plugins/mod_pubsub/mod_pubsub.lua Wed Mar 06 17:38:21 2024 +0000 @@ -250,3 +250,45 @@ normalize_jid = jid_bare; })); end + +local function get_service(service_jid) + return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service; +end + +module:add_item("shell-command", { + section = "pubsub"; + section_desc = "Manage publish/subscribe nodes"; + name = "create_node"; + desc = "Create a node with the specified name"; + args = { + { name = "service_jid", type = "string" }; + { name = "node_name", type = "string" }; + }; + host_selector = "service_jid"; + + handler = function (self, service_jid, node_name) --luacheck: ignore 212/self + return get_service(service_jid):create(node_name, true); + end; +}); + +module:add_item("shell-command", { + section = "pubsub"; + section_desc = "Manage publish/subscribe nodes"; + name = "list_nodes"; + desc = "List nodes on a pubsub service"; + args = { + { name = "service_jid", type = "string" }; + }; + host_selector = "service_jid"; + + handler = function (self, service_jid) --luacheck: ignore 212/self + local service = get_service(service_jid); + local nodes = select(2, assert(service:get_nodes(true))); + local count = 0; + for node_name in pairs(nodes) do + count = count + 1; + self.session.print(node_name); + end + return true, ("%d nodes"):format(count); + end; +});