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 $NESTGROUP = nestgroupno; then 20 echo "Nestgroup overlay not available, test skipped" 21 exit 0 22 fi 23 if test $MEMBEROF = memberofno; then 24 echo "Memberof overlay not available, memberof testing disabled" 25 fi 26 27 mkdir -p $TESTDIR $DBDIR1 $TESTDIR/confdir 28 29 $SLAPPASSWD -g -n >$CONFIGPWF 30 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf 31 32 echo "Starting slapd on TCP/IP port $PORT1..." 33 . $CONFFILTER $BACKEND < $NAKEDCONF > $CONF1 34 $SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL > $LOG1 2>&1 & 35 PID=$! 36 if test $WAIT != 0 ; then 37 echo PID $PID 38 read foo 39 fi 40 KILLPIDS="$PID" 41 42 sleep 1 43 for i in 0 1 2 3 4 5; do 44 $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 45 'objectclass=*' > /dev/null 2>&1 46 RC=$? 47 if test $RC = 0 ; then 48 break 49 fi 50 echo "Waiting 5 seconds for slapd to start..." 51 sleep 5 52 done 53 if test $RC != 0 ; then 54 echo "ldapsearch failed ($RC)!" 55 test $KILLSERVERS != no && kill -HUP $KILLPIDS 56 exit $RC 57 fi 58 59 cat /dev/null > $TESTOUT 60 61 if [ "$NESTGROUP" = nestgroupmod ]; then 62 echo "Inserting nestgroup overlay on provider..." 63 $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1 64 dn: cn=module,cn=config 65 objectClass: olcModuleList 66 cn: module 67 olcModulePath: ../servers/slapd/overlays 68 olcModuleLoad: nestgroup.la 69 EOF 70 RC=$? 71 if test $RC != 0 ; then 72 echo "ldapadd failed for moduleLoad ($RC)!" 73 test $KILLSERVERS != no && kill -HUP $KILLPIDS 74 exit $RC 75 fi 76 fi 77 78 indexInclude="" mainInclude="" nullExclude="" 79 test $INDEXDB = indexdb || indexInclude="# " 80 test $MAINDB = maindb || mainInclude="# " 81 case $BACKEND in 82 null) nullExclude="# " ;; 83 esac 84 85 echo "Running ldapadd to build slapd config database..." 86 $LDAPADD -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 87 >> $TESTOUT 2>&1 <<EOF 88 dn: olcDatabase={1}$BACKEND,cn=config 89 objectClass: olcDatabaseConfig 90 ${nullExclude}objectClass: olc${BACKEND}Config 91 olcDatabase: {1}$BACKEND 92 olcSuffix: $BASEDN 93 olcRootDN: cn=Manager,$BASEDN 94 olcRootPW:: c2VjcmV0 95 olcMonitoring: TRUE 96 ${nullExclude}olcDbDirectory: $TESTDIR/db.1.a/ 97 ${indexInclude}olcDbIndex: objectClass eq 98 ${indexInclude}olcDbIndex: cn pres,eq,sub 99 ${indexInclude}olcDbIndex: uid pres,eq,sub 100 ${indexInclude}olcDbIndex: sn pres,eq,sub 101 ${indexInclude}olcDbIndex: member,memberOf eq 102 ${mainInclude}olcDbMode: 384" 103 104 dn: olcOverlay={0}nestgroup,olcDatabase={1}$BACKEND,cn=config 105 objectClass: olcOverlayConfig 106 objectClass: olcNestGroupConfig 107 olcOverlay: {0}nestgroup 108 olcNestgroupMember: member 109 olcNestgroupMemberOf: memberOf 110 olcNestgroupBase: ou=Groups,$BASEDN 111 112 EOF 113 RC=$? 114 if test $RC != 0 ; then 115 echo "ldapadd failed ($RC)!" 116 test $KILLSERVERS != no && kill -HUP $KILLPIDS 117 exit $RC 118 fi 119 120 echo "Running ldapadd to build slapd database..." 121 $LDAPADD -H $URI1 \ 122 -D "cn=Manager,$BASEDN" -w secret \ 123 >> $TESTOUT 2>&1 << EOF 124 dn: $BASEDN 125 objectClass: organization 126 objectClass: dcObject 127 o: Example, Inc. 128 dc: example 129 130 dn: ou=People,$BASEDN 131 objectClass: organizationalUnit 132 ou: People 133 134 dn: ou=Groups,$BASEDN 135 objectClass: organizationalUnit 136 ou: Groups 137 138 dn: cn=Roger Rabbit,ou=People,$BASEDN 139 objectClass: inetOrgPerson 140 cn: Roger Rabbit 141 sn: Rabbit 142 143 dn: cn=Baby Herman,ou=People,$BASEDN 144 objectClass: inetOrgPerson 145 cn: Baby Herman 146 sn: Herman 147 148 dn: cn=Jessica Rabbit,ou=People,$BASEDN 149 objectClass: inetOrgPerson 150 cn: Jessica Rabbit 151 sn: Rabbit 152 153 dn: cn=Bugs Bunny,ou=People,$BASEDN 154 objectClass: inetOrgPerson 155 cn: Bugs Bunny 156 sn: Bunny 157 158 dn: cn=Daffy Duck,ou=People,$BASEDN 159 objectClass: inetOrgPerson 160 cn: Daffy Duck 161 sn: Duck 162 163 dn: cn=Elmer Fudd,ou=People,$BASEDN 164 objectClass: inetOrgPerson 165 cn: Elmer Fudd 166 sn: Fudd 167 168 dn: cn=Yosemite Sam,ou=People,$BASEDN 169 objectClass: inetOrgPerson 170 cn: Yosemite Sam 171 sn: Sam 172 173 dn: cn=Foghorn Leghorn,ou=People,$BASEDN 174 objectClass: inetOrgPerson 175 cn: Foghorn Leghorn 176 sn: Leghorn 177 178 dn: cn=Wile E. Coyote,ou=People,$BASEDN 179 objectClass: inetOrgPerson 180 cn: Wile E. Coyote 181 sn: Coyote 182 183 dn: cn=Road Runner,ou=People,$BASEDN 184 objectClass: inetOrgPerson 185 cn: Road Runner 186 sn: Runner 187 188 dn: cn=Tweety Bird,ou=People,$BASEDN 189 objectClass: inetOrgPerson 190 cn: Tweety Bird 191 sn: Bird 192 193 dn: cn=Porky Pig,ou=People,$BASEDN 194 objectClass: inetOrgPerson 195 cn: Porky Pig 196 sn: Pig 197 198 dn: cn=Tom Riddle,ou=People,$BASEDN 199 objectClass: inetOrgPerson 200 cn: Tom Riddle 201 sn: Riddle 202 203 dn: cn=Rabbits,ou=Groups,$BASEDN 204 objectClass: groupOfNames 205 cn: Rabbits 206 member: cn=Roger Rabbit,ou=People,$BASEDN 207 member: cn=Jessica Rabbit,ou=People,$BASEDN 208 209 dn: cn=Leporidae,ou=Groups,$BASEDN 210 objectClass: groupOfNames 211 cn: Leporidae 212 member: cn=Bugs Bunny,ou=People,$BASEDN 213 member: cn=Rabbits,ou=Groups,$BASEDN 214 215 dn: cn=A-M,ou=Groups,$BASEDN 216 objectClass: groupOfNames 217 cn: A-M 218 member: cn=Baby Herman,ou=People,$BASEDN 219 member: cn=Bugs Bunny,ou=People,$BASEDN 220 member: cn=Daffy Duck,ou=People,$BASEDN 221 member: cn=Elmer Fudd,ou=People,$BASEDN 222 member: cn=Foghorn Leghorn,ou=People,$BASEDN 223 member: cn=Jessica Rabbit,ou=People,$BASEDN 224 225 dn: cn=N-Z,ou=Groups,$BASEDN 226 objectClass: groupOfNames 227 cn: N-Z 228 member: cn=Porky Pig,ou=People,$BASEDN 229 member: cn=Road Runner,ou=People,$BASEDN 230 member: cn=Roger Rabbit,ou=People,$BASEDN 231 member: cn=Tweety Bird,ou=People,$BASEDN 232 member: cn=Wile E. Coyote,ou=People,$BASEDN 233 member: cn=Yosemite Sam,ou=People,$BASEDN 234 235 dn: cn=Humans,ou=Groups,$BASEDN 236 objectClass: groupOfNames 237 cn: Humans 238 member: cn=Elmer Fudd,ou=People,$BASEDN 239 member: cn=Yosemite Sam,ou=People,$BASEDN 240 241 dn: cn=Looney Tunes,ou=Groups,$BASEDN 242 objectClass: groupOfNames 243 cn: Looney Tunes 244 member: cn=Porky Pig,ou=People,$BASEDN 245 member: cn=Daffy Duck,ou=People,$BASEDN 246 member: cn=Elmer Fudd,ou=People,$BASEDN 247 member: cn=Bugs Bunny,ou=People,$BASEDN 248 member: cn=Tweety Bird,ou=People,$BASEDN 249 250 dn: cn=Desert Foes,ou=Groups,$BASEDN 251 objectClass: groupOfNames 252 cn: Desert Foes 253 member: cn=Road Runner,ou=People,$BASEDN 254 member: cn=Wile E. Coyote,ou=People,$BASEDN 255 256 dn: cn=Mixer1,ou=Groups,$BASEDN 257 objectClass: groupOfNames 258 cn: Mixer1 259 member: cn=Leporidae,ou=Groups,$BASEDN 260 member: cn=Desert Foes,ou=Groups,$BASEDN 261 member: cn=Foghorn Leghorn,ou=People,$BASEDN 262 263 dn: cn=Mixer2,ou=Groups,$BASEDN 264 objectClass: groupOfNames 265 cn: Mixer2 266 member: cn=Humans,ou=Groups,$BASEDN 267 member: cn=Baby Herman,ou=People,$BASEDN 268 269 dn: cn=Mixer3,ou=Groups,$BASEDN 270 objectClass: groupOfNames 271 cn: Mixer3 272 member: cn=Desert Foes,ou=Groups,$BASEDN 273 member: cn=Porky Pig,ou=People,$BASEDN 274 275 dn: cn=Mixer4,ou=Groups,$BASEDN 276 objectClass: groupOfNames 277 cn: Mixer4 278 member: cn=Mixer1,ou=Groups,$BASEDN 279 member: cn=Mixer2,ou=Groups,$BASEDN 280 member: cn=Foghorn Leghorn,ou=People,$BASEDN 281 282 dn: cn=Mixer5,ou=Groups,$BASEDN 283 objectClass: groupOfNames 284 cn: Mixer5 285 member: cn=Mixer2,ou=Groups,$BASEDN 286 member: cn=Mixer3,ou=Groups,$BASEDN 287 member: cn=A-M,ou=Groups,$BASEDN 288 289 dn: cn=Endless Loop,ou=Groups,$BASEDN 290 objectClass: groupOfNames 291 cn: Endless Loop 292 member: cn=Road Runner,ou=People,$BASEDN 293 member: cn=Loop\, Endless,ou=Groups,$BASEDN 294 295 dn: cn=Loop\, Endless,ou=Groups,$BASEDN 296 objectClass: groupOfNames 297 cn: Loop, Endless 298 member: cn=Wile E. Coyote,ou=People,$BASEDN 299 member: cn=Endless Loop,ou=Groups,$BASEDN 300 301 dn: cn=Strays,ou=Groups,$BASEDN 302 objectClass: groupOfNames 303 cn: Strays 304 member: cn=Tom Riddle,ou=People,$BASEDN 305 306 EOF 307 RC=$? 308 if test $RC != 0 ; then 309 echo "ldapadd failed ($RC)!" 310 test $KILLSERVERS != no && kill -HUP $KILLPIDS 311 exit $RC 312 fi 313 314 echo "Search the entire database..." 315 echo "# Search the entire database..." > $SEARCHOUT 316 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 317 '(objectClass=*)' '*' >> $SEARCHOUT 2>&1 318 RC=$? 319 if test $RC != 0 ; then 320 echo "ldapsearch failed ($RC)!" 321 test $KILLSERVERS != no && kill -HUP $KILLPIDS 322 exit $RC 323 fi 324 325 echo "Search for member=cn=Bugs Bunny..." 326 echo "# Search for member=cn=Bugs Bunny..." >> $SEARCHOUT 327 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 328 "(member=cn=Bugs Bunny,ou=People,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 329 RC=$? 330 if test $RC != 0 ; then 331 echo "ldapsearch failed ($RC)!" 332 test $KILLSERVERS != no && kill -HUP $KILLPIDS 333 exit $RC 334 fi 335 336 echo "Search for non-nested member=cn=Tom Riddle..." 337 echo "# Search for non-nested member=cn=Tom Riddle..." >> $SEARCHOUT 338 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 339 "(member=cn=Tom Riddle,ou=People,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 340 RC=$? 341 if test $RC != 0 ; then 342 echo "ldapsearch failed ($RC)!" 343 test $KILLSERVERS != no && kill -HUP $KILLPIDS 344 exit $RC 345 fi 346 347 echo "Running ldapmodify to enable nested member filter..." 348 $LDAPMODIFY -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 349 >> $TESTOUT 2>&1 <<EOF 350 dn: olcOverlay={0}nestgroup,olcDatabase={1}$BACKEND,cn=config 351 changetype: modify 352 replace: olcNestgroupFlags 353 olcNestgroupFlags: member-filter 354 355 EOF 356 RC=$? 357 if test $RC != 0 ; then 358 echo "ldapmodify failed ($RC)!" 359 test $KILLSERVERS != no && kill -HUP $KILLPIDS 360 exit $RC 361 fi 362 363 echo "Re-search for nested member=cn=Bugs Bunny..." 364 echo "# Re-search for nested member=cn=Bugs Bunny..." >> $SEARCHOUT 365 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 366 "(member=cn=Bugs Bunny,ou=People,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 367 RC=$? 368 if test $RC != 0 ; then 369 echo "ldapsearch failed ($RC)!" 370 test $KILLSERVERS != no && kill -HUP $KILLPIDS 371 exit $RC 372 fi 373 374 echo "Re-search for non-nested member=cn=Tom Riddle..." 375 echo "# Re-search for non-nested member=cn=Tom Riddle..." >> $SEARCHOUT 376 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 377 "(member=cn=Tom Riddle,ou=People,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 378 RC=$? 379 if test $RC != 0 ; then 380 echo "ldapsearch failed ($RC)!" 381 test $KILLSERVERS != no && kill -HUP $KILLPIDS 382 exit $RC 383 fi 384 385 echo "Running ldapmodify to enable nested member values..." 386 $LDAPMODIFY -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 387 >> $TESTOUT 2>&1 <<EOF 388 dn: olcOverlay={0}nestgroup,olcDatabase={1}$BACKEND,cn=config 389 changetype: modify 390 replace: olcNestgroupFlags 391 olcNestgroupFlags: member-values 392 393 EOF 394 RC=$? 395 if test $RC != 0 ; then 396 echo "ldapmodify failed ($RC)!" 397 test $KILLSERVERS != no && kill -HUP $KILLPIDS 398 exit $RC 399 fi 400 401 echo "Search the expanded groups..." 402 echo "# Search the expanded groups..." >> $SEARCHOUT 403 $LDAPSEARCH -S "" -b "ou=Groups,$BASEDN" -H $URI1 \ 404 '(objectClass=*)' '*' memberof >> $SEARCHOUT 2>&1 405 RC=$? 406 if test $RC != 0 ; then 407 echo "ldapsearch failed ($RC)!" 408 test $KILLSERVERS != no && kill -HUP $KILLPIDS 409 exit $RC 410 fi 411 412 LDIF=$NESTGROUPOUT1 413 414 echo "Filtering ldapsearch results..." 415 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT 416 echo "Filtering original ldif used to create database..." 417 $LDIFFILTER < $LDIF > $LDIFFLT 418 echo "Comparing filter output..." 419 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT 420 421 if test $? != 0 ; then 422 echo "Comparison failed" 423 test $KILLSERVERS != no && kill -HUP $KILLPIDS 424 exit 1 425 fi 426 427 echo ">>>>> Test succeeded (first half)" 428 429 if [ "$MEMBEROF" = memberofno ]; then 430 test $KILLSERVERS != no && kill -HUP $KILLPIDS 431 432 test $KILLSERVERS != no && wait 433 434 exit 0 435 fi 436 437 echo "Adding memberof overlay to database configuration..." 438 439 if [ "$MEMBEROF" = memberofmod ]; then 440 echo "Inserting memberof module on provider..." 441 $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1 442 dn: cn=module,cn=config 443 objectClass: olcModuleList 444 cn: module 445 olcModulePath: ../servers/slapd/overlays 446 olcModuleLoad: memberof.la 447 EOF 448 RC=$? 449 if test $RC != 0 ; then 450 echo "ldapadd failed for moduleLoad ($RC)!" 451 test $KILLSERVERS != no && kill -HUP $KILLPIDS 452 exit $RC 453 fi 454 fi 455 456 $LDAPADD -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 457 >> $TESTOUT 2>&1 <<EOF 458 dn: olcOverlay={1}memberof,olcDatabase={1}$BACKEND,cn=config 459 objectClass: olcOverlayConfig 460 objectClass: olcMemberofConfig 461 olcOverlay: {1}memberof 462 olcMemberOfGroupOC: groupOfNames 463 olcMemberOfMemberAD: member 464 olcMemberOfMemberOfAD: memberOf 465 466 EOF 467 RC=$? 468 if test $RC != 0 ; then 469 echo "ldapadd failed ($RC)!" 470 test $KILLSERVERS != no && kill -HUP $KILLPIDS 471 exit $RC 472 fi 473 474 echo "Recreating group entries to set memberof values..." 475 $LDAPMODIFY -H $URI1 \ 476 -D "cn=Manager,$BASEDN" -w secret \ 477 >> $TESTOUT 2>&1 <<EOF 478 dn: cn=Rabbits,ou=Groups,$BASEDN 479 changetype: modify 480 replace: member 481 member: cn=Roger Rabbit,ou=People,$BASEDN 482 member: cn=Jessica Rabbit,ou=People,$BASEDN 483 484 dn: cn=Leporidae,ou=Groups,$BASEDN 485 changetype: modify 486 replace: member 487 member: cn=Bugs Bunny,ou=People,$BASEDN 488 member: cn=Rabbits,ou=Groups,$BASEDN 489 490 dn: cn=A-M,ou=Groups,$BASEDN 491 changetype: modify 492 replace: member 493 member: cn=Baby Herman,ou=People,$BASEDN 494 member: cn=Bugs Bunny,ou=People,$BASEDN 495 member: cn=Daffy Duck,ou=People,$BASEDN 496 member: cn=Elmer Fudd,ou=People,$BASEDN 497 member: cn=Foghorn Leghorn,ou=People,$BASEDN 498 member: cn=Jessica Rabbit,ou=People,$BASEDN 499 500 dn: cn=N-Z,ou=Groups,$BASEDN 501 changetype: modify 502 replace: member 503 member: cn=Porky Pig,ou=People,$BASEDN 504 member: cn=Road Runner,ou=People,$BASEDN 505 member: cn=Roger Rabbit,ou=People,$BASEDN 506 member: cn=Tweety Bird,ou=People,$BASEDN 507 member: cn=Wile E. Coyote,ou=People,$BASEDN 508 member: cn=Yosemite Sam,ou=People,$BASEDN 509 510 dn: cn=Humans,ou=Groups,$BASEDN 511 changetype: modify 512 replace: member 513 member: cn=Elmer Fudd,ou=People,$BASEDN 514 member: cn=Yosemite Sam,ou=People,$BASEDN 515 516 dn: cn=Looney Tunes,ou=Groups,$BASEDN 517 changetype: modify 518 replace: member 519 member: cn=Porky Pig,ou=People,$BASEDN 520 member: cn=Daffy Duck,ou=People,$BASEDN 521 member: cn=Elmer Fudd,ou=People,$BASEDN 522 member: cn=Bugs Bunny,ou=People,$BASEDN 523 member: cn=Tweety Bird,ou=People,$BASEDN 524 525 dn: cn=Desert Foes,ou=Groups,$BASEDN 526 changetype: modify 527 replace: member 528 member: cn=Road Runner,ou=People,$BASEDN 529 member: cn=Wile E. Coyote,ou=People,$BASEDN 530 531 dn: cn=Mixer1,ou=Groups,$BASEDN 532 changetype: modify 533 replace: member 534 member: cn=Leporidae,ou=Groups,$BASEDN 535 member: cn=Desert Foes,ou=Groups,$BASEDN 536 member: cn=Foghorn Leghorn,ou=People,$BASEDN 537 538 dn: cn=Mixer2,ou=Groups,$BASEDN 539 changetype: modify 540 replace: member 541 member: cn=Humans,ou=Groups,$BASEDN 542 member: cn=Baby Herman,ou=People,$BASEDN 543 544 dn: cn=Mixer3,ou=Groups,$BASEDN 545 changetype: modify 546 replace: member 547 member: cn=Desert Foes,ou=Groups,$BASEDN 548 member: cn=Porky Pig,ou=People,$BASEDN 549 550 dn: cn=Mixer4,ou=Groups,$BASEDN 551 changetype: modify 552 replace: member 553 member: cn=Mixer1,ou=Groups,$BASEDN 554 member: cn=Mixer2,ou=Groups,$BASEDN 555 member: cn=Foghorn Leghorn,ou=People,$BASEDN 556 557 dn: cn=Mixer5,ou=Groups,$BASEDN 558 changetype: modify 559 replace: member 560 member: cn=Mixer2,ou=Groups,$BASEDN 561 member: cn=Mixer3,ou=Groups,$BASEDN 562 member: cn=A-M,ou=Groups,$BASEDN 563 564 dn: cn=Endless Loop,ou=Groups,$BASEDN 565 changetype: modify 566 replace: member 567 member: cn=Road Runner,ou=People,$BASEDN 568 member: cn=Loop\, Endless,ou=Groups,$BASEDN 569 570 dn: cn=Loop\, Endless,ou=Groups,$BASEDN 571 changetype: modify 572 replace: member 573 member: cn=Wile E. Coyote,ou=People,$BASEDN 574 member: cn=Endless Loop,ou=Groups,$BASEDN 575 576 dn: cn=Strays,ou=Groups,$BASEDN 577 changetype: modify 578 replace: member 579 member: cn=Tom Riddle,ou=People,$BASEDN 580 581 EOF 582 RC=$? 583 if test $RC != 0 ; then 584 echo "ldapmodify failed ($RC)!" 585 test $KILLSERVERS != no && kill -HUP $KILLPIDS 586 exit $RC 587 fi 588 589 echo "Moving previous results to $SEARCHOUT.0" 590 mv $SEARCHOUT $SEARCHOUT.0 591 592 echo "Re-search the entire database..." 593 echo "# Re-search the entire database after adding memberof configuration..." >> $SEARCHOUT 594 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 595 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 596 RC=$? 597 if test $RC != 0 ; then 598 echo "ldapsearch failed ($RC)!" 599 test $KILLSERVERS != no && kill -HUP $KILLPIDS 600 exit $RC 601 fi 602 603 echo "Search for memberOf=cn=Mixer3..." 604 echo "# Search for memberOf=cn=Mixer3..." >> $SEARCHOUT 605 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 606 "(memberOf=cn=Mixer3,ou=Groups,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 607 RC=$? 608 if test $RC != 0 ; then 609 echo "ldapsearch failed ($RC)!" 610 test $KILLSERVERS != no && kill -HUP $KILLPIDS 611 exit $RC 612 fi 613 614 echo "Running ldapmodify to enable nested memberOf filter..." 615 $LDAPMODIFY -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 616 >> $TESTOUT 2>&1 <<EOF 617 dn: olcOverlay={0}nestgroup,olcDatabase={1}$BACKEND,cn=config 618 changetype: modify 619 replace: olcNestgroupFlags 620 olcNestgroupFlags: memberof-filter 621 622 EOF 623 RC=$? 624 if test $RC != 0 ; then 625 echo "ldapmodify failed ($RC)!" 626 test $KILLSERVERS != no && kill -HUP $KILLPIDS 627 exit $RC 628 fi 629 630 echo "Re-search for memberOf=cn=Mixer3 with filter nesting..." 631 echo "# Re-search for memberOf=cn=Mixer3 with filter nesting..." >> $SEARCHOUT 632 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 633 "(memberOf=cn=Mixer3,ou=Groups,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 634 RC=$? 635 if test $RC != 0 ; then 636 echo "ldapsearch failed ($RC)!" 637 test $KILLSERVERS != no && kill -HUP $KILLPIDS 638 exit $RC 639 fi 640 641 echo "Running ldapmodify to also enable nested memberOf values..." 642 $LDAPMODIFY -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 643 >> $TESTOUT 2>&1 <<EOF 644 dn: olcOverlay={0}nestgroup,olcDatabase={1}$BACKEND,cn=config 645 changetype: modify 646 add: olcNestgroupFlags 647 olcNestgroupFlags: memberof-values 648 649 EOF 650 RC=$? 651 if test $RC != 0 ; then 652 echo "ldapmodify failed ($RC)!" 653 test $KILLSERVERS != no && kill -HUP $KILLPIDS 654 exit $RC 655 fi 656 657 echo "Re-search for memberOf=cn=Mixer3 with filter and value nesting..." 658 echo "# Re-search for memberOf=cn=Mixer3 with filter and value nesting..." >> $SEARCHOUT 659 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 660 "(memberOf=cn=Mixer3,ou=Groups,$BASEDN)" '*' memberof >> $SEARCHOUT 2>&1 661 RC=$? 662 if test $RC != 0 ; then 663 echo "ldapsearch failed ($RC)!" 664 test $KILLSERVERS != no && kill -HUP $KILLPIDS 665 exit $RC 666 fi 667 668 echo "Re-search the entire database with memberof value nesting..." 669 echo "# Re-search the entire database with memberof value nesting..." >> $SEARCHOUT 670 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 671 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 672 RC=$? 673 if test $RC != 0 ; then 674 echo "ldapsearch failed ($RC)!" 675 test $KILLSERVERS != no && kill -HUP $KILLPIDS 676 exit $RC 677 fi 678 679 test $KILLSERVERS != no && kill -HUP $KILLPIDS 680 681 LDIF=$NESTGROUPOUT2 682 683 echo "Filtering ldapsearch results..." 684 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT 685 echo "Filtering original ldif used to create database..." 686 $LDIFFILTER < $LDIF > $LDIFFLT 687 echo "Comparing filter output..." 688 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT 689 690 if test $? != 0 ; then 691 echo "Comparison failed" 692 exit 1 693 fi 694 695 echo ">>>>> Test succeeded" 696 697 test $KILLSERVERS != no && wait 698 699 exit 0 700