59 os.exit(1); |
59 os.exit(1); |
60 end |
60 end |
61 |
61 |
62 config = require "core.configmanager" |
62 config = require "core.configmanager" |
63 |
63 |
|
64 local ENV_CONFIG; |
64 do |
65 do |
65 local filenames = {}; |
66 local filenames = {}; |
66 |
67 |
67 local filename; |
68 local filename; |
68 if arg[1] == "--config" and arg[2] then |
69 if arg[1] == "--config" and arg[2] then |
69 table.insert(filenames, arg[2]); |
70 table.insert(filenames, arg[2]); |
70 table.remove(arg, 1); table.remove(arg, 1); |
|
71 if CFG_CONFIGDIR then |
71 if CFG_CONFIGDIR then |
72 table.insert(filenames, CFG_CONFIGDIR.."/"..arg[2]); |
72 table.insert(filenames, CFG_CONFIGDIR.."/"..arg[2]); |
73 end |
73 end |
|
74 table.remove(arg, 1); table.remove(arg, 1); |
74 else |
75 else |
75 for _, format in ipairs(config.parsers()) do |
76 for _, format in ipairs(config.parsers()) do |
76 table.insert(filenames, (CFG_CONFIGDIR or ".").."/prosody.cfg."..format); |
77 table.insert(filenames, (CFG_CONFIGDIR or ".").."/prosody.cfg."..format); |
77 end |
78 end |
78 end |
79 end |
79 for _,_filename in ipairs(filenames) do |
80 for _,_filename in ipairs(filenames) do |
80 filename = _filename; |
81 filename = _filename; |
81 local file = io.open(filename); |
82 local file = io.open(filename); |
82 if file then |
83 if file then |
83 file:close(); |
84 file:close(); |
|
85 ENV_CONFIG = filename; |
84 CFG_CONFIGDIR = filename:match("^(.*)[\\/][^\\/]*$"); |
86 CFG_CONFIGDIR = filename:match("^(.*)[\\/][^\\/]*$"); |
85 break; |
87 break; |
86 end |
88 end |
87 end |
89 end |
88 local ok, level, err = config.load(filename); |
90 local ok, level, err = config.load(filename); |
160 end |
162 end |
161 |
163 |
162 -- Set our umask to protect data files |
164 -- Set our umask to protect data files |
163 pposix.umask(config.get("*", "core", "umask") or "027"); |
165 pposix.umask(config.get("*", "core", "umask") or "027"); |
164 pposix.setenv("HOME", data_path); |
166 pposix.setenv("HOME", data_path); |
|
167 pposix.setenv("PROSODY_CONFIG", ENV_CONFIG); |
165 else |
168 else |
166 print("Error: Unable to load pposix module. Check that Prosody is installed correctly.") |
169 print("Error: Unable to load pposix module. Check that Prosody is installed correctly.") |
167 print("For more help send the below error to us through http://prosody.im/discuss"); |
170 print("For more help send the below error to us through http://prosody.im/discuss"); |
168 print(tostring(pposix)) |
171 print(tostring(pposix)) |
169 os.exit(1); |
172 os.exit(1); |
637 |
640 |
638 show_message(error_messages[msg]) |
641 show_message(error_messages[msg]) |
639 return 1; |
642 return 1; |
640 end |
643 end |
641 |
644 |
642 local openssl = require "util.openssl"; |
645 local openssl; |
643 local lfs = require "lfs"; |
646 local lfs; |
644 |
647 |
645 local cert_commands = {}; |
648 local cert_commands = {}; |
646 |
649 |
647 local function ask_overwrite(filename) |
650 local function ask_overwrite(filename) |
648 return lfs.attributes(filename) and not show_yesno("Overwrite "..filename .. "?"); |
651 return lfs.attributes(filename) and not show_yesno("Overwrite "..filename .. "?"); |
721 end |
724 end |
722 end |
725 end |
723 |
726 |
724 function cert_commands.generate(arg) |
727 function cert_commands.generate(arg) |
725 if #arg >= 1 and arg[1] ~= "--help" then |
728 if #arg >= 1 and arg[1] ~= "--help" then |
726 local cert_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".cert"; |
729 local cert_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".crt"; |
727 if ask_overwrite(cert_filename) then |
730 if ask_overwrite(cert_filename) then |
728 return nil, cert_filename; |
731 return nil, cert_filename; |
729 end |
732 end |
730 local _, key_filename = cert_commands.key({arg[1]}); |
733 local _, key_filename = cert_commands.key({arg[1]}); |
731 local _, conf_filename = cert_commands.config(arg); |
734 local _, conf_filename = cert_commands.config(arg); |
742 end |
745 end |
743 end |
746 end |
744 |
747 |
745 function commands.cert(arg) |
748 function commands.cert(arg) |
746 if #arg >= 1 and arg[1] ~= "--help" then |
749 if #arg >= 1 and arg[1] ~= "--help" then |
|
750 openssl = require "util.openssl"; |
|
751 lfs = require "lfs"; |
747 local subcmd = table.remove(arg, 1); |
752 local subcmd = table.remove(arg, 1); |
748 if type(cert_commands[subcmd]) == "function" then |
753 if type(cert_commands[subcmd]) == "function" then |
749 if not arg[1] then |
754 if not arg[1] then |
750 show_message"You need to supply at least one hostname" |
755 show_message"You need to supply at least one hostname" |
751 arg = { "--help" }; |
756 arg = { "--help" }; |