File

mod_discodot/mod_discodot.lua @ 4980:da151f9af861

replaced 'session' with 'origin' in push_disable session is not defined in this function, trying to access it leads to an error. The correct reference seems to be 'origin'. (This may have come about by copying from the similar code in process_stanza_queue.)
author arcseconds
date Sat, 30 Jul 2022 21:07:47 +1200
parent 4577:253df0798996
line wrap: on
line source

local cm = require("core.configmanager");

local function format_host(host, conf)
	if host == "*" then
		return "Global"
	end
	local component_module = conf["component_module"];
	if type(component_module) == "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)

	local config = 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 type(disco_items) == "table" then
			for _, pair in ipairs(disco_items) do
				print(string.format("%q -> %q", host, pair[1]));
			end
		end

	end

	print("}")

	return 0
end