view mod_discodot/mod_discodot.tl @ 5804:c3eeeb968403

mod_pubsub_serverinfo: Detect existence of pub/sub node Instead of blindly trying to create the pub/sub node to publish items to, a service discovery query is performed to check if node creation is required. Added various bits of warn and debug logging, to give a user better feedback if and why something is failing.
author Guus der Kinderen <guus.der.kinderen@gmail.com>
date Thu, 04 Jan 2024 11:59:35 +0100
parents 253df0798996
children
line wrap: on
line source

local cm = require"core.configmanager";

local function format_host(host:string, conf:{string:any}) : string
	if host == "*" then
		return "Global";
	end
	local component_module = conf["component_module"];
	if component_module is string then
		if component_module == "component" then
			return string.format("Component %q", host);
		else
			return string.format("Component %q %q", host, component_module);
		end
	else
		return string.format("VirtualHost %q", host);
	end
end

function module.command(arg : { string }) : integer

	local config : { string : { string : any } } = cm.getconfig();

	print"digraph \"prosody\" {"
	for host, conf in pairs(config) do
		print(string.format("%q [label=%q]", host, format_host(host, conf)));
		local parent = host:match("%.(.*)");
		if parent and rawget(config, parent) then
			print(string.format("%q -> %q", parent, host));
		end
		local disco_items = conf["disco_items"]
		if disco_items is { { string, string } } then
			for _, pair in ipairs(disco_items) do
				print(string.format("%q -> %q", host, pair[1]));
			end
		end

	end

	print"}"

	return 0
end