From a60e59735c20f8e342fa1b00ae5715f1673f22be Mon Sep 17 00:00:00 2001 From: Tim Beale Date: Tue, 21 May 2019 11:27:45 +1200 Subject: [PATCH] selftest: Refactor duplicated code to set ENV vars Whenever we started a process, we basically used the same code to setup the ENV variables. The s4 ENVNAME may now be slightly different in the child process that runs samba (i.e. '$testenv.samba'), but that ENV var did not appeared to be used much. I'm not sure if the current difference in $skip_resolv_wrapper logic for nmbd was deliberate or accidental, but I've preserved the logic for now. Signed-off-by: Tim Beale Reviewed-by: Andrew Bartlett --- selftest/target/Samba.pm | 40 ++++++++++++++++++++++++++++ selftest/target/Samba3.pm | 56 +++------------------------------------ selftest/target/Samba4.pm | 28 +++++--------------- 3 files changed, 51 insertions(+), 73 deletions(-) diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm index 38b38669dac..ebbd5847e0c 100644 --- a/selftest/target/Samba.pm +++ b/selftest/target/Samba.pm @@ -580,6 +580,46 @@ sub random_domain_sid() return $domain_sid; } +# sets the environment variables ready for running a given process +sub set_env_for_process +{ + my ($proc_name, $env_vars, $skip_resolv_wrapper) = @_; + + $proc_envs = get_env_for_process($proc_name, $env_vars, $skip_resolv_wrapper); + + foreach my $key (keys %{ $proc_envs }) { + $ENV{$key} = $proc_envs->{$key}; + } +} + +sub get_env_for_process +{ + my ($proc_name, $env_vars, $skip_resolv_wrapper) = @_; + my $proc_envs = { + KRB5_CONFIG => $env_vars->{KRB5_CONFIG}, + KRB5CCNAME => "$env_vars->{KRB5_CCACHE}.$proc_name", + SELFTEST_WINBINDD_SOCKET_DIR => $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR}, + NMBD_SOCKET_DIR => $env_vars->{NMBD_SOCKET_DIR}, + NSS_WRAPPER_PASSWD => $env_vars->{NSS_WRAPPER_PASSWD}, + NSS_WRAPPER_GROUP => $env_vars->{NSS_WRAPPER_GROUP}, + NSS_WRAPPER_HOSTS => $env_vars->{NSS_WRAPPER_HOSTS}, + NSS_WRAPPER_HOSTNAME => $env_vars->{NSS_WRAPPER_HOSTNAME}, + NSS_WRAPPER_MODULE_SO_PATH => $env_vars->{NSS_WRAPPER_MODULE_SO_PATH}, + NSS_WRAPPER_MODULE_FN_PREFIX => $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX}, + UID_WRAPPER_ROOT => "1", + ENVNAME => "$ENV{ENVNAME}.$proc_name", + }; + + if (not defined($skip_resolv_wrapper)) { + if (defined($env_vars->{RESOLV_WRAPPER_CONF})) { + $proc_envs->{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF}; + } else { + $proc_envs->{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS}; + } + } + return $proc_envs; +} + my @exported_envvars = ( # domain stuff "DOMAIN", diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index a9c554fc50e..1996386bbac 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -1251,20 +1251,8 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); - $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG}; - $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.nmbd"; - $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR}; - $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; - - $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; - $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; - $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS}; - $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME}; - $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH}; - $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX}; - $ENV{UID_WRAPPER_ROOT} = "1"; - - $ENV{ENVNAME} = "$ENV{ENVNAME}.nmbd"; + my $skip_resolv_wrapper = 1; + Samba::set_env_for_process("nmbd", $env_vars, $skip_resolv_wrapper); if ($nmbd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { @@ -1311,25 +1299,7 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); - $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG}; - $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.winbindd"; - $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR}; - $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; - - $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; - $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; - $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS}; - $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME}; - $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH}; - $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX}; - if (defined($env_vars->{RESOLV_WRAPPER_CONF})) { - $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF}; - } else { - $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS}; - } - $ENV{UID_WRAPPER_ROOT} = "1"; - - $ENV{ENVNAME} = "$ENV{ENVNAME}.winbindd"; + Samba::set_env_for_process("winbindd", $env_vars); if ($winbindd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { @@ -1376,25 +1346,7 @@ sub check_or_start($$$$$) { SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); - $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG}; - $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.smbd"; - $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR}; - $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; - - $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; - $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; - $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS}; - $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME}; - $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH}; - $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX}; - if (defined($env_vars->{RESOLV_WRAPPER_CONF})) { - $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF}; - } else { - $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS}; - } - $ENV{UID_WRAPPER_ROOT} = "1"; - - $ENV{ENVNAME} = "$ENV{ENVNAME}.smbd"; + Samba::set_env_for_process("smbd", $env_vars); if ($smbd ne "yes") { $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm index 448241aed09..3b68fec12ce 100755 --- a/selftest/target/Samba4.pm +++ b/selftest/target/Samba4.pm @@ -126,30 +126,16 @@ sub check_or_start($$$) SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); - $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG}; - $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.samba"; + # setup common samba env variables + Samba::set_env_for_process("samba", $env_vars); + + # setup additional env variables for s4 + $ENV{RESOLV_CONF} = $env_vars->{RESOLV_CONF}; + $ENV{UID_WRAPPER} = "1"; + if (defined($ENV{MITKRB5})) { $ENV{KRB5_KDC_PROFILE} = $env_vars->{MITKDC_CONFIG}; } - $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR}; - $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR}; - - $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD}; - $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP}; - $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS}; - $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME}; - $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH}; - $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX}; - - if (defined($env_vars->{RESOLV_WRAPPER_CONF})) { - $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF}; - } else { - $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS}; - } - $ENV{RESOLV_CONF} = $env_vars->{RESOLV_CONF}; - - $ENV{UID_WRAPPER} = "1"; - $ENV{UID_WRAPPER_ROOT} = "1"; $ENV{MAKE_TEST_BINARY} = Samba::bindir_path($self, "samba"); my @preargs = (); -- 2.47.3