Mercurial > prosody-modules
view mod_persisthosts/mod_persisthosts.lua @ 2712:d89ab70808f6
mod_cloud_notify: fix bug when multiple resources are used
This bug was triggered under the rare circumstances that a message arrived
and one resource was smacks hibernated while the other one(s) were offline.
Then only the hibernated resource but not the offline one(s) (or the other
way round) got notified.
| author | tmolitor <thilo@eightysoft.de> |
|---|---|
| date | Mon, 08 May 2017 18:24:29 +0200 |
| parents | 366fadb5c6e5 |
| children | dde2803f7678 |
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);
