1 1.1 christos #!/bin/sh 2 1.1 christos # $OpenLDAP$ 3 1.1 christos ## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4 1.1 christos ## 5 1.1.1.2 christos ## Copyright 2021-2024 The OpenLDAP Foundation. 6 1.1 christos ## All rights reserved. 7 1.1 christos ## 8 1.1 christos ## Redistribution and use in source and binary forms, with or without 9 1.1 christos ## modification, are permitted only as authorized by the OpenLDAP 10 1.1 christos ## Public License. 11 1.1 christos ## 12 1.1 christos ## A copy of this license is available in the file LICENSE in the 13 1.1 christos ## top-level directory of the distribution or, alternatively, at 14 1.1 christos ## <http://www.OpenLDAP.org/license.html>. 15 1.1 christos 16 1.1 christos echo "running defines.sh" 17 1.1 christos . $SRCDIR/scripts/defines.sh 18 1.1 christos 19 1.1 christos if test $ARGON2 = argon2no; then 20 1.1 christos echo "argon2 overlay not available, test skipped" 21 1.1 christos exit 0 22 1.1 christos fi 23 1.1 christos 24 1.1 christos USERDN="cn=argon2,$BASEDN" 25 1.1 christos 26 1.1 christos CONFDIR=$TESTDIR/slapd.d 27 1.1 christos mkdir -p $TESTDIR $CONFDIR $DBDIR1 28 1.1 christos 29 1.1 christos $SLAPPASSWD -g -n >$CONFIGPWF 30 1.1 christos 31 1.1 christos cat > $TESTDIR/config.ldif <<EOF 32 1.1 christos dn: cn=config 33 1.1 christos objectClass: olcGlobal 34 1.1 christos cn: config 35 1.1 christos olcArgsFile: $TESTDIR/slapd.args 36 1.1 christos olcPidFile: $TESTDIR/slapd.pid 37 1.1 christos 38 1.1 christos dn: cn=schema,cn=config 39 1.1 christos objectClass: olcSchemaConfig 40 1.1 christos cn: schema 41 1.1 christos 42 1.1 christos include: file://$TESTWD/schema/core.ldif 43 1.1 christos include: file://$TESTWD/schema/cosine.ldif 44 1.1 christos include: file://$TESTWD/schema/inetorgperson.ldif 45 1.1 christos EOF 46 1.1 christos 47 1.1 christos if [ "$BACKENDTYPE" = mod ]; then 48 1.1 christos cat >> $TESTDIR/config.ldif <<EOF 49 1.1 christos 50 1.1 christos dn: cn=module,cn=config 51 1.1 christos objectClass: olcModuleList 52 1.1 christos cn: module 53 1.1 christos olcModulePath: $TESTWD/../servers/slapd/back-$BACKEND 54 1.1 christos olcModuleLoad: back_$BACKEND.la 55 1.1 christos EOF 56 1.1 christos fi 57 1.1 christos 58 1.1 christos if [ "$ARGON2" = argon2yes ]; then 59 1.1 christos cat >> $TESTDIR/config.ldif <<EOF 60 1.1 christos 61 1.1 christos dn: cn=module,cn=config 62 1.1 christos objectClass: olcModuleList 63 1.1 christos cn: module 64 1.1 christos olcModulePath: $TESTWD/../servers/slapd/pwmods 65 1.1 christos olcModuleLoad: argon2.la 66 1.1 christos EOF 67 1.1 christos fi 68 1.1 christos 69 1.1 christos cat >> $TESTDIR/config.ldif <<EOF 70 1.1 christos 71 1.1 christos dn: olcDatabase={-1}frontend,cn=config 72 1.1 christos objectClass: olcDatabaseConfig 73 1.1 christos objectClass: olcFrontendConfig 74 1.1 christos olcDatabase: {-1}frontend 75 1.1 christos olcPasswordHash: {ARGON2} 76 1.1 christos 77 1.1 christos dn: olcDatabase=config,cn=config 78 1.1 christos objectClass: olcDatabaseConfig 79 1.1 christos olcDatabase: config 80 1.1 christos olcRootPW:< file://$CONFIGPWF 81 1.1 christos 82 1.1 christos dn: olcDatabase={1}$BACKEND,cn=config 83 1.1 christos objectClass: olcDatabaseConfig 84 1.1 christos objectClass: olc${BACKEND}Config 85 1.1 christos olcDatabase: $BACKEND 86 1.1 christos olcSuffix: $BASEDN 87 1.1 christos olcRootDN: $MANAGERDN 88 1.1 christos olcRootPW: $PASSWD 89 1.1 christos olcDbDirectory: $TESTDIR/db.1.a 90 1.1 christos EOF 91 1.1 christos 92 1.1 christos if [ "$INDEXDB" = indexdb ]; then 93 1.1 christos cat >> $TESTDIR/config.ldif <<EOF 94 1.1 christos olcDbIndex: objectClass eq,pres 95 1.1 christos olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub 96 1.1 christos EOF 97 1.1 christos fi 98 1.1 christos 99 1.1 christos $SLAPADD -F $CONFDIR -n 0 -l $TESTDIR/config.ldif 100 1.1.1.2 christos RC=$? 101 1.1.1.2 christos if test $RC != 0 ; then 102 1.1.1.2 christos echo "slapadd failed ($RC)!" 103 1.1.1.2 christos exit $RC 104 1.1.1.2 christos fi 105 1.1 christos 106 1.1 christos echo "Starting slapd on TCP/IP port $PORT1..." 107 1.1 christos $SLAPD -F $CONFDIR -h $URI1 -d $LVL > $LOG1 2>&1 & 108 1.1 christos PID=$! 109 1.1 christos if test $WAIT != 0 ; then 110 1.1 christos echo PID $PID 111 1.1 christos read foo 112 1.1 christos fi 113 1.1 christos KILLPIDS="$PID" 114 1.1 christos sleep 1 115 1.1 christos 116 1.1 christos echo "Using ldapsearch to check that slapd is running..." 117 1.1 christos for i in 0 1 2 3 4 5; do 118 1.1 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 119 1.1 christos 'objectclass=*' > /dev/null 2>&1 120 1.1 christos RC=$? 121 1.1 christos if test $RC = 0 ; then 122 1.1 christos break 123 1.1 christos fi 124 1.1 christos echo "Waiting 5 seconds for slapd to start..." 125 1.1 christos sleep 5 126 1.1 christos done 127 1.1 christos if test $RC != 0 ; then 128 1.1 christos echo "ldapsearch failed ($RC)!" 129 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS 130 1.1 christos exit $RC 131 1.1 christos fi 132 1.1 christos 133 1.1 christos echo "Adding basic structure..." 134 1.1 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFPASSWD >/dev/null 2>&1 135 1.1 christos RC=$? 136 1.1 christos if test $RC != 0 ; then 137 1.1 christos echo "ldapadd failed ($RC)!" 138 1.1 christos test $KILLSERVERS != no && kill -HUP $PID 139 1.1 christos exit $RC 140 1.1 christos fi 141 1.1 christos 142 1.1 christos BINDPW=secret 143 1.1 christos echo "Testing ldapwhoami as ${USERDN}..." 144 1.1 christos $LDAPWHOAMI -H $URI1 -D "$USERDN" -w $BINDPW 145 1.1 christos 146 1.1 christos RC=$? 147 1.1 christos if test $RC != 0 ; then 148 1.1 christos echo "ldapwhoami failed ($RC)!" 149 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS 150 1.1 christos exit $RC 151 1.1 christos fi 152 1.1 christos 153 1.1 christos test $KILLSERVERS != no && kill -HUP $PID 154 1.1 christos 155 1.1 christos echo ">>>>> Test succeeded" 156 1.1 christos 157 1.1 christos test $KILLSERVERS != no && wait 158 1.1 christos 159 1.1 christos exit 0 160