Mercurial > prosody-modules
comparison mod_persisthosts/mod_persisthosts.lua @ 2446:c563f4d64302
mod_persisthosts: Module that dynamically creates stub configuration files for dynamically activated hosts
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 18 Jan 2017 01:38:17 +0100 |
| parents | |
| children | 366fadb5c6e5 |
comparison
equal
deleted
inserted
replaced
| 2445:e822900c87d4 | 2446:c563f4d64302 |
|---|---|
| 1 -- mod_persisthosts | |
| 2 module:set_global(); | |
| 3 | |
| 4 local set = require"util.set"; | |
| 5 local stat = require"lfs".attributes; | |
| 6 local resolve_relative_path = require"core.configmanager".resolve_relative_path; | |
| 7 | |
| 8 local vhost_path = module:get_option_string("persisthosts_path", "conf.d"); | |
| 9 local path_pattern = resolve_relative_path(prosody.paths.config, vhost_path) .. "/%s.cfg.lua"; | |
| 10 | |
| 11 local original = set.new(); | |
| 12 original:include(prosody.hosts); | |
| 13 | |
| 14 module:hook("host-activated", function(host) | |
| 15 if not original:contains(host) then | |
| 16 local path = path_pattern:format(host); | |
| 17 if not stat(path) then | |
| 18 local fh, err = io.open(path, "w"); | |
| 19 if fh then | |
| 20 fh:write(("VirtualHost%q\n"):format(host)); | |
| 21 fh:close(); | |
| 22 module:log("info", "Config file for host '%s' created", host); | |
| 23 else | |
| 24 module:log("error", "Could not open '%s' for writing: %s", path, err or "duno"); | |
| 25 end | |
| 26 else | |
| 27 module:log("debug", "File '%s' existed already", path); | |
| 28 end | |
| 29 else | |
| 30 module:log("debug", "VirtualHost '%s' existed already", host); | |
| 31 end | |
| 32 end); | |
| 33 |
