Mercurial > prosody-modules
annotate mod_auto_activate_hosts/mod_auto_activate_hosts.lua @ 1268:854a3933cfcd
mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Sat, 04 Jan 2014 16:50:57 -0500 |
| parents | 8285c3502100 |
| children | 7dbde05b48a9 |
| rev | line source |
|---|---|
|
1006
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 module:set_global(); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local array = require "util.array"; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local set = require "util.set"; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local it = require "util.iterators"; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local config = require "core.configmanager"; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local function host_not_global(host) |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 return host ~= "*"; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 local function host_is_enabled(host) |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 return config.get(host, "enabled") ~= false; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 function handle_reload() |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 local new_config = config.getconfig(); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 local active_hosts = set.new(array.collect(it.keys(prosody.hosts)):filter(host_not_global)); |
|
1013
8285c3502100
mod_auto_activate_hosts: Don't activate * when the config is reloaded
Matthew Wild <mwild1@gmail.com>
parents:
1006
diff
changeset
|
19 local enabled_hosts = set.new(array.collect(it.keys(new_config)):filter(host_is_enabled):filter(host_not_global)); |
|
1006
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 local need_to_activate = enabled_hosts - active_hosts; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 local need_to_deactivate = active_hosts - enabled_hosts; |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 module:log("debug", "Config reloaded... %d hosts need activating, and %d hosts need deactivating", it.count(need_to_activate), it.count(need_to_deactivate)); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 module:log("debug", "There are %d enabled and %d active hosts", it.count(enabled_hosts), it.count(active_hosts)); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 for host in need_to_deactivate do |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 hostmanager.deactivate(host); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 -- If the lazy loader is loaded, hosts will get activated when they are needed |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 if not(getmetatable(prosody.hosts) and getmetatable(prosody.hosts).lazy_loader) then |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 for host in need_to_activate do |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 hostmanager.activate(host); |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 end |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 |
|
9c88960b0f81
mod_auto_activate_hosts: Automatically activate and deactivate hosts when they are added/removed from the config
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 module:hook_global("config-reloaded", handle_reload); |
