diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-07-09 01:09:57 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-07-09 01:09:57 +0100 |
commit | ed0cef77181841ce3063dccbb79f13ee85a14cae (patch) | |
tree | 5e00d29dead2db03308bd46a3ff036acdad68c6f /prosodyctl | |
parent | 9dfb2ebfb460edd3fdf98f368176c14140801644 (diff) | |
download | prosody-ed0cef77181841ce3063dccbb79f13ee85a14cae.tar.gz prosody-ed0cef77181841ce3063dccbb79f13ee85a14cae.zip |
prosodyctl: Warn and exit if any log files are not writeable, fixes #94
Diffstat (limited to 'prosodyctl')
-rwxr-xr-x | prosodyctl | 41 |
1 files changed, 40 insertions, 1 deletions
@@ -64,7 +64,7 @@ do os.exit(1); end end - +local original_logging_config = config.get("*", "core", "log"); config.set("*", "core", "log", { { levels = { min="info" }, to = "console" } }); require "core.loggingmanager" @@ -111,6 +111,45 @@ else print(tostring(pposix)) end +local function test_writeable(filename) + local f, err = io.open(filename, "a"); + if not f then + return false, err; + end + f:close(); + return true; +end + +local unwriteable_files = {}; +if type(original_logging_config) == "string" and original_logging_config:sub(1,1) ~= "*" then + local ok, err = test_writeable(original_logging_config); + if not ok then + table.insert(unwriteable_files, err); + end +elseif type(original_logging_config) == "table" then + for _, rule in ipairs(original_logging_config) do + if rule.filename then + local ok, err = test_writeable(rule.filename); + if not ok then + table.insert(unwriteable_files, err); + end + end + end +end + +if #unwriteable_files > 0 then + print("One of more of the Prosody log files are not"); + print("writeable, please correct the errors and try"); + print("starting prosodyctl again."); + print(""); + for _, err in ipairs(unwriteable_files) do + print(err); + end + print(""); + os.exit(1); +end + + local error_messages = setmetatable({ ["invalid-username"] = "The given username is invalid in a Jabber ID"; ["invalid-hostname"] = "The given hostname is invalid"; |