1 1.1 lukem #! /bin/sh 2 1.1.1.4 tron # $OpenLDAP$ 3 1.1 lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4 1.1 lukem ## 5 1.1.1.10 christos ## Copyright 1998-2024 The OpenLDAP Foundation. 6 1.1 lukem ## All rights reserved. 7 1.1 lukem ## 8 1.1 lukem ## Redistribution and use in source and binary forms, with or without 9 1.1 lukem ## modification, are permitted only as authorized by the OpenLDAP 10 1.1 lukem ## Public License. 11 1.1 lukem ## 12 1.1 lukem ## A copy of this license is available in the file LICENSE in the 13 1.1 lukem ## top-level directory of the distribution or, alternatively, at 14 1.1 lukem ## <http://www.OpenLDAP.org/license.html>. 15 1.1 lukem 16 1.1 lukem echo "Using $RELAY backend..." 17 1.1 lukem echo "" 18 1.1 lukem 19 1.1 lukem echo "Starting slapd on TCP/IP port $PORT1..." 20 1.1 lukem echo "======== Starting slapd with $RELAY backend ========" >> $LOG1 21 1.1.1.9 christos . $CONFFILTER $BACKEND < $RELAYCONF > $CONF1 22 1.1.1.9 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 & 23 1.1 lukem PID=$! 24 1.1 lukem if test $WAIT != 0 ; then 25 1.1 lukem echo PID $PID 26 1.1 lukem read foo 27 1.1 lukem fi 28 1.1 lukem KILLPIDS="$PID" 29 1.1 lukem 30 1.1 lukem sleep 1 31 1.1 lukem 32 1.1 lukem echo "Using ldapsearch to check that slapd is running..." 33 1.1 lukem for i in 0 1 2 3 4 5; do 34 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 35 1.1 lukem 'objectclass=*' > /dev/null 2>&1 36 1.1 lukem RC=$? 37 1.1 lukem if test $RC = 0 ; then 38 1.1 lukem break 39 1.1 lukem fi 40 1.1 lukem echo "Waiting 5 seconds for slapd to start..." 41 1.1 lukem sleep 5 42 1.1 lukem done 43 1.1 lukem if test $RC != 0 ; then 44 1.1 lukem echo "ldapsearch failed ($RC)!" 45 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 46 1.1 lukem exit $RC 47 1.1 lukem fi 48 1.1 lukem 49 1.1 lukem echo "Using ldapadd to populate the database..." 50 1.1.1.9 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 51 1.1 lukem $LDIFORDERED > $TESTOUT 2>&1 52 1.1 lukem RC=$? 53 1.1 lukem if test $RC != 0 ; then 54 1.1 lukem echo "ldapadd failed ($RC)!" 55 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 56 1.1 lukem exit $RC 57 1.1 lukem fi 58 1.1 lukem 59 1.1 lukem cat /dev/null > $SEARCHOUT 60 1.1 lukem 61 1.1 lukem BASEDN="dc=example,dc=com" 62 1.1 lukem echo "Searching base=\"$BASEDN\"..." 63 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 64 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 65 1.1 lukem RC=$? 66 1.1 lukem if test $RC != 0 ; then 67 1.1 lukem echo "Search failed ($RC)!" 68 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 69 1.1 lukem exit $RC 70 1.1 lukem fi 71 1.1 lukem 72 1.1 lukem BASEDN="o=Example,c=US" 73 1.1 lukem echo "Searching base=\"$BASEDN\"..." 74 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 75 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 76 1.1 lukem RC=$? 77 1.1 lukem if test $RC != 0 ; then 78 1.1 lukem echo "Search failed ($RC)!" 79 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 80 1.1 lukem exit $RC 81 1.1 lukem fi 82 1.1 lukem 83 1.1 lukem BASEDN="o=Esempio,c=IT" 84 1.1 lukem echo "Searching base=\"$BASEDN\"..." 85 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 86 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 87 1.1 lukem RC=$? 88 1.1 lukem if test $RC != 0 ; then 89 1.1 lukem echo "Search failed ($RC)!" 90 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 91 1.1 lukem exit $RC 92 1.1 lukem fi 93 1.1 lukem 94 1.1 lukem BASEDN="o=Beispiel,c=DE" 95 1.1 lukem echo "Searching base=\"$BASEDN\"..." 96 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 97 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 98 1.1 lukem RC=$? 99 1.1 lukem if test $RC != 0 ; then 100 1.1 lukem echo "Search failed ($RC)!" 101 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 102 1.1 lukem exit $RC 103 1.1 lukem fi 104 1.1 lukem 105 1.1 lukem # 106 1.1 lukem # Do some modifications 107 1.1 lukem # 108 1.1 lukem 109 1.1 lukem BASEDN="o=Beispiel,c=DE" 110 1.1 lukem echo "Modifying database \"$BASEDN\"..." 111 1.1.1.9 christos $LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI1 -w $PASSWD \ 112 1.1 lukem -M >> $TESTOUT 2>&1 << EOMODS 113 1.1 lukem dn: cn=Added User,ou=Alumni Association,ou=People,$BASEDN 114 1.1 lukem changetype: add 115 1.1 lukem objectClass: OpenLDAPperson 116 1.1 lukem cn: Added User 117 1.1 lukem sn: User 118 1.1 lukem uid: auser 119 1.1 lukem seealso: cn=All Staff,ou=Groups,$BASEDN 120 1.1 lukem homephone: +49 1234567890 121 1.1 lukem drink: Beer 122 1.1 lukem mail: auser@mail.alumni.example.com 123 1.1 lukem telephonenumber: +49 1234-567-890 124 1.1 lukem description: Just added in o=Beispiel,c=DE naming context 125 1.1 lukem 126 1.1 lukem dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN 127 1.1 lukem changetype: modify 128 1.1 lukem add: seeAlso 129 1.1 lukem seeAlso: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN 130 1.1 lukem - 131 1.1 lukem add: description 132 1.1 lukem description: Just added self to seeAlso in $BASEDN virtual naming context 133 1.1 lukem - 134 1.1 lukem 135 1.1 lukem dn: cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN 136 1.1 lukem changetype: delete 137 1.1 lukem 138 1.1 lukem dn: cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN 139 1.1 lukem changetype: modrdn 140 1.1 lukem newrdn: cn=John P. Doe 141 1.1 lukem deleteoldrdn: 1 142 1.1 lukem 143 1.1 lukem dn: cn=Jane Doe,ou=Alumni Association,ou=People,$BASEDN 144 1.1 lukem changetype: modrdn 145 1.1 lukem newrdn: cn=Jane Q. Doe 146 1.1 lukem deleteoldrdn: 1 147 1.1 lukem newsuperior: ou=Information Technology Division,ou=People,$BASEDN 148 1.1 lukem 149 1.1 lukem dn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN 150 1.1 lukem changetype: modify 151 1.1 lukem add: cn 152 1.1 lukem cn: Jane Qissapaolo Doe 153 1.1 lukem - 154 1.1 lukem # This operation (delete of DN-valued attribute) triggered ITS#3498 155 1.1 lukem delete: seeAlso 156 1.1 lukem - 157 1.1 lukem 158 1.1 lukem dn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN 159 1.1 lukem changetype: modify 160 1.1 lukem add: seeAlso 161 1.1 lukem seeAlso: cn=All Staff,ou=Groups,$BASEDN 162 1.1 lukem - 163 1.1 lukem 164 1.1 lukem dn: ou=Referrals,$BASEDN 165 1.1 lukem changetype: add 166 1.1 lukem objectclass: referral 167 1.1 lukem objectclass: extensibleObject 168 1.1 lukem ou: Referrals 169 1.1 lukem ref: ldap://localhost.localdomain/ou=Referrals,$BASEDN 170 1.1 lukem description: Just added as ldap://localhost.localdomain:389/ou=Referrals,$BASEDN 171 1.1 lukem 172 1.1 lukem dn: ou=Referrals,$BASEDN 173 1.1 lukem changetype: modify 174 1.1 lukem replace: ref 175 1.1 lukem ref: ldap://localhost:9012/ou=Referrals,$BASEDN 176 1.1 lukem - 177 1.1 lukem add: description 178 1.1 lukem description: ...and modified as ldap://localhost:9012/ou=Referrals,$BASEDN 179 1.1 lukem - 180 1.1 lukem EOMODS 181 1.1 lukem 182 1.1 lukem RC=$? 183 1.1 lukem if test $RC != 0 ; then 184 1.1 lukem echo "Modify failed ($RC)!" 185 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 186 1.1 lukem exit $RC 187 1.1 lukem fi 188 1.1 lukem 189 1.1 lukem BASEDN="o=Example,c=US" 190 1.1 lukem echo "Modifying database \"$BASEDN\"..." 191 1.1.1.9 christos $LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI1 -w $PASSWD \ 192 1.1 lukem -M >> $TESTOUT 2>&1 << EOMODS 193 1.1 lukem # These operations (updates with objectClass mapping) triggered ITS#3499 194 1.1 lukem dn: cn=Added Group,ou=Groups,$BASEDN 195 1.1 lukem changetype: add 196 1.1 lukem objectClass: groupOfNames 197 1.1 lukem objectClass: uidObject 198 1.1 lukem cn: Added Group 199 1.1 lukem member: cn=Added Group,ou=Groups,$BASEDN 200 1.1 lukem uid: added 201 1.1 lukem 202 1.1 lukem dn: cn=Another Added Group,ou=Groups,$BASEDN 203 1.1 lukem changetype: add 204 1.1 lukem objectClass: groupOfNames 205 1.1 lukem cn: Another Added Group 206 1.1 lukem member: cn=Added Group,ou=Groups,$BASEDN 207 1.1 lukem member: cn=Another Added Group,ou=Groups,$BASEDN 208 1.1 lukem 209 1.1 lukem dn: cn=Another Added Group,ou=Groups,$BASEDN 210 1.1 lukem changetype: modify 211 1.1 lukem add: objectClass 212 1.1 lukem objectClass: uidObject 213 1.1 lukem - 214 1.1 lukem add: uid 215 1.1 lukem uid: added 216 1.1 lukem - 217 1.1 lukem 218 1.1 lukem dn: cn=Added Group,ou=Groups,$BASEDN 219 1.1 lukem changetype: modify 220 1.1 lukem delete: objectClass 221 1.1 lukem objectClass: uidObject 222 1.1 lukem - 223 1.1 lukem delete: uid 224 1.1 lukem - 225 1.1 lukem EOMODS 226 1.1 lukem 227 1.1 lukem RC=$? 228 1.1 lukem if test $RC != 0 ; then 229 1.1 lukem echo "Modify failed ($RC)!" 230 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 231 1.1 lukem exit $RC 232 1.1 lukem fi 233 1.1 lukem 234 1.1 lukem echo "Searching base=\"$BASEDN\"..." 235 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 236 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 237 1.1 lukem RC=$? 238 1.1 lukem if test $RC != 0 ; then 239 1.1 lukem echo "Search failed ($RC)!" 240 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 241 1.1 lukem exit $RC 242 1.1 lukem fi 243 1.1 lukem 244 1.1 lukem BASEDN="o=Esempio,c=IT" 245 1.1 lukem echo "Searching base=\"$BASEDN\"..." 246 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT 247 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" >> $SEARCHOUT 2>&1 248 1.1 lukem RC=$? 249 1.1 lukem if test $RC != 0 ; then 250 1.1 lukem echo "Search failed ($RC)!" 251 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 252 1.1 lukem exit $RC 253 1.1 lukem fi 254 1.1 lukem 255 1.1 lukem FILTER="(objectClass=referral)" 256 1.1 lukem echo "Searching filter=\"$FILTER\"" 257 1.1 lukem echo " attrs=\"'*' ref\"" 258 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT 259 1.1 lukem echo "# attrs=\"'*' ref\"" >> $SEARCHOUT 260 1.1 lukem 261 1.1 lukem BASEDN="dc=example,dc=com" 262 1.1 lukem echo " base=\"$BASEDN\"..." 263 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 264 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 265 1.1 lukem >> $SEARCHOUT 2>&1 266 1.1 lukem RC=$? 267 1.1 lukem if test $RC != 0 ; then 268 1.1 lukem echo "Search failed ($RC)!" 269 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 270 1.1 lukem exit $RC 271 1.1 lukem fi 272 1.1 lukem 273 1.1 lukem BASEDN="o=Example,c=US" 274 1.1 lukem echo " base=\"$BASEDN\"..." 275 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 276 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 277 1.1 lukem >> $SEARCHOUT 2>&1 278 1.1 lukem RC=$? 279 1.1 lukem if test $RC != 0 ; then 280 1.1 lukem echo "Search failed ($RC)!" 281 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 282 1.1 lukem exit $RC 283 1.1 lukem fi 284 1.1 lukem 285 1.1 lukem BASEDN="o=Esempio,c=IT" 286 1.1 lukem echo " base=\"$BASEDN\"..." 287 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 288 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" -M "$FILTER" '*' ref \ 289 1.1 lukem >> $SEARCHOUT 2>&1 290 1.1 lukem RC=$? 291 1.1 lukem if test $RC != 0 ; then 292 1.1 lukem echo "Search failed ($RC)!" 293 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 294 1.1 lukem exit $RC 295 1.1 lukem fi 296 1.1 lukem 297 1.1 lukem BASEDN="o=Example,c=US" 298 1.1 lukem FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)" 299 1.1 lukem echo "Searching filter=\"$FILTER\"" 300 1.1 lukem echo " attrs=\"seeAlso\"" 301 1.1 lukem echo " base=\"$BASEDN\"..." 302 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT 303 1.1 lukem echo "# attrs=\"seeAlso\"" >> $SEARCHOUT 304 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 305 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" seeAlso \ 306 1.1 lukem >> $SEARCHOUT 2>&1 307 1.1 lukem RC=$? 308 1.1 lukem if test $RC != 0 ; then 309 1.1 lukem echo "Search failed ($RC)!" 310 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 311 1.1 lukem exit $RC 312 1.1 lukem fi 313 1.1 lukem 314 1.1 lukem FILTER="(uid=example)" 315 1.1 lukem echo "Searching filter=\"$FILTER\"" 316 1.1 lukem echo " attrs=\"uid\"" 317 1.1 lukem echo " base=\"$BASEDN\"..." 318 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT 319 1.1 lukem echo "# attrs=\"uid\"" >> $SEARCHOUT 320 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 321 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" uid \ 322 1.1 lukem >> $SEARCHOUT 2>&1 323 1.1 lukem RC=$? 324 1.1 lukem if test $RC != 0 ; then 325 1.1 lukem echo "Search failed ($RC)!" 326 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 327 1.1 lukem exit $RC 328 1.1 lukem fi 329 1.1 lukem 330 1.1 lukem FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)" 331 1.1 lukem echo "Searching filter=\"$FILTER\"" 332 1.1 lukem echo " attrs=\"member\"" 333 1.1 lukem echo " base=\"$BASEDN\"..." 334 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT 335 1.1 lukem echo "# attrs=\"member\"" >> $SEARCHOUT 336 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT 337 1.1.1.9 christos $LDAPSEARCH -S '' -H $URI1 -b "$BASEDN" "$FILTER" member \ 338 1.1 lukem >> $SEARCHOUT 2>&1 339 1.1 lukem RC=$? 340 1.1 lukem if test $RC != 0 ; then 341 1.1 lukem echo "Search failed ($RC)!" 342 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 343 1.1 lukem exit $RC 344 1.1 lukem fi 345 1.1 lukem 346 1.1 lukem echo "Filtering ldapsearch results..." 347 1.1.1.3 adam $LDIFFILTER < $SEARCHOUT > $SEARCHFLT 348 1.1 lukem echo "Filtering original ldif used to create database..." 349 1.1.1.3 adam $LDIFFILTER < $RELAYOUT > $LDIFFLT 350 1.1 lukem echo "Comparing filter output..." 351 1.1 lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT 352 1.1 lukem 353 1.1 lukem if test $? != 0 ; then 354 1.1 lukem echo "comparison failed - relay search/modification didn't succeed" 355 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 356 1.1 lukem exit 1 357 1.1 lukem fi 358 1.1 lukem 359 1.1 lukem BASEDN="o=Example,c=US" 360 1.1 lukem echo "Changing password to database \"$BASEDN\"..." 361 1.1.1.9 christos $LDAPPASSWD -H $URI1 -D "cn=Manager,$BASEDN" -w $PASSWD \ 362 1.1 lukem -s $PASSWD "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 363 1.1 lukem >> $TESTOUT 2>&1 364 1.1 lukem RC=$? 365 1.1 lukem if test $RC != 0 ; then 366 1.1 lukem echo "Passwd ExOp failed ($RC)!" 367 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 368 1.1 lukem exit $RC 369 1.1 lukem fi 370 1.1 lukem 371 1.1 lukem BASEDN="o=Beispiel,c=DE" 372 1.1 lukem echo "Binding with newly changed password to database \"$BASEDN\"..." 373 1.1.1.9 christos $LDAPWHOAMI -H $URI1 \ 374 1.1 lukem -D "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 375 1.1 lukem -w $PASSWD >> $TESTOUT 2>&1 376 1.1 lukem RC=$? 377 1.1 lukem if test $RC != 0 ; then 378 1.1 lukem echo "WhoAmI failed ($RC)!" 379 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 380 1.1 lukem exit $RC 381 1.1 lukem fi 382 1.1 lukem 383 1.1 lukem BASEDN="o=Esempio,c=IT" 384 1.1 lukem echo "Comparing to database \"$BASEDN\"..." 385 1.1.1.9 christos $LDAPCOMPARE -H $URI1 \ 386 1.1 lukem "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \ 387 1.1 lukem "seeAlso:cn=All Staff,ou=Groups,$BASEDN" >> $TESTOUT 2>&1 388 1.1 lukem RC=$? 389 1.1.1.3 adam if test $RC != 6 && test $RC,$BACKEND != 5,null ; then 390 1.1 lukem echo "Compare failed ($RC)!" 391 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 392 1.1.1.3 adam exit 1 393 1.1 lukem fi 394 1.1 lukem 395 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 396