diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-08-20 09:48:25 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:58:13 -0500 |
commit | c2e2921bada17aae84e6c29f48401fa467e8ed9c (patch) | |
tree | 793f2c9010335b694d74b04018bb0f32a76a3df1 /source4 | |
parent | 5a8f826653aa32512183070d27f33a98d62f10f1 (diff) | |
download | samba-c2e2921bada17aae84e6c29f48401fa467e8ed9c.tar.gz samba-c2e2921bada17aae84e6c29f48401fa467e8ed9c.tar.bz2 samba-c2e2921bada17aae84e6c29f48401fa467e8ed9c.zip |
r1949: provide functions to access the username, userdomain and userpassword
now you're prompted when cmdline_get_userpassword() is called
and the password is not yet known
metze
(This used to be commit d14a01533c5d465ff3709c48576b798b3be807e0)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/cmdline/popt_common.c | 37 | ||||
-rw-r--r-- | source4/utils/net/net.c | 13 |
2 files changed, 39 insertions, 11 deletions
diff --git a/source4/lib/cmdline/popt_common.c b/source4/lib/cmdline/popt_common.c index ef75d7be1f..20b9aac201 100644 --- a/source4/lib/cmdline/popt_common.c +++ b/source4/lib/cmdline/popt_common.c @@ -33,7 +33,7 @@ * -i,--scope */ -struct cmdline_auth_info cmdline_auth_info; +static struct cmdline_auth_info cmdline_auth_info; static void popt_common_callback(poptContext con, enum poptCallbackReason reason, @@ -396,3 +396,38 @@ struct poptOption popt_common_credentials[] = { { "machine-pass", 'P', POPT_ARG_NONE, NULL, 'P', "Use stored machine account password" }, POPT_TABLEEND }; + +const char *cmdline_get_username(void) +{ + return cmdline_auth_info.username; +} + +const char *cmdline_get_userdomain(void) +{ + if (cmdline_auth_info.domain[0]) { + return cmdline_auth_info.domain; + } + + /* I think this should be lp_netbios_name() + * instead of lp_workgroup(), because if you're logged in + * as domain user the getenv("USER") contains the domain + * and this code path isn't used + * --metze + */ + return lp_netbios_name(); +} + +const char *cmdline_get_userpassword(void) +{ + pstring prompt; + + if (cmdline_auth_info.got_pass) { + return cmdline_auth_info.password; + } + + pstr_sprintf(prompt, "Password for [%s\\%s]:", + cmdline_get_userdomain(), + cmdline_get_username()); + + return getpass(prompt); +} diff --git a/source4/utils/net/net.c b/source4/utils/net/net.c index 89f4e77735..da64466869 100644 --- a/source4/utils/net/net.c +++ b/source4/utils/net/net.c @@ -156,7 +156,6 @@ static int binary_net(int argc, const char **argv) const char **argv_new; TALLOC_CTX *mem_ctx; struct net_context *ctx; - const char *domain; poptContext pc; struct poptOption long_options[] = { POPT_AUTOHELP @@ -204,12 +203,6 @@ static int binary_net(int argc, const char **argv) return 1; } - if (cmdline_auth_info.domain[0]) { - domain = cmdline_auth_info.domain; - } else { - domain = lp_workgroup(); - } - mem_ctx = talloc_init("net_context"); ctx = talloc_p(mem_ctx, struct net_context); if (!ctx) { @@ -219,9 +212,9 @@ static int binary_net(int argc, const char **argv) ZERO_STRUCTP(ctx); ctx->mem_ctx = mem_ctx; - ctx->user.account_name = talloc_strdup(ctx->mem_ctx, cmdline_auth_info.username); - ctx->user.domain_name = talloc_strdup(ctx->mem_ctx, domain); - ctx->user.password = talloc_strdup(ctx->mem_ctx, cmdline_auth_info.password); + ctx->user.account_name = talloc_strdup(ctx->mem_ctx, cmdline_get_username()); + ctx->user.domain_name = talloc_strdup(ctx->mem_ctx, cmdline_get_userdomain()); + ctx->user.password = talloc_strdup(ctx->mem_ctx, cmdline_get_userpassword()); rc = net_run_function(ctx, argc_new-1, argv_new+1, net_functable, net_usage); |