Software /
code /
prosody-modules
Annotate
mod_reload_components/mod_reload_components.lua @ 4530:33c149d0261d
mod_rest: Add mappings for a whole pile of XEPs
Look ma, programming in JSON!
XEP-0012: Last Activity
XEP-0077: In-Band Registration
XEP-0115: Entity Capabilities
XEP-0153: vCard-Based Avatars
XEP-0297: Stanza Forwarding
XEP-0308: Last Message Correction
XEP-0319: Last User Interaction in Presence
XEP-0333: Chat Markers
XEP-0367: Message Attaching
XEP-0372: References
XEP-0421: Anonymous unique occupant identifiers for MUCs
XEP-0428: Fallback Indication
XEP-0444: Message Reactions
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 23 Mar 2021 23:18:33 +0100 |
parent | 2391:85d04dd87f14 |
rev | line source |
---|---|
2391
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
1 module:set_global(); |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
2 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
3 local configmanager = require "core.configmanager"; |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
4 local hostmanager = require"core.hostmanager"; |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
5 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
6 local function reload_components() |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
7 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
8 --- Check if host configuration is a component |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
9 --- @param h hostname |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
10 local function config_is_component(h) |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
11 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 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
12 end; |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
13 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
14 --- Check if host / component configuration is active |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
15 --- @param h hostname / component name |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
16 local function component_is_new(h) |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
17 return h ~= "*" and not hosts[h]; -- If a host is not defined in hosts and it is not global, then it is new |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
18 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
19 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
20 --- Search for new components that are not activated |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
21 for h, c in pairs(configmanager.getconfig()) do |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
22 if config_is_component(h) and component_is_new(h) then |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
23 module:log ("debug", "Loading new component %s", h ); |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
24 hostmanager.activate(h, c); |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
25 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
26 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
27 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
28 --- Search for active components that are not enabled in the configmanager anymore |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
29 local enabled = {} |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
30 for h in pairs(configmanager.getconfig()) do |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
31 enabled[h] = true; -- Set true if it is defined in the configuration file |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
32 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
33 for h, c in pairs(hosts) do |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
34 if not enabled[h] then -- Deactivate if not present in the configuration file |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
35 hostmanager.deactivate(h,c); |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
36 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
37 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
38 end |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
39 |
85d04dd87f14
mod_reload_components: add new module and README file.
Camilo <camilo@camilo.fm>
parents:
diff
changeset
|
40 module:hook("config-reloaded", reload_components); |