1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

net: Add support for a credentials file

Add support for the same -A authfile/--authentication-file authfile
option that most of the other tools already do.

Signed-off-by: Olly Betts <olly@survex.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Olly Betts 2018-05-01 13:19:58 +12:00 committed by Douglas Bagnall
parent e99402235d
commit 1cf84b6b99
2 changed files with 26 additions and 0 deletions

View File

@ -26,6 +26,7 @@
<arg choice="opt">-w|--workgroup workgroup</arg>
<arg choice="opt">-W|--myworkgroup myworkgroup</arg>
<arg choice="opt">-U|--user user</arg>
<arg choice="opt">-A|--authentication-file authfile</arg>
<arg choice="opt">-I|--ipaddress ip-address</arg>
<arg choice="opt">-p|--port port</arg>
<arg choice="opt">-n myname</arg>

View File

@ -50,6 +50,7 @@
#include "messages.h"
#include "cmdline_contexts.h"
#include "lib/gencache.h"
#include "auth/credentials/credentials.h"
#ifdef WITH_FAKE_KASERVER
#include "utils/net_afs.h"
@ -904,6 +905,26 @@ static struct functable net_func[] = {
};
static void get_credentials_file(struct net_context *c,
const char *file)
{
struct cli_credentials *cred = cli_credentials_init(c);
if (cred == NULL) {
d_printf("ERROR: Unable to allocate memory!\n");
exit(-1);
}
if (!cli_credentials_parse_file(cred, file, CRED_GUESS_FILE)) {
exit(-1);
}
c->opt_user_name = cli_credentials_get_username(cred);
c->opt_user_specified = (c->opt_user_name != NULL);
c->opt_password = cli_credentials_get_password(cred);
c->opt_target_workgroup = cli_credentials_get_domain(cred);
}
/****************************************************************************
main program
****************************************************************************/
@ -923,6 +944,7 @@ static struct functable net_func[] = {
{"help", 'h', POPT_ARG_NONE, 0, 'h'},
{"workgroup", 'w', POPT_ARG_STRING, &c->opt_target_workgroup},
{"user", 'U', POPT_ARG_STRING, &c->opt_user_name, 'U'},
{"authentication-file", 'A', POPT_ARG_STRING, &c->opt_user_name, 'A', "Get the credentials from a file", "FILE"},
{"ipaddress", 'I', POPT_ARG_STRING, 0,'I'},
{"port", 'p', POPT_ARG_INT, &c->opt_port},
{"myname", 'n', POPT_ARG_STRING, &c->opt_requester_name},
@ -1025,6 +1047,9 @@ static struct functable net_func[] = {
c->opt_password = p+1;
}
break;
case 'A':
get_credentials_file(c, c->opt_user_name);
break;
default:
d_fprintf(stderr, _("\nInvalid option %s: %s\n"),
poptBadOption(pc, 0), poptStrerror(opt));