12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 162de962bdSlukemecho "Using $RELAY backend..." 172de962bdSlukemecho "" 182de962bdSlukem 192de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 202de962bdSlukemecho "======== Starting slapd with $RELAY backend ========" >> $LOG1 21*e670fd5cSchristos. $CONFFILTER $BACKEND < $RELAYCONF > $CONF1 22*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 & 232de962bdSlukemPID=$! 242de962bdSlukemif test $WAIT != 0 ; then 252de962bdSlukem echo PID $PID 262de962bdSlukem read foo 272de962bdSlukemfi 282de962bdSlukemKILLPIDS="$PID" 292de962bdSlukem 302de962bdSlukemsleep 1 312de962bdSlukem 322de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 332de962bdSlukemfor i in 0 1 2 3 4 5; do 34*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 352de962bdSlukem 'objectclass=*' > /dev/null 2>&1 362de962bdSlukem RC=$? 372de962bdSlukem if test $RC = 0 ; then 382de962bdSlukem break 392de962bdSlukem fi 402de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 412de962bdSlukem sleep 5 422de962bdSlukemdone 432de962bdSlukemif test $RC != 0 ; then 442de962bdSlukem echo "ldapsearch failed ($RC)!" 452de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 462de962bdSlukem exit $RC 472de962bdSlukemfi 482de962bdSlukem 492de962bdSlukemecho "Using ldapadd to populate the database..." 50*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 512de962bdSlukem $LDIFORDERED > $TESTOUT 2>&1 522de962bdSlukemRC=$? 532de962bdSlukemif test $RC != 0 ; then 542de962bdSlukem echo "ldapadd failed ($RC)!" 552de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 562de962bdSlukem exit $RC 572de962bdSlukemfi 582de962bdSlukem 592de962bdSlukemcat /dev/null > $SEARCHOUT 602de962bdSlukem 612de962bdSlukemBASEDN="dc=example,dc=com" 622de962bdSlukemecho "Searching base=\"$BASEDN\"..." 632de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 64*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 652de962bdSlukemRC=$? 662de962bdSlukemif test $RC != 0 ; then 672de962bdSlukem echo "Search failed ($RC)!" 682de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 692de962bdSlukem exit $RC 702de962bdSlukemfi 712de962bdSlukem 722de962bdSlukemBASEDN="o=Example,c=US" 732de962bdSlukemecho "Searching base=\"$BASEDN\"..." 742de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 75*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 762de962bdSlukemRC=$? 772de962bdSlukemif test $RC != 0 ; then 782de962bdSlukem echo "Search failed ($RC)!" 792de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 802de962bdSlukem exit $RC 812de962bdSlukemfi 822de962bdSlukem 832de962bdSlukemBASEDN="o=Esempio,c=IT" 842de962bdSlukemecho "Searching base=\"$BASEDN\"..." 852de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 86*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 872de962bdSlukemRC=$? 882de962bdSlukemif test $RC != 0 ; then 892de962bdSlukem echo "Search failed ($RC)!" 902de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 912de962bdSlukem exit $RC 922de962bdSlukemfi 932de962bdSlukem 942de962bdSlukemBASEDN="o=Beispiel,c=DE" 952de962bdSlukemecho "Searching base=\"$BASEDN\"..." 962de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 97*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 982de962bdSlukemRC=$? 992de962bdSlukemif test $RC != 0 ; then 1002de962bdSlukem echo "Search failed ($RC)!" 1012de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1022de962bdSlukem exit $RC 1032de962bdSlukemfi 1042de962bdSlukem 1052de962bdSlukem# 1062de962bdSlukem# Do some modifications 1072de962bdSlukem# 1082de962bdSlukem 1092de962bdSlukemBASEDN="o=Beispiel,c=DE" 1102de962bdSlukemecho "Modifying database \"$BASEDN\"..." 111*e670fd5cSchristos$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI1 -w $PASSWD \ 1122de962bdSlukem -M >> $TESTOUT 2>&1 << EOMODS 1132de962bdSlukemdn: cn=Added User,ou=Alumni Association,ou=People,$BASEDN 1142de962bdSlukemchangetype: add 1152de962bdSlukemobjectClass: OpenLDAPperson 1162de962bdSlukemcn: Added User 1172de962bdSlukemsn: User 1182de962bdSlukemuid: auser 1192de962bdSlukemseealso: cn=All Staff,ou=Groups,$BASEDN 1202de962bdSlukemhomephone: +49 1234567890 1212de962bdSlukemdrink: Beer 1222de962bdSlukemmail: auser@mail.alumni.example.com 1232de962bdSlukemtelephonenumber: +49 1234-567-890 1242de962bdSlukemdescription: Just added in o=Beispiel,c=DE naming context 1252de962bdSlukem 1262de962bdSlukemdn: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN 1272de962bdSlukemchangetype: modify 1282de962bdSlukemadd: seeAlso 1292de962bdSlukemseeAlso: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN 1302de962bdSlukem- 1312de962bdSlukemadd: description 1322de962bdSlukemdescription: Just added self to seeAlso in $BASEDN virtual naming context 1332de962bdSlukem- 1342de962bdSlukem 1352de962bdSlukemdn: cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN 1362de962bdSlukemchangetype: delete 1372de962bdSlukem 1382de962bdSlukemdn: cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN 1392de962bdSlukemchangetype: modrdn 1402de962bdSlukemnewrdn: cn=John P. Doe 1412de962bdSlukemdeleteoldrdn: 1 1422de962bdSlukem 1432de962bdSlukemdn: cn=Jane Doe,ou=Alumni Association,ou=People,$BASEDN 1442de962bdSlukemchangetype: modrdn 1452de962bdSlukemnewrdn: cn=Jane Q. Doe 1462de962bdSlukemdeleteoldrdn: 1 1472de962bdSlukemnewsuperior: ou=Information Technology Division,ou=People,$BASEDN 1482de962bdSlukem 1492de962bdSlukemdn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN 1502de962bdSlukemchangetype: modify 1512de962bdSlukemadd: cn 1522de962bdSlukemcn: Jane Qissapaolo Doe 1532de962bdSlukem- 1542de962bdSlukem# This operation (delete of DN-valued attribute) triggered ITS#3498 1552de962bdSlukemdelete: seeAlso 1562de962bdSlukem- 1572de962bdSlukem 1582de962bdSlukemdn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN 1592de962bdSlukemchangetype: modify 1602de962bdSlukemadd: seeAlso 1612de962bdSlukemseeAlso: cn=All Staff,ou=Groups,$BASEDN 1622de962bdSlukem- 1632de962bdSlukem 1642de962bdSlukemdn: ou=Referrals,$BASEDN 1652de962bdSlukemchangetype: add 1662de962bdSlukemobjectclass: referral 1672de962bdSlukemobjectclass: extensibleObject 1682de962bdSlukemou: Referrals 1692de962bdSlukemref: ldap://localhost.localdomain/ou=Referrals,$BASEDN 1702de962bdSlukemdescription: Just added as ldap://localhost.localdomain:389/ou=Referrals,$BASEDN 1712de962bdSlukem 1722de962bdSlukemdn: ou=Referrals,$BASEDN 1732de962bdSlukemchangetype: modify 1742de962bdSlukemreplace: ref 1752de962bdSlukemref: ldap://localhost:9012/ou=Referrals,$BASEDN 1762de962bdSlukem- 1772de962bdSlukemadd: description 1782de962bdSlukemdescription: ...and modified as ldap://localhost:9012/ou=Referrals,$BASEDN 1792de962bdSlukem- 1802de962bdSlukemEOMODS 1812de962bdSlukem 1822de962bdSlukemRC=$? 1832de962bdSlukemif test $RC != 0 ; then 1842de962bdSlukem echo "Modify failed ($RC)!" 1852de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1862de962bdSlukem exit $RC 1872de962bdSlukemfi 1882de962bdSlukem 1892de962bdSlukemBASEDN="o=Example,c=US" 1902de962bdSlukemecho "Modifying database \"$BASEDN\"..." 191*e670fd5cSchristos$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI1 -w $PASSWD \ 1922de962bdSlukem -M >> $TESTOUT 2>&1 << EOMODS 1932de962bdSlukem# These operations (updates with objectClass mapping) triggered ITS#3499 1942de962bdSlukemdn: cn=Added Group,ou=Groups,$BASEDN 1952de962bdSlukemchangetype: add 1962de962bdSlukemobjectClass: groupOfNames 1972de962bdSlukemobjectClass: uidObject 1982de962bdSlukemcn: Added Group 1992de962bdSlukemmember: cn=Added Group,ou=Groups,$BASEDN 2002de962bdSlukemuid: added 2012de962bdSlukem 2022de962bdSlukemdn: cn=Another Added Group,ou=Groups,$BASEDN 2032de962bdSlukemchangetype: add 2042de962bdSlukemobjectClass: groupOfNames 2052de962bdSlukemcn: Another Added Group 2062de962bdSlukemmember: cn=Added Group,ou=Groups,$BASEDN 2072de962bdSlukemmember: cn=Another Added Group,ou=Groups,$BASEDN 2082de962bdSlukem 2092de962bdSlukemdn: cn=Another Added Group,ou=Groups,$BASEDN 2102de962bdSlukemchangetype: modify 2112de962bdSlukemadd: objectClass 2122de962bdSlukemobjectClass: uidObject 2132de962bdSlukem- 2142de962bdSlukemadd: uid 2152de962bdSlukemuid: added 2162de962bdSlukem- 2172de962bdSlukem 2182de962bdSlukemdn: cn=Added Group,ou=Groups,$BASEDN 2192de962bdSlukemchangetype: modify 2202de962bdSlukemdelete: objectClass 2212de962bdSlukemobjectClass: uidObject 2222de962bdSlukem- 2232de962bdSlukemdelete: uid 2242de962bdSlukem- 2252de962bdSlukemEOMODS 2262de962bdSlukem 2272de962bdSlukemRC=$? 2282de962bdSlukemif test $RC != 0 ; then 2292de962bdSlukem echo "Modify failed ($RC)!" 2302de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2312de962bdSlukem exit $RC 2322de962bdSlukemfi 2332de962bdSlukem 2342de962bdSlukemecho "Searching base=\"$BASEDN\"..." 2352de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 236*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 2372de962bdSlukemRC=$? 2382de962bdSlukemif test $RC != 0 ; then 2392de962bdSlukem echo "Search failed ($RC)!" 2402de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2412de962bdSlukem exit $RC 2422de962bdSlukemfi 2432de962bdSlukem 2442de962bdSlukemBASEDN="o=Esempio,c=IT" 2452de962bdSlukemecho "Searching base=\"$BASEDN\"..." 2462de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 247*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 2482de962bdSlukemRC=$? 2492de962bdSlukemif test $RC != 0 ; then 2502de962bdSlukem echo "Search failed ($RC)!" 2512de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2522de962bdSlukem exit $RC 2532de962bdSlukemfi 2542de962bdSlukem 2552de962bdSlukemFILTER="(objectClass=referral)" 2562de962bdSlukemecho "Searching filter=\"$FILTER\"" 2572de962bdSlukemecho " attrs=\"'*' ref\"" 2582de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT 2592de962bdSlukemecho "# attrs=\"'*' ref\"" >> $SEARCHOUT 2602de962bdSlukem 2612de962bdSlukemBASEDN="dc=example,dc=com" 2622de962bdSlukemecho " base=\"$BASEDN\"..." 2632de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 264*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 2652de962bdSlukem >> $SEARCHOUT 2>&1 2662de962bdSlukemRC=$? 2672de962bdSlukemif test $RC != 0 ; then 2682de962bdSlukem echo "Search failed ($RC)!" 2692de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2702de962bdSlukem exit $RC 2712de962bdSlukemfi 2722de962bdSlukem 2732de962bdSlukemBASEDN="o=Example,c=US" 2742de962bdSlukemecho " base=\"$BASEDN\"..." 2752de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 276*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 2772de962bdSlukem >> $SEARCHOUT 2>&1 2782de962bdSlukemRC=$? 2792de962bdSlukemif test $RC != 0 ; then 2802de962bdSlukem echo "Search failed ($RC)!" 2812de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2822de962bdSlukem exit $RC 2832de962bdSlukemfi 2842de962bdSlukem 2852de962bdSlukemBASEDN="o=Esempio,c=IT" 2862de962bdSlukemecho " base=\"$BASEDN\"..." 2872de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 288*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 2892de962bdSlukem >> $SEARCHOUT 2>&1 2902de962bdSlukemRC=$? 2912de962bdSlukemif test $RC != 0 ; then 2922de962bdSlukem echo "Search failed ($RC)!" 2932de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2942de962bdSlukem exit $RC 2952de962bdSlukemfi 2962de962bdSlukem 2972de962bdSlukemBASEDN="o=Example,c=US" 2982de962bdSlukemFILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)" 2992de962bdSlukemecho "Searching filter=\"$FILTER\"" 3002de962bdSlukemecho " attrs=\"seeAlso\"" 3012de962bdSlukemecho " base=\"$BASEDN\"..." 3022de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT 3032de962bdSlukemecho "# attrs=\"seeAlso\"" >> $SEARCHOUT 3042de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 305*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" seeAlso \ 3062de962bdSlukem >> $SEARCHOUT 2>&1 3072de962bdSlukemRC=$? 3082de962bdSlukemif test $RC != 0 ; then 3092de962bdSlukem echo "Search failed ($RC)!" 3102de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3112de962bdSlukem exit $RC 3122de962bdSlukemfi 3132de962bdSlukem 3142de962bdSlukemFILTER="(uid=example)" 3152de962bdSlukemecho "Searching filter=\"$FILTER\"" 3162de962bdSlukemecho " attrs=\"uid\"" 3172de962bdSlukemecho " base=\"$BASEDN\"..." 3182de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT 3192de962bdSlukemecho "# attrs=\"uid\"" >> $SEARCHOUT 3202de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 321*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" uid \ 3222de962bdSlukem >> $SEARCHOUT 2>&1 3232de962bdSlukemRC=$? 3242de962bdSlukemif test $RC != 0 ; then 3252de962bdSlukem echo "Search failed ($RC)!" 3262de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3272de962bdSlukem exit $RC 3282de962bdSlukemfi 3292de962bdSlukem 3302de962bdSlukemFILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)" 3312de962bdSlukemecho "Searching filter=\"$FILTER\"" 3322de962bdSlukemecho " attrs=\"member\"" 3332de962bdSlukemecho " base=\"$BASEDN\"..." 3342de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT 3352de962bdSlukemecho "# attrs=\"member\"" >> $SEARCHOUT 3362de962bdSlukemecho "# base=\"$BASEDN\"..." >> $SEARCHOUT 337*e670fd5cSchristos$LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" member \ 3382de962bdSlukem >> $SEARCHOUT 2>&1 3392de962bdSlukemRC=$? 3402de962bdSlukemif test $RC != 0 ; then 3412de962bdSlukem echo "Search failed ($RC)!" 3422de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3432de962bdSlukem exit $RC 3442de962bdSlukemfi 3452de962bdSlukem 3462de962bdSlukemecho "Filtering ldapsearch results..." 347ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 3482de962bdSlukemecho "Filtering original ldif used to create database..." 349ef2f90d3Sadam$LDIFFILTER < $RELAYOUT > $LDIFFLT 3502de962bdSlukemecho "Comparing filter output..." 3512de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 3522de962bdSlukem 3532de962bdSlukemif test $? != 0 ; then 3542de962bdSlukem echo "comparison failed - relay search/modification didn't succeed" 3552de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3562de962bdSlukem exit 1 3572de962bdSlukemfi 3582de962bdSlukem 3592de962bdSlukemBASEDN="o=Example,c=US" 3602de962bdSlukemecho "Changing password to database \"$BASEDN\"..." 361*e670fd5cSchristos$LDAPPASSWD -H $URI1 -D "cn=Manager,$BASEDN" -w $PASSWD \ 3622de962bdSlukem -s $PASSWD "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 3632de962bdSlukem >> $TESTOUT 2>&1 3642de962bdSlukemRC=$? 3652de962bdSlukemif test $RC != 0 ; then 3662de962bdSlukem echo "Passwd ExOp failed ($RC)!" 3672de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3682de962bdSlukem exit $RC 3692de962bdSlukemfi 3702de962bdSlukem 3712de962bdSlukemBASEDN="o=Beispiel,c=DE" 3722de962bdSlukemecho "Binding with newly changed password to database \"$BASEDN\"..." 373*e670fd5cSchristos$LDAPWHOAMI -H $URI1 \ 3742de962bdSlukem -D "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 3752de962bdSlukem -w $PASSWD >> $TESTOUT 2>&1 3762de962bdSlukemRC=$? 3772de962bdSlukemif test $RC != 0 ; then 3782de962bdSlukem echo "WhoAmI failed ($RC)!" 3792de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3802de962bdSlukem exit $RC 3812de962bdSlukemfi 3822de962bdSlukem 3832de962bdSlukemBASEDN="o=Esempio,c=IT" 3842de962bdSlukemecho "Comparing to database \"$BASEDN\"..." 385*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \ 3862de962bdSlukem "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 3872de962bdSlukem "seeAlso:cn=All Staff,ou=Groups,$BASEDN" >> $TESTOUT 2>&1 3882de962bdSlukemRC=$? 389ef2f90d3Sadamif test $RC != 6 && test $RC,$BACKEND != 5,null ; then 3902de962bdSlukem echo "Compare failed ($RC)!" 3912de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 392ef2f90d3Sadam exit 1 3932de962bdSlukemfi 3942de962bdSlukem 3952de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 396