Home | History | Annotate | Line # | Download | only in scripts
      1 #! /bin/sh
      2 # $OpenLDAP$
      3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4 ##
      5 ## Copyright 1998-2024 The OpenLDAP Foundation.
      6 ## All rights reserved.
      7 ##
      8 ## Redistribution and use in source and binary forms, with or without
      9 ## modification, are permitted only as authorized by the OpenLDAP
     10 ## Public License.
     11 ##
     12 ## A copy of this license is available in the file LICENSE in the
     13 ## top-level directory of the distribution or, alternatively, at
     14 ## <http://www.OpenLDAP.org/license.html>.
     15 
     16 echo "running defines.sh"
     17 . $SRCDIR/scripts/defines.sh
     18 
     19 if test $WITH_TLS = no ; then
     20         echo "TLS support not available, test skipped"
     21         exit 0
     22 fi
     23 
     24 if test $WITH_SASL = no ; then
     25 	echo "SASL support not available, test skipped"
     26 	exit 0
     27 fi
     28 
     29 mkdir -p $TESTDIR $DBDIR1
     30 cp -r $DATADIR/tls $TESTDIR
     31 
     32 cd $TESTWD
     33 
     34 echo "Running slapadd to build slapd database..."
     35 . $CONFFILTER $BACKEND < $TLSSASLCONF > $CONF1
     36 $SLAPADD -f $CONF1 -l $LDIFORDERED
     37 RC=$?
     38 if test $RC != 0 ; then
     39         echo "slapadd failed ($RC)!"
     40         exit $RC
     41 fi
     42 
     43 echo "Starting ldap:/// slapd on TCP/IP port $PORT1 and ldaps:/// slapd on $PORT2..."
     44 $SLAPD -f $CONF1 -h "$URI1 $SURI2" -d $LVL > $LOG1 2>&1 &
     45 PID=$!
     46 if test $WAIT != 0 ; then
     47     echo PID $PID
     48     read foo
     49 fi
     50 KILLPIDS="$PID"
     51 
     52 sleep 1
     53 
     54 for i in 0 1 2 3 4 5; do
     55 	$LDAPSEARCH -s base -b "" -H $URI1 \
     56 		'objectclass=*' > /dev/null 2>&1
     57         RC=$?
     58         if test $RC = 0 ; then
     59                 break
     60         fi
     61         echo "Waiting 5 seconds for slapd to start..."
     62         sleep 5
     63 done
     64 
     65 if test $RC != 0 ; then
     66 	echo "ldapsearch failed ($RC)!"
     67 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     68 	exit $RC
     69 fi
     70 
     71 echo -n "Using ldapwhoami with SASL/EXTERNAL...."
     72 $LDAPSASLWHOAMI -o tls_cacert=$TESTDIR/tls/ca/certs/testsuiteCA.crt -o tls_reqcert=hard \
     73 	-o tls_cert=$TESTDIR/tls/certs/bjensen@mailgw.example.com.crt -o tls_key=$TESTDIR/tls/private/bjensen@mailgw.example.com.key -ZZ -Y EXTERNAL -H $URIP1 \
     74 	> $TESTOUT 2>&1
     75 RC=$?
     76 if test $RC != 0 ; then
     77 	echo "ldapwhoami (startTLS) failed ($RC)!"
     78 	exit $RC
     79 else
     80 	echo "success"
     81 fi
     82 
     83 echo -n "Validating mapped SASL ID..."
     84 echo 'dn:cn=barbara jensen,ou=information technology division,ou=people,dc=example,dc=com' > $TESTDIR/dn.out
     85 $CMP $TESTDIR/dn.out $TESTOUT > $CMPOUT
     86 
     87 RC=$?
     88 if test $RC != 0 ; then
     89 	echo "Comparison failed"
     90 	test $KILLSERVERS != no && kill -HUP $PID
     91 	exit $RC
     92 else
     93 	echo "success"
     94 fi
     95 
     96 # Exercise channel-bindings code in builds without SASL support
     97 for cb in "none" "tls-unique" "tls-endpoint" ; do
     98 
     99 	echo -n "Using ldapwhoami with SASL/EXTERNAL and SASL_CBINDING (${cb})...."
    100 
    101 	$LDAPSASLWHOAMI -o tls_cacert=$TESTDIR/tls/ca/certs/testsuiteCA.crt     \
    102 	-o tls_cert=$TESTDIR/tls/certs/bjensen@mailgw.example.com.crt           \
    103 	-o tls_key=$TESTDIR/tls/private/bjensen@mailgw.example.com.key          \
    104 	-o tls_reqcert=hard -o SASL_CBINDING=$cb -ZZ -Y EXTERNAL -H $URIP1      \
    105 	> $TESTOUT 2>&1
    106 
    107 	RC=$?
    108 	if test $RC != 0 ; then
    109 		echo "ldapwhoami failed ($RC)!"
    110 		test $KILLSERVERS != no && kill -HUP $PID
    111 		exit $RC
    112 	else
    113 		echo "success"
    114 	fi
    115 done
    116 
    117 
    118 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    119 
    120 if test $RC != 0 ; then
    121 	echo ">>>>> Test failed"
    122 else
    123 	echo ">>>>> Test succeeded"
    124 	RC=0
    125 fi
    126 
    127 test $KILLSERVERS != no && wait
    128 
    129 exit $RC
    130