From 6c812505658d92c8d0fbed6cedc5d6520cbed627 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 27 Jul 2020 16:13:53 +0200 Subject: [PATCH] lib:cmdline: Add client credentials Signed-off-by: Andreas Schneider Reviewed-by: Andrew Bartlett --- lib/cmdline/cmdline.c | 18 ++++++++++++++++++ lib/cmdline/cmdline.h | 9 +++++++++ lib/cmdline/cmdline_private.h | 11 +++++++++++ lib/cmdline/cmdline_s3.c | 11 +++++++++++ lib/cmdline/cmdline_s4.c | 11 +++++++++++ lib/cmdline/wscript | 1 + 6 files changed, 61 insertions(+) diff --git a/lib/cmdline/cmdline.c b/lib/cmdline/cmdline.c index b64a6ea3e20..9623a9c10b7 100644 --- a/lib/cmdline/cmdline.c +++ b/lib/cmdline/cmdline.c @@ -21,6 +21,7 @@ static TALLOC_CTX *cmdline_mem_ctx; static struct loadparm_context *cmdline_lp_ctx; +static struct cli_credentials *cmdline_creds; /* PRIVATE */ bool samba_cmdline_set_talloc_ctx(TALLOC_CTX *mem_ctx) @@ -81,3 +82,20 @@ struct loadparm_context *samba_cmdline_get_lp_ctx(void) { return cmdline_lp_ctx; } + +bool samba_cmdline_set_creds(struct cli_credentials *creds) +{ + if (creds == NULL) { + return false; + } + + TALLOC_FREE(cmdline_creds); + cmdline_creds = creds; + + return true; +} + +struct cli_credentials *samba_cmdline_get_creds(void) +{ + return cmdline_creds; +} diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h index 1a90237f421..c184fc9efd3 100644 --- a/lib/cmdline/cmdline.h +++ b/lib/cmdline/cmdline.h @@ -18,6 +18,8 @@ #ifndef _CMDLINE_H #define _CMDLINE_H +#include "auth/credentials/credentials.h" + /** * @brief Initialize the commandline interface for parsing options. * @@ -42,4 +44,11 @@ bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf); */ struct loadparm_context *samba_cmdline_get_lp_ctx(void); +/** + * @brief Get the client credentials of the command line interface. + * + * @return A pointer to the client credentials. + */ +struct cli_credentials *samba_cmdline_get_creds(void); + #endif /* _CMDLINE_H */ diff --git a/lib/cmdline/cmdline_private.h b/lib/cmdline/cmdline_private.h index 050aff97361..7a1f5824b5e 100644 --- a/lib/cmdline/cmdline_private.h +++ b/lib/cmdline/cmdline_private.h @@ -73,4 +73,15 @@ TALLOC_CTX *samba_cmdline_get_talloc_ctx(void); */ bool samba_cmdline_set_lp_ctx(struct loadparm_context *lp_ctx); +/** + * @internal + * + * @brief Set the client credentials for the commandline interface. + * + * @param[in] creds The client credentials to use. + * + * @return true on success, false if an error occured. + */ +bool samba_cmdline_set_creds(struct cli_credentials *creds); + #endif /* _CMDLINE_PRIVATE_H */ diff --git a/lib/cmdline/cmdline_s3.c b/lib/cmdline/cmdline_s3.c index b95e917ab36..5dcf1ef8e12 100644 --- a/lib/cmdline/cmdline_s3.c +++ b/lib/cmdline/cmdline_s3.c @@ -21,6 +21,7 @@ #include "lib/util/debug.h" #include "lib/util/fault.h" #include "source3/param/loadparm.h" +#include "auth/credentials/credentials.h" #include "cmdline_private.h" static bool _require_smbconf; @@ -28,6 +29,7 @@ static bool _require_smbconf; bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf) { struct loadparm_context *lp_ctx = NULL; + struct cli_credentials *creds = NULL; bool ok; ok = samba_cmdline_init_common(mem_ctx); @@ -46,5 +48,14 @@ bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf) _require_smbconf = require_smbconf; + creds = cli_credentials_init(mem_ctx); + if (creds == NULL) { + return false; + } + ok = samba_cmdline_set_creds(creds); + if (!ok) { + return false; + } + return true; } diff --git a/lib/cmdline/cmdline_s4.c b/lib/cmdline/cmdline_s4.c index 266c044301c..938a83bca58 100644 --- a/lib/cmdline/cmdline_s4.c +++ b/lib/cmdline/cmdline_s4.c @@ -20,6 +20,7 @@ #include "lib/param/param.h" #include "lib/util/debug.h" #include "lib/util/fault.h" +#include "auth/credentials/credentials.h" #include "cmdline_private.h" static bool _require_smbconf; @@ -27,6 +28,7 @@ static bool _require_smbconf; bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf) { struct loadparm_context *lp_ctx = NULL; + struct cli_credentials *creds = NULL; bool ok; ok = samba_cmdline_init_common(mem_ctx); @@ -45,5 +47,14 @@ bool samba_cmdline_init(TALLOC_CTX *mem_ctx, bool require_smbconf) } _require_smbconf = require_smbconf; + creds = cli_credentials_init(mem_ctx); + if (creds == NULL) { + return false; + } + ok = samba_cmdline_set_creds(creds); + if (!ok) { + return false; + } + return true; } diff --git a/lib/cmdline/wscript b/lib/cmdline/wscript index 912c89b246f..87c7260ea19 100644 --- a/lib/cmdline/wscript +++ b/lib/cmdline/wscript @@ -10,6 +10,7 @@ def build(bld): deps=''' talloc samba-hostconfig + samba-credentials popt ''', private_library=True) -- 2.34.1