prosodyctl
changeset 5303 19a4a3462574
parent 5160 da7fe5de82fb
parent 5296 78b7a4ad2f32
child 5394 3d1de30fefec
equal deleted inserted replaced
5285:19381ed1cc02 5303:19a4a3462574
    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" };