view mod_persisthosts/mod_persisthosts.lua @ 5139:449e4ca4de32

mod_unified_push: Remove dependency on trunk util.jwt (0.12 compat) This should allow the module to work on 0.12, while preserving expiry checking (which was not built in to 0.12's util.jwt).
author Matthew Wild <mwild1@gmail.com>
date Tue, 10 Jan 2023 16:34:21 +0000
parents 366fadb5c6e5
children
line wrap: on
line source

-- mod_persisthosts
module:set_global();

local set = require"util.set";
local stat = require"lfs".attributes;
local resolve_relative_path = require"core.configmanager".resolve_relative_path;

local vhost_path = module:get_option_string("persisthosts_path", "conf.d");
local path_pattern = resolve_relative_path(prosody.paths.config, vhost_path) .. "/%s.cfg.lua";

local original = set.new();
original:include(prosody.hosts);

module:hook("host-activated", function(host)
	if not original:contains(host) then
		local path = path_pattern:format(host);
		if not stat(path) then
			local fh, err = io.open(path, "w");
			if fh then
				fh:write(("VirtualHost%q\n"):format(host));
				module:fire_event("host-persisted", { host = host, file = fh });
				fh:close();
				module:log("info", "Config file for host '%s' created", host);
			else
				module:log("error", "Could not open '%s' for writing: %s", path, err or "duno");
			end
		else
			module:log("debug", "File '%s' existed already", path);
		end
	else
		module:log("debug", "VirtualHost '%s' existed already", host);
	end
end);