Mercurial > prosody-modules
view mod_reload_components/mod_reload_components.lua @ 5119:048e339706ba
mod_rest: Remove manual reference expansion in schema
This hack was originally added to reduce the number of definitions of
common attributes (type, to, from etc) and payloads (e.g. delay). This
predated pointers and references, and until now was needed because
parsing picked out the correct stanza kind from the schema, which broke
internal references.
Removing this hack paves the way for allowing the schema to be
configured or customized more easily.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 20 Dec 2022 21:48:28 +0100 |
parents | 85d04dd87f14 |
children |
line wrap: on
line source
module:set_global(); local configmanager = require "core.configmanager"; local hostmanager = require"core.hostmanager"; local function reload_components() --- Check if host configuration is a component --- @param h hostname local function config_is_component(h) return h ~= nil and configmanager.get(h, "component_module") ~= nil; -- If a host has a component module defined within it, then it is a component end; --- Check if host / component configuration is active --- @param h hostname / component name local function component_is_new(h) return h ~= "*" and not hosts[h]; -- If a host is not defined in hosts and it is not global, then it is new end --- Search for new components that are not activated for h, c in pairs(configmanager.getconfig()) do if config_is_component(h) and component_is_new(h) then module:log ("debug", "Loading new component %s", h ); hostmanager.activate(h, c); end end --- Search for active components that are not enabled in the configmanager anymore local enabled = {} for h in pairs(configmanager.getconfig()) do enabled[h] = true; -- Set true if it is defined in the configuration file end for h, c in pairs(hosts) do if not enabled[h] then -- Deactivate if not present in the configuration file hostmanager.deactivate(h,c); end end end module:hook("config-reloaded", reload_components);