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 |
|
---|