r23801: The FSF has moved around a lot. This fixes their Mass Ave address.
[jra/samba/.git] / testsuite / build_farm / basicsmb.fns
index 592cb62de4893a3d105de9d36fc2173eca69c47f..3a9080f473b738b30792b7d3ce8ea3bef89d8a67 100644 (file)
-test_smb_conf_setup() {
-       cat basicsmb.smb.conf.template | \
+#! /bin/sh
+
+# Common functions for Samba build scripts.
+
+# Copyright (C) 2001 by Martin Pool <mbp@samba.org> and others
+
+# The following variables are passed in by the calling script.  They
+# originate in either the buildfarm scripts or the configured
+# Makefile.
+
+# PREFIX = Installed prefix of samba test installation.  Used to
+# locate binaries, configuration files, etc.  
+
+# XXX: It's pretty bad to clobber the installed configuration file and
+# other data in $prefix, because somebody might unwittingly run this
+# with prefix=/usr.  
+
+# Really what we want is a consistent way to pass the location of the
+# configuration and all other files into *all* Samba programs
+# (smbclient, smd, ...) and be able to set them to a temporary
+# directory when testing.  Some of them take a -c parameter, but tpot
+# says it's not done consistently.
+
+template_setup() {
+       cat template/$1 | \
               sed "s|PREFIX|$prefix|g" | \
-             sed "s|BUILD_FARM|$pwd|g" | \
+             sed "s|BUILD_FARM|$test_root|g" | \
              sed "s|WHOAMI|$whoami|g" | \
              sed "s|LOGLEVEL|$loglevel|g" \
-        > $prefix/lib/smb.conf
+        > $prefix/$2
+       echo "template_setup: Created $prefix/$2"
+}
+
+template_smb_conf_setup() {
+    template_setup "basicsmb.smb.conf$1" "lib/smb.conf$1"
+}
+
+test_smb_conf_setup() {
+    echo "test_smb_conf_setup: Configuring: "
+    echo "    PREFIX=$prefix"
+    echo "    BUILD_FARM=$test_root"
+    echo "    WHOAMI=$whoami"
+    echo "    LOGLEVEL=$loglevel"
+    echo "    TREE=$tree"
+
+    case "$prefix" in
+    /usr*|/|//)
+        echo "** I don't want to clobber your installation in "
+       echo "**     $prefix"
+       echo "** by running tests there.  Please reconfigure this source tree to"
+       echo "** use a different prefix."
+       exit 1
+    esac
+
+#   Please keep these names under 15 characters,
+#   so that the final name is 31 characters or fewer.
+
+    template_smb_conf_setup 
+    template_smb_conf_setup .hostsequiv
+    template_smb_conf_setup .validusers
+    template_smb_conf_setup .invalidusers
+    template_smb_conf_setup .preexec
+    template_smb_conf_setup .preexec_close
+    template_smb_conf_setup .preexec_cl_fl
+
+    template_smb_conf_setup .share
+    template_smb_conf_setup .user
+    template_smb_conf_setup .server
+    template_smb_conf_setup .domain
+
+    template_setup preexec lib/preexec
 
-       echo "127.0.0.1    localhost">$prefix/lib/lmhosts
-    echo "127.0.0.1    SHARE">>$prefix/lib/lmhosts
-    echo "127.0.0.1    USER">>$prefix/lib/lmhosts
-    echo "127.0.0.1    SERVER">>$prefix/lib/lmhosts
-    echo "127.0.0.1    DOMAIN">>$prefix/lib/lmhosts
-    cp basicsmb.smb.conf.share $prefix/lib/smb.conf.share
-    cp basicsmb.smb.conf.user $prefix/lib/smb.conf.user
-    cp basicsmb.smb.conf.server $prefix/lib/smb.conf.server
-    cp basicsmb.smb.conf.domain $prefix/lib/smb.conf.domain
     touch $prefix/lib/smb.conf.
     touch $prefix/lib/smb.conf.localhost
+
+       echo "127.0.0.1    localhost">$prefix/lib/lmhosts
+       echo "127.0.0.2    BUILDFARM">>$prefix/lib/lmhosts
+    echo "127.0.0.3    SHARE">>$prefix/lib/lmhosts
+    echo "127.0.0.4    USER">>$prefix/lib/lmhosts
+    echo "127.0.0.5    SERVER">>$prefix/lib/lmhosts
+    echo "127.0.0.6    DOMAIN">>$prefix/lib/lmhosts
+    echo "127.0.0.7    HOSTSEQUIV">>$prefix/lib/lmhosts
+    echo "127.0.0.7    VALIDUSERS">>$prefix/lib/lmhosts
+    echo "127.0.0.7    INVALIDUSERS">>$prefix/lib/lmhosts
+    echo "127.0.0.7    PREEXEC">>$prefix/lib/lmhosts
+    echo "127.0.0.7    PREEXEC_CLOSE">>$prefix/lib/lmhosts
+    echo "127.0.0.7    PREEXEC_CL_FL">>$prefix/lib/lmhosts
+
+
+       echo "127.0.0.1" > $prefix/lib/hosts.equiv
+
 }
 
 test_smbpasswd() {
        test_smbpasswd_password="$1"
        rm -f $prefix/private/smbpasswd
-       echo "( echo $test_smbpasswd_password ; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -s -a $whoami"
-       ( echo $password ; echo $password; ) | $prefix/bin/smbpasswd -L -s -a $whoami
+       echo "( echo $test_smbpasswd_password ; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami"
+       ( echo $test_smbpasswd_password; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami
        status=$?
        if [ $status = 0 ]; then
-           echo "smbpasswd correctly set inital password ($test_smbpasswd_password)"
+           echo "smbpasswd correctly set initial password ($test_smbpasswd_password)"
        else
-           echo "smbpasswd failed to set inital password ($test_smbpasswd_password)! (status $status)"
+           echo "smbpasswd failed to set initial password ($test_smbpasswd_password)! (status $status)"
+           return 1
+       fi
+       return 0
+}
+
+test_smbpasswd_remote() {
+       test_smbpasswd_rem_password="$1"
+       test_smbpasswd_rem_newpassword="$2"
+       echo "( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami"
+       ( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami
+       status=$?
+       if [ $status = 0 ]; then
+           echo "smbpasswd correctly remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)"
+       else
+           echo "smbpasswd failed to remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)! (status $status)"
+           return 1
+       fi
+       return 0
+}
+
+test_smbpasswd_local() {
+       test_smbpasswd_newpassword="$2"
+       echo "( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami"
+       ( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami
+       status=$?
+       if [ $status = 0 ]; then
+           echo "smbpasswd correctly locally changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)"
+       else
+           echo "smbpasswd failed to locallly changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)! (status $status)"
            return 1
        fi
        return 0
@@ -36,7 +137,7 @@ test_smbpasswd() {
 
 test_listfilesauth() {
        remote_name="$1"
-       echo $prefix/bin/smbclient//$remote_name/samba  -n buildclient -U$whoami%$password -c 'ls'
+       echo $prefix/bin/smbclient //$remote_name/samba  -n buildclient -U$whoami%$password -c 'ls'
        $prefix/bin/smbclient //$remote_name/samba  -n buildclient -U$whoami%$password -c 'ls'
        status=$?
        if [ $status = 0 ]; then
@@ -62,3 +163,42 @@ test_listfilesnpw() {
        return 0
 }
 
+test_listfilesauth_should_deny() {
+       remote_name="$1"
+       echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password  -c 'ls'
+       $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls'
+       status=$?
+       if [ $status = 0 ]; then
+               echo "smbd LISTED FILES despite smb.conf entires to the contary!"
+               return 1
+       else 
+               echo "listing files with smbd failed with status $status (correct)"
+       fi
+       return 0
+}
+
+echo "LIBSMB_PROG=$LIBSMB_PROG" >&2
+
+
+
+# Give sensible defaults to some variables.  
+
+# "What's my age again?"
+
+if [ ! $USER = "" ]; then
+    whoami=$USER
+else 
+    if [ ! $LOGNAME = "" ]; then
+       whoami=$LOGNAME
+    else
+       whoami=build
+    fi
+fi
+
+
+
+if test -z "$loglevel"
+then
+    loglevel=1
+fi
+