util.startup: Check root after detecting platform and reading config (thanks SigmaTel71)
Ensures that startup.detect_platform() runs so know whether to use the
POSIX method of checking the current user or something else. Also after
reading the config so we know whether the root override setting is set.
-- This module will "reset" the server when the client connection count drops
-- to zero. This is somewhere between a reload and a full process restart.
-- It is useful to ensure isolation between test runs, for example. It may
-- also be of use for some kinds of manual testing.
module:set_global();
local hostmanager = require "prosody.core.hostmanager";
local function do_reset()
module:log("info", "Performing reset...");
local hosts = {};
for host in pairs(prosody.hosts) do
table.insert(hosts, host);
end
module:fire_event("server-resetting");
for _, host in ipairs(hosts) do
hostmanager.deactivate(host);
hostmanager.activate(host);
module:log("info", "Reset complete");
module:fire_event("server-reset");
end
end
function module.add_host(host_module)
host_module:hook("resource-unbind", function ()
if next(prosody.full_sessions) == nil then
do_reset();
end
end);
end
local console_env = module:shared("/*/admin_shell/env");
console_env.debug_reset = {
reset = do_reset;
};