diff options
author | Olly Betts <olly@survex.com> | 2018-05-01 13:19:58 +1200 |
---|---|---|
committer | Douglas Bagnall <dbagnall@samba.org> | 2018-11-30 03:35:13 +0100 |
commit | 1cf84b6b99082907596c511c86e4e8c22314b08c (patch) | |
tree | ae5ecbd5de1f071b25868c5cc18fa1130fb29323 | |
parent | e99402235da3ab0ea77f0a68393294088939ab78 (diff) | |
download | samba-1cf84b6b99082907596c511c86e4e8c22314b08c.tar.gz |
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>
-rw-r--r-- | docs-xml/manpages/net.8.xml | 1 | ||||
-rw-r--r-- | source3/utils/net.c | 25 |
2 files changed, 26 insertions, 0 deletions
diff --git a/docs-xml/manpages/net.8.xml b/docs-xml/manpages/net.8.xml index 499fd4291de..37dfa2af694 100644 --- a/docs-xml/manpages/net.8.xml +++ b/docs-xml/manpages/net.8.xml @@ -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> diff --git a/source3/utils/net.c b/source3/utils/net.c index e0776c8d82c..769e6f86f8f 100644 --- a/source3/utils/net.c +++ b/source3/utils/net.c @@ -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)); |