eventmanager: Convert from Windows line endings
[prosody.git] / core / modulemanager.lua
index 5ea0a22e4746a4cb33d62ad7298b43550fa3a969..56f8793afe18e710c946113d8fcea9a807ee9615 100644 (file)
@@ -33,6 +33,8 @@ local rawget = rawget;
 local error = error;
 local tostring = tostring;
 
+local autoload_modules = {"presence", "message", "iq"};
+
 -- We need this to let modules access the real global namespace
 local _G = _G;
 
@@ -59,35 +61,33 @@ local NULL = {};
 
 -- Load modules when a host is activated
 function load_modules_for_host(host)
-       if config.get(host, "core", "modules_enable") == false then
-               return; -- Only load for hosts, not components, etc.
-       end
-
-       -- Load modules from global section
-       local modules_enabled = config.get("*", "core", "modules_enabled");
-       local modules_disabled = config.get(host, "core", "modules_disabled");
-       local disabled_set = {};
-       if modules_enabled then
-               if modules_disabled then
-                       for _, module in ipairs(modules_disabled) do
-                               disabled_set[module] = true;
+       if config.get(host, "core", "load_global_modules") ~= false then
+               -- Load modules from global section
+               local modules_enabled = config.get("*", "core", "modules_enabled");
+               local modules_disabled = config.get(host, "core", "modules_disabled");
+               local disabled_set = {};
+               if modules_enabled then
+                       if modules_disabled then
+                               for _, module in ipairs(modules_disabled) do
+                                       disabled_set[module] = true;
+                               end
                        end
-               end
-               for _, module in ipairs({"presence", "message", "iq"}) do
-                       if not disabled_set[module] then
-                               load(host, module);
+                       for _, module in ipairs(autoload_modules) do
+                               if not disabled_set[module] then
+                                       load(host, module);
+                               end
                        end
-               end
-               for _, module in ipairs(modules_enabled) do
-                       if not disabled_set[module] and not is_loaded(host, module) then
-                               load(host, module);
+                       for _, module in ipairs(modules_enabled) do
+                               if not disabled_set[module] and not is_loaded(host, module) then
+                                       load(host, module);
+                               end
                        end
                end
        end
-
+       
        -- Load modules from just this host
        local modules_enabled = config.get(host, "core", "modules_enabled");
-       if modules_enabled then
+       if modules_enabled and modules_enabled ~= config.get("*", "core", "modules_enabled") then
                for _, module in pairs(modules_enabled) do
                        if not is_loaded(host, module) then
                                load(host, module);