From e4474ac0a540c56548b4d15e38f2e234455e19b6 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 18 Aug 2020 16:58:19 +0200 Subject: [PATCH] s3:client: Migrate smbclient to new cmdline option parser Signed-off-by: Andreas Schneider Reviewed-by: Andrew Bartlett --- source3/client/client.c | 190 +++++++----------- .../tests/test_smbclient_encryption_off.sh | 18 +- source3/script/tests/test_smbclient_ntlm.sh | 6 +- source3/script/tests/test_smbclient_s3.sh | 4 +- source3/selftest/tests.py | 18 +- source3/wscript_build | 2 +- 6 files changed, 98 insertions(+), 140 deletions(-) diff --git a/source3/client/client.c b/source3/client/client.c index 7c0a3832a41..148a6036f3c 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -23,7 +23,6 @@ #include "includes.h" #include "system/filesys.h" -#include "popt_common_cmdline.h" #include "rpc_client/cli_pipe.h" #include "client/client_proto.h" #include "client/clitar_proto.h" @@ -41,6 +40,7 @@ #include "../libcli/smb/smbXcli_base.h" #include "lib/util/time_basic.h" #include "lib/util/string_wrappers.h" +#include "lib/cmdline/cmdline.h" #ifndef REGISTER #define REGISTER 0 @@ -296,8 +296,7 @@ static int do_dskattr(void) struct cli_state *targetcli = NULL; char *targetpath = NULL; TALLOC_CTX *ctx = talloc_tos(); - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; status = cli_resolve_path(ctx, @@ -393,8 +392,7 @@ static int do_cd(const char *new_dir) uint32_t attributes; int ret = 1; TALLOC_CTX *ctx = talloc_stackframe(); - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; newdir = talloc_strdup(ctx, new_dir); @@ -589,6 +587,7 @@ static NTSTATUS display_finfo(struct cli_state *cli_state, struct file_info *fin char *targetpath = NULL; char *afname = NULL; uint16_t fnum; + struct cli_credentials *creds = samba_cmdline_get_creds(); /* skip if this is . or .. */ if ( strequal(finfo->name,"..") || strequal(finfo->name,".") ) @@ -611,8 +610,7 @@ static NTSTATUS display_finfo(struct cli_state *cli_state, struct file_info *fin status = cli_resolve_path( ctx, "", - get_cmdline_auth_info_creds( - popt_get_cmdline_auth_info()), + creds, cli_state, afname, &targetcli, @@ -827,8 +825,7 @@ NTSTATUS do_list(const char *mask, struct do_list_helper_state state = { .cli = cli, }; static int in_do_list = 0; TALLOC_CTX *ctx = talloc_tos(); - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS ret_status = NT_STATUS_OK; NTSTATUS status = NT_STATUS_OK; @@ -1074,8 +1071,7 @@ static int do_get(const char *rname, const char *lname_in, bool reget) struct cli_state *targetcli = NULL; char *targetname = NULL; char *lname = NULL; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; lname = talloc_strdup(ctx, lname_in); @@ -1448,8 +1444,7 @@ static bool do_mkdir(const char *name) TALLOC_CTX *ctx = talloc_tos(); struct cli_state *targetcli; char *targetname = NULL; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; status = cli_resolve_path(ctx, "", @@ -1497,7 +1492,6 @@ static bool do_altname(const char *name) static int cmd_quit(void) { cli_shutdown(cli); - popt_free_cmdline_auth_info(); exit(0); /* NOTREACHED */ return 0; @@ -1512,8 +1506,7 @@ static int cmd_mkdir(void) TALLOC_CTX *ctx = talloc_tos(); char *mask = NULL; char *buf = NULL; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; mask = talloc_strdup(ctx, client_get_cur_dir()); @@ -1865,8 +1858,7 @@ static int do_put(const char *rname, const char *lname, bool reput) struct cli_state *targetcli; char *targetname = NULL; struct push_state state; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; status = cli_resolve_path(ctx, "", @@ -1969,7 +1961,6 @@ static int do_put(const char *rname, const char *lname, bool reput) if (f == stdin) { cli_shutdown(cli); - popt_free_cmdline_auth_info(); exit(rc); } @@ -2645,8 +2636,7 @@ static int cmd_wdel(void) uint32_t attribute; struct cli_state *targetcli; char *targetname = NULL; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -2699,8 +2689,7 @@ static int cmd_open(void) char *targetname = NULL; struct cli_state *targetcli; uint16_t fnum = (uint16_t)-1; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -2788,8 +2777,7 @@ static int cmd_posix_encrypt(void) } else { bool auth_requested = false; - creds = get_cmdline_auth_info_creds( - popt_get_cmdline_auth_info()); + creds = samba_cmdline_get_creds(); auth_requested = cli_credentials_authentication_requested(creds); if (!auth_requested) { @@ -2804,8 +2792,13 @@ static int cmd_posix_encrypt(void) if (!NT_STATUS_IS_OK(status)) { d_printf("posix_encrypt failed with error %s\n", nt_errstr(status)); } else { + bool ok; + d_printf("encryption on\n"); - set_cmdline_auth_info_smb_encrypt(popt_get_cmdline_auth_info()); + ok = cli_credentials_set_smb_encryption(creds, + SMB_ENCRYPTION_REQUIRED, + CRED_SPECIFIED); + SMB_ASSERT(ok); } return 0; @@ -2823,8 +2816,7 @@ static int cmd_posix_open(void) struct cli_state *targetcli; mode_t mode; uint16_t fnum; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -2885,8 +2877,7 @@ static int cmd_posix_mkdir(void) char *targetname = NULL; struct cli_state *targetcli; mode_t mode; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -2936,8 +2927,7 @@ static int cmd_posix_unlink(void) char *buf = NULL; char *targetname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -2982,8 +2972,7 @@ static int cmd_posix_rmdir(void) char *buf = NULL; char *targetname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -3292,8 +3281,7 @@ static int cmd_rmdir(void) char *buf = NULL; char *targetname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -3342,8 +3330,7 @@ static int cmd_link(void) char *buf2 = NULL; char *targetname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -3408,8 +3395,7 @@ static int cmd_readlink(void) char *targetname = NULL; char *linkname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { @@ -3468,8 +3454,7 @@ static int cmd_symlink(void) char *buf = NULL; char *buf2 = NULL; struct cli_state *newcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -3529,8 +3514,7 @@ static int cmd_chmod(void) char *targetname = NULL; struct cli_state *targetcli; mode_t mode; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -3697,8 +3681,7 @@ static int cmd_getfacl(void) size_t num_dir_acls = 0; size_t expected_buflen; uint16_t i; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&name,NULL)) { @@ -3883,8 +3866,7 @@ static int cmd_geteas(void) NTSTATUS status; size_t i, num_eas; struct ea_struct *eas; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); if (!next_token_talloc(ctx, &cmd_ptr,&name,NULL)) { d_printf("geteas filename\n"); @@ -3942,8 +3924,7 @@ static int cmd_setea(void) char *eavalue = NULL; char *targetname = NULL; struct cli_state *targetcli; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr, &name, NULL) @@ -3999,8 +3980,7 @@ static int cmd_stat(void) SMB_STRUCT_STAT sbuf; struct tm *lt; time_t tmp_time; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&name,NULL)) { @@ -4109,8 +4089,7 @@ static int cmd_chown(void) char *buf, *buf2, *buf3; struct cli_state *targetcli; char *targetname = NULL; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -4169,8 +4148,7 @@ static int cmd_rename(void) struct cli_state *targetcli; char *targetsrc; char *targetdest; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; bool replace = false; @@ -4275,8 +4253,7 @@ static int cmd_scopy(void) off_t written = 0; struct scopy_timing st; int rc = 0; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -4417,8 +4394,7 @@ static int cmd_hardlink(void) char *buf, *buf2; struct cli_state *targetcli; char *targetname; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL) || @@ -5126,8 +5102,7 @@ static int cmd_show_connect( void ) TALLOC_CTX *ctx = talloc_tos(); struct cli_state *targetcli; char *targetpath; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; status = cli_resolve_path(ctx, "", @@ -5387,9 +5362,10 @@ int cmd_iosize(void) TALLOC_CTX *ctx = talloc_tos(); char *buf; int iosize; + struct cli_credentials *creds = samba_cmdline_get_creds(); bool smb_encrypt = - get_cmdline_auth_info_smb_encrypt( - popt_get_cmdline_auth_info()); + (cli_credentials_get_smb_encryption(creds) == + SMB_ENCRYPTION_REQUIRED); if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { if (smbXcli_conn_protocol(cli->conn) < PROTOCOL_SMB2_02) { @@ -5653,8 +5629,7 @@ static int process_command_string(const char *cmd_in) TALLOC_CTX *ctx = talloc_tos(); char *cmd = talloc_strdup(ctx, cmd_in); int rc = 0; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); if (!cmd) { return 1; @@ -5790,8 +5765,7 @@ static char **remote_completion(const char *text, int len) struct cli_state *targetcli = NULL; int i; struct completion_remote info = { NULL, NULL, 1, 0, NULL, 0 }; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); NTSTATUS status; /* can't have non-static initialisation on Sun CC, so do it @@ -6109,8 +6083,7 @@ static int process(const char *base_directory) { int rc = 0; NTSTATUS status; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); status = cli_cm_open(talloc_tos(), NULL, desthost, @@ -6149,8 +6122,7 @@ static int process(const char *base_directory) static int do_host_query(const char *query_host) { NTSTATUS status; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); status = cli_cm_open(talloc_tos(), NULL, query_host, @@ -6226,8 +6198,7 @@ static int do_tar_op(const char *base_directory) { struct tar *tar_ctx = tar_get_ctx(); int ret = 0; - struct cli_credentials *creds = - get_cmdline_auth_info_creds(popt_get_cmdline_auth_info()); + struct cli_credentials *creds = samba_cmdline_get_creds(); /* do we already have a connection? */ if (!cli) { @@ -6267,7 +6238,7 @@ static int do_tar_op(const char *base_directory) Handle a message operation. ****************************************************************************/ -static int do_message_op(struct user_auth_info *a_info) +static int do_message_op(struct cli_credentials *creds) { NTSTATUS status; @@ -6288,7 +6259,7 @@ static int do_message_op(struct user_auth_info *a_info) } cli_set_timeout(cli, io_timeout*1000); - send_message(get_cmdline_auth_info_username(a_info)); + send_message(cli_credentials_get_username(creds)); cli_shutdown(cli); return 0; @@ -6312,6 +6283,7 @@ int main(int argc,char *argv[]) bool tar_opt = false; bool service_opt = false; struct tar *tar_ctx = tar_get_ctx(); + bool ok; struct poptOption long_options[] = { POPT_AUTOHELP @@ -6360,15 +6332,6 @@ int main(int argc,char *argv[]) .descrip = "Get a list of shares available on a host", .argDescrip = "HOST", }, - { - .longName = "max-protocol", - .shortName = 'm', - .argInfo = POPT_ARG_STRING, - .arg = NULL, - .val = 'm', - .descrip = "Set the max protocol level", - .argDescrip = "LEVEL", - }, { .longName = "tar", .shortName = 'T', @@ -6449,27 +6412,33 @@ int main(int argc,char *argv[]) POPT_COMMON_SAMBA POPT_COMMON_CONNECTION POPT_COMMON_CREDENTIALS + POPT_LEGACY_S3 + POPT_COMMON_VERSION POPT_TABLEEND }; TALLOC_CTX *frame = talloc_stackframe(); + struct cli_credentials *creds = NULL; if (!client_set_cur_dir("\\")) { exit(ENOMEM); } - /* set default debug level to 1 regardless of what smb.conf sets */ - setup_logging( "smbclient", DEBUG_DEFAULT_STDERR ); smb_init_locale(); + ok = samba_cmdline_init(frame, + SAMBA_CMDLINE_CONFIG_CLIENT, + false /* require_smbconf */); + if (!ok) { + DBG_ERR("Failed to init cmdline parser!\n"); + exit(ENOMEM); + } lp_set_cmdline("log level", "1"); - popt_common_credentials_set_ignore_missing_conf(); - popt_common_credentials_set_delay_post(); - /* skip argv(0) */ pc = poptGetContext("smbclient", argc, const_argv, long_options, 0); - poptSetOtherOptionHelp(pc, "service "); + poptSetOtherOptionHelp(pc, "[OPTIONS] service "); + creds = samba_cmdline_get_creds(); while ((opt = poptGetNextOpt(pc)) != -1) { /* @@ -6494,12 +6463,12 @@ int main(int argc,char *argv[]) } /* if the service has already been retrieved then check if we have also a password */ - if (service_opt - && (!get_cmdline_auth_info_got_pass( - popt_get_cmdline_auth_info())) - && poptPeekArg(pc)) { - set_cmdline_auth_info_password( - popt_get_cmdline_auth_info(), poptGetArg(pc)); + if (service_opt && + cli_credentials_get_password(creds) == NULL && + poptPeekArg(pc)) { + cli_credentials_set_password(creds, + poptGetArg(pc), + CRED_SPECIFIED); } @@ -6527,20 +6496,12 @@ int main(int argc,char *argv[]) print_sockaddr(dest_ss_str, sizeof(dest_ss_str), &dest_ss); } break; - case 'E': - setup_logging("smbclient", DEBUG_STDERR ); - display_set_stderr(); - break; - case 'L': query_host = talloc_strdup(frame, poptGetOptArg(pc)); if (!query_host) { exit(ENOMEM); } break; - case 'm': - lp_set_cmdline("client max protocol", poptGetOptArg(pc)); - break; case 'T': /* We must use old option processing for this. Find the * position of the -T option in the raw argv[]. */ @@ -6597,11 +6558,12 @@ int main(int argc,char *argv[]) } /* if the service has already been retrieved then check if we have also a password */ - if (service_opt - && !get_cmdline_auth_info_got_pass(popt_get_cmdline_auth_info()) - && poptPeekArg(pc)) { - set_cmdline_auth_info_password(popt_get_cmdline_auth_info(), - poptGetArg(pc)); + if (service_opt && + cli_credentials_get_password(creds) == NULL && + poptPeekArg(pc)) { + cli_credentials_set_password(creds, + poptGetArg(pc), + CRED_SPECIFIED); } if (service_opt && service) { @@ -6631,13 +6593,10 @@ int main(int argc,char *argv[]) } poptFreeContext(pc); - popt_burn_cmdline_password(argc, argv); + samba_cmdline_burn(argc, argv); DEBUG(3,("Client started (version %s).\n", samba_version_string())); - /* Ensure we have a password (or equivalent). */ - popt_common_credentials_post(); - if (tar_to_process(tar_ctx)) { if (cmdstr) process_command_string(cmdstr); @@ -6662,12 +6621,11 @@ int main(int argc,char *argv[]) rc = do_host_query(qhost); } else if (message) { - rc = do_message_op(popt_get_cmdline_auth_info()); + rc = do_message_op(creds); } else if (process(base_directory)) { rc = 1; } - popt_free_cmdline_auth_info(); TALLOC_FREE(frame); return rc; } diff --git a/source3/script/tests/test_smbclient_encryption_off.sh b/source3/script/tests/test_smbclient_encryption_off.sh index 467a4ee4ced..a545a61257b 100755 --- a/source3/script/tests/test_smbclient_encryption_off.sh +++ b/source3/script/tests/test_smbclient_encryption_off.sh @@ -42,24 +42,24 @@ testit "smbclient -m smb3_11 //$SERVER/tmp" $SMBCLIENT -m smb3_11 -U $USERNAME%$ # SMB1 testit_expect_failure "smbclient //$SERVER/tmpenc" $SMBCLIENT -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e //$SERVER/tmpenc" $SMBCLIENT -e -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt //$SERVER/tmpenc" $SMBCLIENT --client-protection=encrypt -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` # SMB3_02 testit_expect_failure "smbclient -m smb3_02 //$SERVER/tmpenc" $SMBCLIENT -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e -m smb3_02 //$SERVER/tmpenc" $SMBCLIENT -e -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_02 //$SERVER/tmpenc" $SMBCLIENT --client-protection=encrypt -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` # SMB3_11 testit_expect_failure "smbclient -m smb3_11 //$SERVER/tmpenc" $SMBCLIENT -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e -m smb3_11 //$SERVER/tmpenc" $SMBCLIENT -e -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_11 //$SERVER/tmpenc" $SMBCLIENT --client-protection=encrypt -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/tmpenc -c quit && failed=`expr $failed + 1` # These tests must fail, as the client requires encryption and it's off on the server # SMB1 -testit_expect_failure "smbclient -e //$SERVER/enc_desired" $SMBCLIENT -e -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e //$SERVER/tmp" $SMBCLIENT -e -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt //$SERVER/enc_desired" $SMBCLIENT --client-protection=encrypt -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt //$SERVER/tmp" $SMBCLIENT --client-protection=encrypt -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` # SMB3_02 -testit_expect_failure "smbclient -e -m smb3_02 //$SERVER/enc_desired" $SMBCLIENT -e -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e -m smb3_02 //$SERVER/tmp" $SMBCLIENT -e -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_02 //$SERVER/enc_desired" $SMBCLIENT --client-protection=encrypt -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_02 //$SERVER/tmp" $SMBCLIENT --client-protection=encrypt -m smb3_02 -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` # SMB3_11 -testit_expect_failure "smbclient -e -m smb3_11 //$SERVER/enc_desired" $SMBCLIENT -e -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` -testit_expect_failure "smbclient -e -m smb3_11 //$SERVER/tmp" $SMBCLIENT -e -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_11 //$SERVER/enc_desired" $SMBCLIENT --client-protection=encrypt -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/enc_desired -c quit && failed=`expr $failed + 1` +testit_expect_failure "smbclient --client-protection=encrypt -m smb3_11 //$SERVER/tmp" $SMBCLIENT --client-protection=encrypt -m smb3_11 -U $USERNAME%$PASSWORD //$SERVER/tmp -c quit && failed=`expr $failed + 1` testok $0 $failed diff --git a/source3/script/tests/test_smbclient_ntlm.sh b/source3/script/tests/test_smbclient_ntlm.sh index ab556cd56a4..09c06deffbb 100755 --- a/source3/script/tests/test_smbclient_ntlm.sh +++ b/source3/script/tests/test_smbclient_ntlm.sh @@ -66,10 +66,10 @@ else testit "smbclient baduser.badpassword.SMB3.guest" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mSMB3 -c quit $ADDARGS fi if [ $PROTOCOL = "NT1" ]; then - testit_expect_failure "smbclient baduser.badpassword.NT1OLD.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mNT1 --option=clientusespnego=no --option=clientntlmv2auth=no --signing=required -c quit $ADDARGS - testit_expect_failure "smbclient baduser.badpassword.NT1NEW.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mNT1 --signing=required -c quit $ADDARGS + testit_expect_failure "smbclient baduser.badpassword.NT1OLD.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mNT1 --option=clientusespnego=no --option=clientntlmv2auth=no --client-protection=sign -c quit $ADDARGS + testit_expect_failure "smbclient baduser.badpassword.NT1NEW.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mNT1 --client-protection=sign -c quit $ADDARGS fi if [ $PROTOCOL = "SMB3" ]; then - testit_expect_failure "smbclient baduser.badpassword.SMB3.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mSMB3 --signing=required -c quit $ADDARGS + testit_expect_failure "smbclient baduser.badpassword.SMB3.signfail" $SMBCLIENT //$SERVER/IPC\$ $CONFIGURATION -Ubaduser%badpassword -mSMB3 --client-protection=sign -c quit $ADDARGS fi fi diff --git a/source3/script/tests/test_smbclient_s3.sh b/source3/script/tests/test_smbclient_s3.sh index 525f7f0a2a9..89a17656159 100755 --- a/source3/script/tests/test_smbclient_s3.sh +++ b/source3/script/tests/test_smbclient_s3.sh @@ -616,7 +616,7 @@ test_ccache_access() return 1 fi - $SMBCLIENT //$SERVER_IP/tmp -C -U "${USERNAME}" $ADDARGS -c quit 2>&1 + $SMBCLIENT //$SERVER_IP/tmp --use-winbind-ccache -U "${USERNAME}" $ADDARGS -c quit 2>&1 ret=$? if [ $ret != 0 ] ; then @@ -632,7 +632,7 @@ test_ccache_access() return 1 fi - $SMBCLIENT //$SERVER_IP/tmp -C -U "${USERNAME}" $ADDARGS -c quit 2>&1 + $SMBCLIENT //$SERVER_IP/tmp --use-winbind-ccache -U "${USERNAME}" $ADDARGS -c quit 2>&1 ret=$? if [ $ret -eq 0 ] ; then diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index 20a0e63bed7..9b7271ea6d5 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -446,19 +446,19 @@ for env in ["nt4_member", "ad_member"]: plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3"]) env = "nt4_dc_smb1_done" -plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--signing=required"]) +plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--client-protection=sign"]) env = "nt4_dc" -plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--signing=required"]) +plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--client-protection=sign"]) for env in ["nt4_member", "ad_member"]: - plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--signing=required"]) - plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--signing=required"]) + plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--client-protection=sign"]) + plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--client-protection=sign"]) env = "nt4_dc_smb1_done" # encrypted -plantestsuite("samba3.blackbox.smbclient_s3.NT1.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "-e"]) +plantestsuite("samba3.blackbox.smbclient_s3.NT1.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--client-protection=encrypt"]) env = "nt4_dc" -plantestsuite("samba3.blackbox.smbclient_s3.SMB3.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "-e"]) +plantestsuite("samba3.blackbox.smbclient_s3.SMB3.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--client-protection=encrypt"]) for env in ["fileserver"]: plantestsuite("samba3.blackbox.preserve_case.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "NT1"]) @@ -1143,7 +1143,7 @@ plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member", # The ktest environment uses: # server min protocol = SMB3_00 # client max protocol = SMB3 -options_list = ["", "-e"] +options_list = ["", "--client-protection=encrypt"] for options in options_list: plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"), @@ -1158,9 +1158,9 @@ for options in options_list: plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"), "$PREFIX/ktest/krb5_ccache-3", - smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration]) + smbclient3, "$SERVER", "$PREFIX", options, "--use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3 " + configuration]) -options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"] +options_list = ["-mNT1", "-mNT1 --client-protection=encrypt", "-mSMB3", "-mSMB3 --client-protection=encrypt"] for options in options_list: env = "nt4_dc" if "NT1" in options: diff --git a/source3/wscript_build b/source3/wscript_build index d0fda816f56..e756c407f94 100644 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -1135,7 +1135,7 @@ bld.SAMBA3_BINARY('client/smbclient', ''', deps=''' talloc - popt_samba3_cmdline + CMDLINE_S3 smbconf ndr-standard SMBREADLINE -- 2.47.3