From c2e2921bada17aae84e6c29f48401fa467e8ed9c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 20 Aug 2004 09:48:25 +0000 Subject: [PATCH] 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) --- source4/lib/cmdline/popt_common.c | 37 ++++++++++++++++++++++++++++++- 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 ef75d7be1f9..20b9aac2016 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 89f4e77735b..da644668696 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); -- 2.34.1