mod_pubsub: Add shell commands to create and list nodes

This commit is contained in:
Matthew Wild 2024-03-06 17:38:21 +00:00
parent 72f1094ea4
commit 7ad4c88432

View file

@ -250,3 +250,45 @@ function module.load()
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;
});