| 1 | #! /bin/sh
|
|---|
| 2 |
|
|---|
| 3 | # Common functions for Samba build scripts.
|
|---|
| 4 |
|
|---|
| 5 | # Copyright (C) 2001 by Martin Pool <mbp@samba.org> and others
|
|---|
| 6 |
|
|---|
| 7 | # The following variables are passed in by the calling script. They
|
|---|
| 8 | # originate in either the buildfarm scripts or the configured
|
|---|
| 9 | # Makefile.
|
|---|
| 10 |
|
|---|
| 11 | # PREFIX = Installed prefix of samba test installation. Used to
|
|---|
| 12 | # locate binaries, configuration files, etc.
|
|---|
| 13 |
|
|---|
| 14 | # XXX: It's pretty bad to clobber the installed configuration file and
|
|---|
| 15 | # other data in $prefix, because somebody might unwittingly run this
|
|---|
| 16 | # with prefix=/usr.
|
|---|
| 17 |
|
|---|
| 18 | # Really what we want is a consistent way to pass the location of the
|
|---|
| 19 | # configuration and all other files into *all* Samba programs
|
|---|
| 20 | # (smbclient, smd, ...) and be able to set them to a temporary
|
|---|
| 21 | # directory when testing. Some of them take a -c parameter, but tpot
|
|---|
| 22 | # says it's not done consistently.
|
|---|
| 23 |
|
|---|
| 24 | template_setup() {
|
|---|
| 25 | cat template/$1 | \
|
|---|
| 26 | sed "s|PREFIX|$prefix|g" | \
|
|---|
| 27 | sed "s|BUILD_FARM|$test_root|g" | \
|
|---|
| 28 | sed "s|WHOAMI|$whoami|g" | \
|
|---|
| 29 | sed "s|LOGLEVEL|$loglevel|g" \
|
|---|
| 30 | > $prefix/$2
|
|---|
| 31 | echo "template_setup: Created $prefix/$2"
|
|---|
| 32 | }
|
|---|
| 33 |
|
|---|
| 34 | template_smb_conf_setup() {
|
|---|
| 35 | template_setup "basicsmb.smb.conf$1" "lib/smb.conf$1"
|
|---|
| 36 | }
|
|---|
| 37 |
|
|---|
| 38 | test_smb_conf_setup() {
|
|---|
| 39 | echo "test_smb_conf_setup: Configuring: "
|
|---|
| 40 | echo " PREFIX=$prefix"
|
|---|
| 41 | echo " BUILD_FARM=$test_root"
|
|---|
| 42 | echo " WHOAMI=$whoami"
|
|---|
| 43 | echo " LOGLEVEL=$loglevel"
|
|---|
| 44 | echo " TREE=$tree"
|
|---|
| 45 |
|
|---|
| 46 | case "$prefix" in
|
|---|
| 47 | /usr*|/|//)
|
|---|
| 48 | echo "** I don't want to clobber your installation in "
|
|---|
| 49 | echo "** $prefix"
|
|---|
| 50 | echo "** by running tests there. Please reconfigure this source tree to"
|
|---|
| 51 | echo "** use a different prefix."
|
|---|
| 52 | exit 1
|
|---|
| 53 | esac
|
|---|
| 54 |
|
|---|
| 55 | # Please keep these names under 15 characters,
|
|---|
| 56 | # so that the final name is 31 characters or fewer.
|
|---|
| 57 |
|
|---|
| 58 | template_smb_conf_setup
|
|---|
| 59 | template_smb_conf_setup .hostsequiv
|
|---|
| 60 | template_smb_conf_setup .validusers
|
|---|
| 61 | template_smb_conf_setup .invalidusers
|
|---|
| 62 | template_smb_conf_setup .preexec
|
|---|
| 63 | template_smb_conf_setup .preexec_close
|
|---|
| 64 | template_smb_conf_setup .preexec_cl_fl
|
|---|
| 65 |
|
|---|
| 66 | template_smb_conf_setup .share
|
|---|
| 67 | template_smb_conf_setup .user
|
|---|
| 68 | template_smb_conf_setup .server
|
|---|
| 69 | template_smb_conf_setup .domain
|
|---|
| 70 |
|
|---|
| 71 | template_setup preexec lib/preexec
|
|---|
| 72 |
|
|---|
| 73 | touch $prefix/lib/smb.conf.
|
|---|
| 74 | touch $prefix/lib/smb.conf.localhost
|
|---|
| 75 |
|
|---|
| 76 | echo "127.0.0.1 localhost">$prefix/lib/lmhosts
|
|---|
| 77 | echo "127.0.0.2 BUILDFARM">>$prefix/lib/lmhosts
|
|---|
| 78 | echo "127.0.0.3 SHARE">>$prefix/lib/lmhosts
|
|---|
| 79 | echo "127.0.0.4 USER">>$prefix/lib/lmhosts
|
|---|
| 80 | echo "127.0.0.5 SERVER">>$prefix/lib/lmhosts
|
|---|
| 81 | echo "127.0.0.6 DOMAIN">>$prefix/lib/lmhosts
|
|---|
| 82 | echo "127.0.0.7 HOSTSEQUIV">>$prefix/lib/lmhosts
|
|---|
| 83 | echo "127.0.0.7 VALIDUSERS">>$prefix/lib/lmhosts
|
|---|
| 84 | echo "127.0.0.7 INVALIDUSERS">>$prefix/lib/lmhosts
|
|---|
| 85 | echo "127.0.0.7 PREEXEC">>$prefix/lib/lmhosts
|
|---|
| 86 | echo "127.0.0.7 PREEXEC_CLOSE">>$prefix/lib/lmhosts
|
|---|
| 87 | echo "127.0.0.7 PREEXEC_CL_FL">>$prefix/lib/lmhosts
|
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 | echo "127.0.0.1" > $prefix/lib/hosts.equiv
|
|---|
| 91 |
|
|---|
| 92 | }
|
|---|
| 93 |
|
|---|
| 94 | test_smbpasswd() {
|
|---|
| 95 | test_smbpasswd_password="$1"
|
|---|
| 96 | rm -f $prefix/private/smbpasswd
|
|---|
| 97 | echo "( echo $test_smbpasswd_password ; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami"
|
|---|
| 98 | ( echo $test_smbpasswd_password; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami
|
|---|
| 99 | status=$?
|
|---|
| 100 | if [ $status = 0 ]; then
|
|---|
| 101 | echo "smbpasswd correctly set initial password ($test_smbpasswd_password)"
|
|---|
| 102 | else
|
|---|
| 103 | echo "smbpasswd failed to set initial password ($test_smbpasswd_password)! (status $status)"
|
|---|
| 104 | return 1
|
|---|
| 105 | fi
|
|---|
| 106 | return 0
|
|---|
| 107 | }
|
|---|
| 108 |
|
|---|
| 109 | test_smbpasswd_remote() {
|
|---|
| 110 | test_smbpasswd_rem_password="$1"
|
|---|
| 111 | test_smbpasswd_rem_newpassword="$2"
|
|---|
| 112 | echo "( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami"
|
|---|
| 113 | ( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami
|
|---|
| 114 | status=$?
|
|---|
| 115 | if [ $status = 0 ]; then
|
|---|
| 116 | echo "smbpasswd correctly remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)"
|
|---|
| 117 | else
|
|---|
| 118 | echo "smbpasswd failed to remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)! (status $status)"
|
|---|
| 119 | return 1
|
|---|
| 120 | fi
|
|---|
| 121 | return 0
|
|---|
| 122 | }
|
|---|
| 123 |
|
|---|
| 124 | test_smbpasswd_local() {
|
|---|
| 125 | test_smbpasswd_newpassword="$2"
|
|---|
| 126 | echo "( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami"
|
|---|
| 127 | ( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami
|
|---|
| 128 | status=$?
|
|---|
| 129 | if [ $status = 0 ]; then
|
|---|
| 130 | echo "smbpasswd correctly locally changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)"
|
|---|
| 131 | else
|
|---|
| 132 | echo "smbpasswd failed to locallly changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)! (status $status)"
|
|---|
| 133 | return 1
|
|---|
| 134 | fi
|
|---|
| 135 | return 0
|
|---|
| 136 | }
|
|---|
| 137 |
|
|---|
| 138 | test_listfilesauth() {
|
|---|
| 139 | remote_name="$1"
|
|---|
| 140 | echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
|
|---|
| 141 | $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
|
|---|
| 142 | status=$?
|
|---|
| 143 | if [ $status = 0 ]; then
|
|---|
| 144 | echo "listed files OK"
|
|---|
| 145 | else
|
|---|
| 146 | echo "listing files with smbd failed with status $status"
|
|---|
| 147 | return 1
|
|---|
| 148 | fi
|
|---|
| 149 | return 0
|
|---|
| 150 | }
|
|---|
| 151 |
|
|---|
| 152 | test_listfilesnpw() {
|
|---|
| 153 | remote_name="$1"
|
|---|
| 154 | echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami% -c 'ls'
|
|---|
| 155 | $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami% -c 'ls'
|
|---|
| 156 | status=$?
|
|---|
| 157 | if [ $status = 0 ]; then
|
|---|
| 158 | echo "smbd listed files with NO PASSWORD on an authenticated share!"
|
|---|
| 159 | return 1
|
|---|
| 160 | else
|
|---|
| 161 | echo "listing files with smbd failed with status $status (correct)"
|
|---|
| 162 | fi
|
|---|
| 163 | return 0
|
|---|
| 164 | }
|
|---|
| 165 |
|
|---|
| 166 | test_listfilesauth_should_deny() {
|
|---|
| 167 | remote_name="$1"
|
|---|
| 168 | echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
|
|---|
| 169 | $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
|
|---|
| 170 | status=$?
|
|---|
| 171 | if [ $status = 0 ]; then
|
|---|
| 172 | echo "smbd LISTED FILES despite smb.conf entires to the contary!"
|
|---|
| 173 | return 1
|
|---|
| 174 | else
|
|---|
| 175 | echo "listing files with smbd failed with status $status (correct)"
|
|---|
| 176 | fi
|
|---|
| 177 | return 0
|
|---|
| 178 | }
|
|---|
| 179 |
|
|---|
| 180 | echo "LIBSMB_PROG=$LIBSMB_PROG" >&2
|
|---|
| 181 |
|
|---|
| 182 |
|
|---|
| 183 |
|
|---|
| 184 | # Give sensible defaults to some variables.
|
|---|
| 185 |
|
|---|
| 186 | # "What's my age again?"
|
|---|
| 187 |
|
|---|
| 188 | if [ ! $USER = "" ]; then
|
|---|
| 189 | whoami=$USER
|
|---|
| 190 | else
|
|---|
| 191 | if [ ! $LOGNAME = "" ]; then
|
|---|
| 192 | whoami=$LOGNAME
|
|---|
| 193 | else
|
|---|
| 194 | whoami=build
|
|---|
| 195 | fi
|
|---|
| 196 | fi
|
|---|
| 197 |
|
|---|
| 198 |
|
|---|
| 199 |
|
|---|
| 200 | if test -z "$loglevel"
|
|---|
| 201 | then
|
|---|
| 202 | loglevel=1
|
|---|
| 203 | fi
|
|---|
| 204 |
|
|---|