Add command line option to load password from file (#7832)

This commit is contained in:
Kevin Abrams 2018-12-18 13:15:14 -06:00 committed by SmallJoker
parent 80eb762af1
commit b7eb81fed9
3 changed files with 19 additions and 0 deletions

View File

@ -75,6 +75,9 @@ Set player name
.B \-\-password <value>
Set password
.TP
.B \-\-password\-file <value>
Set password from contents of file
.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP

View File

@ -392,6 +392,20 @@ bool ClientLauncher::launch_game(std::string &error_message,
if (cmd_args.exists("password"))
menudata.password = cmd_args.get("password");
if (cmd_args.exists("password-file")) {
std::ifstream passfile(cmd_args.get("password-file"));
if (passfile.good()) {
getline(passfile, menudata.password);
} else {
error_message = gettext("Provided password file "
"failed to open: ")
+ cmd_args.get("password-file");
errorstream << error_message << std::endl;
return false;
}
}
// If a world was commanded, append and select it
if (!game_params.world_path.empty()) {
worldspec.gameid = getWorldGameId(game_params.world_path, true);

View File

@ -308,6 +308,8 @@ static void set_allowed_options(OptionList *allowed_options)
_("Set player name"))));
allowed_options->insert(std::make_pair("password", ValueSpec(VALUETYPE_STRING,
_("Set password"))));
allowed_options->insert(std::make_pair("password-file", ValueSpec(VALUETYPE_STRING,
_("Set password from contents of file"))));
allowed_options->insert(std::make_pair("go", ValueSpec(VALUETYPE_FLAG,
_("Disable main menu"))));
allowed_options->insert(std::make_pair("console", ValueSpec(VALUETYPE_FLAG,