This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to...
[kai/samba.git] / testsuite / build_farm / basicsmb.fns
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_setup preexec lib/preexec
67
68         echo "127.0.0.1    localhost">$prefix/lib/lmhosts
69         echo "127.0.0.2    BUILDFARM">>$prefix/lib/lmhosts
70     echo "127.0.0.3    SHARE">>$prefix/lib/lmhosts
71     echo "127.0.0.4    USER">>$prefix/lib/lmhosts
72     echo "127.0.0.5    SERVER">>$prefix/lib/lmhosts
73     echo "127.0.0.6    DOMAIN">>$prefix/lib/lmhosts
74     echo "127.0.0.7    HOSTSEQUIV">>$prefix/lib/lmhosts
75     echo "127.0.0.7    VALIDUSERS">>$prefix/lib/lmhosts
76     echo "127.0.0.7    INVALIDUSERS">>$prefix/lib/lmhosts
77     echo "127.0.0.7    PREEXEC">>$prefix/lib/lmhosts
78     echo "127.0.0.7    PREEXEC_CLOSE">>$prefix/lib/lmhosts
79     echo "127.0.0.7    PREEXEC_CL_FL">>$prefix/lib/lmhosts
80
81
82         echo "127.0.0.1" > $prefix/lib/hosts.equiv
83
84     cp basicsmb.smb.conf.share $prefix/lib/smb.conf.share
85     cp basicsmb.smb.conf.user $prefix/lib/smb.conf.user
86     cp basicsmb.smb.conf.server $prefix/lib/smb.conf.server
87     cp basicsmb.smb.conf.domain $prefix/lib/smb.conf.domain
88
89     touch $prefix/lib/smb.conf.
90     touch $prefix/lib/smb.conf.localhost
91 }
92
93 test_smbpasswd() {
94         test_smbpasswd_password="$1"
95         rm -f $prefix/private/smbpasswd
96         echo "( echo $test_smbpasswd_password ; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -s -a $whoami"
97         ( echo $test_smbpasswd_password; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -s -a $whoami
98         status=$?
99         if [ $status = 0 ]; then
100             echo "smbpasswd correctly set initial password ($test_smbpasswd_password)"
101         else
102             echo "smbpasswd failed to set initial password ($test_smbpasswd_password)! (status $status)"
103             return 1
104         fi
105         return 0
106 }
107
108 test_smbpasswd_remote() {
109         test_smbpasswd_rem_password="$1"
110         test_smbpasswd_rem_newpassword="$2"
111         echo "( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami"
112         ( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami
113         status=$?
114         if [ $status = 0 ]; then
115             echo "smbpasswd correctly remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)"
116         else
117             echo "smbpasswd failed to remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)! (status $status)"
118             return 1
119         fi
120         return 0
121 }
122
123 test_smbpasswd_local() {
124         test_smbpasswd_newpassword="$2"
125         echo "( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami"
126         ( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami
127         status=$?
128         if [ $status = 0 ]; then
129             echo "smbpasswd correctly locally changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)"
130         else
131             echo "smbpasswd failed to locallly changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)! (status $status)"
132             return 1
133         fi
134         return 0
135 }
136
137 test_listfilesauth() {
138         remote_name="$1"
139         echo $prefix/bin/smbclient //$remote_name/samba  -n buildclient -U$whoami%$password -c 'ls'
140         $prefix/bin/smbclient //$remote_name/samba  -n buildclient -U$whoami%$password -c 'ls'
141         status=$?
142         if [ $status = 0 ]; then
143                 echo "listed files OK"
144         else 
145                 echo "listing files with smbd failed with status $status"
146                 return 1
147         fi
148         return 0
149 }
150
151 test_listfilesnpw() {
152         remote_name="$1"
153         echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%  -c 'ls'
154         $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami% -c 'ls'
155         status=$?
156         if [ $status = 0 ]; then
157                 echo "smbd listed files with NO PASSWORD on an authenticated share!"
158                 return 1
159         else 
160                 echo "listing files with smbd failed with status $status (correct)"
161         fi
162         return 0
163 }
164
165 test_listfilesauth_should_deny() {
166         remote_name="$1"
167         echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password  -c 'ls'
168         $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
169         status=$?
170         if [ $status = 0 ]; then
171                 echo "smbd LISTED FILES despite smb.conf entires to the contary!"
172                 return 1
173         else 
174                 echo "listing files with smbd failed with status $status (correct)"
175         fi
176         return 0
177 }
178
179 echo "LIBSMB_PROG=$LIBSMB_PROG" >&2
180
181
182
183 # Give sensible defaults to some variables.  
184
185 # "What's my age again?"
186
187 if [ ! $USER = "" ]; then
188     whoami=$USER
189 else 
190     if [ ! $LOGNAME = "" ]; then
191         whoami=$LOGNAME
192     else
193         whoami=build
194     fi
195 fi
196
197
198
199 if test -z "$loglevel"
200 then
201     loglevel=1
202 fi
203