moduleapi: in module:provides(), add the name of the module in item._provided_by
[prosody.git] / prosodyctl
index 134624b272126b0d65e195ae957841db1390b661..24d28157883666f1ac84ace03d49824aa9c3469c 100755 (executable)
@@ -51,6 +51,7 @@ local prosody = {
        lock_globals = function () end;
        unlock_globals = function () end;
        installed = CFG_SOURCEDIR ~= nil;
+       core_post_stanza = function () end; -- TODO: mod_router!
 };
 _G.prosody = prosody;
 
@@ -61,16 +62,17 @@ end
 
 config = require "core.configmanager"
 
+local ENV_CONFIG;
 do
        local filenames = {};
        
        local filename;
        if arg[1] == "--config" and arg[2] then
                table.insert(filenames, arg[2]);
-               table.remove(arg, 1); table.remove(arg, 1);
                if CFG_CONFIGDIR then
                        table.insert(filenames, CFG_CONFIGDIR.."/"..arg[2]);
                end
+               table.remove(arg, 1); table.remove(arg, 1);
        else
                for _, format in ipairs(config.parsers()) do
                        table.insert(filenames, (CFG_CONFIGDIR or ".").."/prosody.cfg."..format);
@@ -81,6 +83,7 @@ do
                local file = io.open(filename);
                if file then
                        file:close();
+                       ENV_CONFIG = filename;
                        CFG_CONFIGDIR = filename:match("^(.*)[\\/][^\\/]*$");
                        break;
                end
@@ -107,11 +110,11 @@ do
                os.exit(1);
        end
 end
-local original_logging_config = config.get("*", "core", "log");
-config.set("*", "core", "log", { { levels = { min="info" }, to = "console" } });
+local original_logging_config = config.get("*", "log");
+config.set("*", "log", { { levels = { min="info" }, to = "console" } });
 
-local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
-local custom_plugin_paths = config.get("*", "core", "plugin_paths");
+local data_path = config.get("*", "data_path") or CFG_DATADIR or "data";
+local custom_plugin_paths = config.get("*", "plugin_paths");
 if custom_plugin_paths then
        local path_sep = package.config:sub(3,3);
        -- path1;path2;path3;defaultpath...
@@ -132,7 +135,7 @@ dependencies.log_warnings();
 -- Switch away from root and into the prosody user --
 local switched_user, current_uid;
 
-local want_pposix_version = "0.3.5";
+local want_pposix_version = "0.3.6";
 local ok, pposix = pcall(require, "util.pposix");
 
 if ok and pposix then
@@ -140,8 +143,8 @@ if ok and pposix then
        current_uid = pposix.getuid();
        if current_uid == 0 then
                -- We haz root!
-               local desired_user = config.get("*", "core", "prosody_user") or "prosody";
-               local desired_group = config.get("*", "core", "prosody_group") or desired_user;
+               local desired_user = config.get("*", "prosody_user") or "prosody";
+               local desired_group = config.get("*", "prosody_group") or desired_user;
                local ok, err = pposix.setgid(desired_group);
                if ok then
                        ok, err = pposix.initgroups(desired_user);
@@ -160,8 +163,9 @@ if ok and pposix then
        end
        
        -- Set our umask to protect data files
-       pposix.umask(config.get("*", "core", "umask") or "027");
+       pposix.umask(config.get("*", "umask") or "027");
        pposix.setenv("HOME", data_path);
+       pposix.setenv("PROSODY_CONFIG", ENV_CONFIG);
 else
        print("Error: Unable to load pposix module. Check that Prosody is installed correctly.")
        print("For more help send the below error to us through http://prosody.im/discuss");
@@ -264,7 +268,7 @@ local show_yesno = prosodyctl.show_yesno;
 local show_prompt = prosodyctl.show_prompt;
 local read_password = prosodyctl.read_password;
 
-local prosodyctl_timeout = (config.get("*", "core", "prosodyctl_timeout") or 5) * 2;
+local prosodyctl_timeout = (config.get("*", "prosodyctl_timeout") or 5) * 2;
 -----------------------
 local commands = {};
 local command = arg[1];
@@ -407,7 +411,7 @@ function commands.start(arg)
        
        local ok, ret = prosodyctl.start();
        if ok then
-               if config.get("*", "core", "daemonize") ~= false then
+               if config.get("*", "daemonize") ~= false then
                        local i=1;
                        while true do
                                local ok, running = prosodyctl.isrunning();