diff options
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); |