Merge waqas with Tobias. Eww.
authorMatthew Wild <mwild1@gmail.com>
Tue, 18 Aug 2009 12:03:35 +0000 (13:03 +0100)
committerMatthew Wild <mwild1@gmail.com>
Tue, 18 Aug 2009 12:03:35 +0000 (13:03 +0100)
1  2 
plugins/mod_posix.lua

diff --combined plugins/mod_posix.lua
index af4cdb1685d6ec6d02c868d4d21e73a99005ea18,83b8122e839834980444d836bc1978944c2a8451..5f7dfc5b1884e9c8b857b851c1aa43764b936c4f
@@@ -17,46 -17,18 +17,45 @@@ if type(signal) == "string" the
        module:log("warn", "Couldn't load signal library, won't respond to SIGTERM");
  end
  
- local config_get = require "core.configmanager".get;
  local logger_set = require "util.logger".setwriter;
  
  local prosody = _G.prosody;
  
  module.host = "*"; -- we're a global module
  
-               local uid = config_get("*", "core", "setuid");
-               local gid = config_get("*", "core", "setgid");
 +-- Allow switching away from root, some people like strange ports.
 +module:add_event_hook("server-started", function ()
++              local uid = module:get_option("setuid");
++              local gid = module:get_option("setgid");
 +              if gid then
 +                      local success, msg = pposix.setgid(gid);
 +                      if success then
 +                              module:log("debug", "Changed group to "..gid.." successfully.");
 +                      else
 +                              module:log("error", "Failed to change group to "..gid..". Error: "..msg);
 +                              prosody.shutdown("Failed to change group to "..gid);
 +                      end
 +              end
 +              if uid then
 +                      local success, msg = pposix.setuid(uid);
 +                      if success then
 +                              module:log("debug", "Changed user to "..uid.." successfully.");
 +                      else
 +                              module:log("error", "Failed to change user to "..uid..". Error: "..msg);
 +                              prosody.shutdown("Failed to change user to "..uid);
 +                      end
 +              end
 +      end);
 +
  -- Don't even think about it!
  module:add_event_hook("server-starting", function ()
-               local suid = config_get("*", "core", "setuid");
 -              if pposix.getuid() == 0 and not module:get_option("run_as_root") then
 -                      module:log("error", "Danger, Will Robinson! Prosody doesn't need to be run as root, so don't do it!");
 -                      module:log("error", "For more information on running Prosody as root, see http://prosody.im/doc/root");
 -                      prosody.shutdown("Refusing to run as root");
++              local suid = module:get_option("setuid");
 +              if not suid or suid == 0 or suid == "root" then
-                       if pposix.getuid() == 0 and not config_get("*", "core", "run_as_root") then
++                      if pposix.getuid() == 0 and not module:get_option("run_as_root") then
 +                              module:log("error", "Danger, Will Robinson! Prosody doesn't need to be run as root, so don't do it!");
 +                              module:log("error", "For more information on running Prosody as root, see http://prosody.im/doc/root");
 +                              prosody.shutdown("Refusing to run as root");
 +                      end
                end
        end);
  
@@@ -73,7 -45,7 +72,7 @@@ local function write_pidfile(
        if pidfile_written then
                remove_pidfile();
        end
-       local pidfile = config_get("*", "core", "pidfile");
+       local pidfile = module:get_option("pidfile");
        if pidfile then
                local pf, err = io.open(pidfile, "w+");
                if not pf then
@@@ -103,7 -75,7 +102,7 @@@ function syslog_sink_maker(config
  end
  require "core.loggingmanager".register_sink_type("syslog", syslog_sink_maker);
  
- if not config_get("*", "core", "no_daemonize") then
+ if not module:get_option("no_daemonize") then
        local function daemonize_server()
                local ok, ret = pposix.daemonize();
                if not ok then