325 } |
325 } |
326 |
326 |
327 if ( defined $Cf->aclgroups ) { |
327 if ( defined $Cf->aclgroups ) { |
328 |
328 |
329 my $ag = $Cf->aclgroups; |
329 my $ag = $Cf->aclgroups; |
|
330 my $lag = $e->get_value(AT_ACLGROUPS); |
|
331 # groups should be supplied with leading '$' for consistency with |
|
332 # dovecots imap acl, but should not be saved in ldap with it! |
|
333 $ag =~ s/(^|,[+-]?)\K\$//g; |
330 |
334 |
331 if ( $ag =~ /(^|,\s*)[+-]/ ) { |
335 if ( $ag =~ /(^|,\s*)[+-]/ ) { |
332 my %x; |
336 my %x; |
333 @x{ split /,/, $e->get_value(AT_ACLGROUPS) } = (); |
337 @x{ split /,/, $lag } = (); |
334 for ( split /,/, $ag ) { |
338 for ( split /,/, $ag ) { |
335 if (s/^-//) { |
339 if (s/^-//) { |
336 delete $x{$_}; |
340 delete $x{$_}; |
337 } else { |
341 } else { |
338 s/^\+//; |
342 s/^\+//; |
474 my $cn = join( ", ", $e->get_value("cn") ); |
478 my $cn = join( ", ", $e->get_value("cn") ); |
475 my $mr = $e->get_value(AT_PRIMARYADDRESS) || ""; # ?? |
479 my $mr = $e->get_value(AT_PRIMARYADDRESS) || ""; # ?? |
476 my $ml = join( ", ", $e->get_value(AT_ADDRESS) ) || ""; # ?? |
480 my $ml = join( ", ", $e->get_value(AT_ADDRESS) ) || ""; # ?? |
477 my $mg = join( ", ", $e->get_value(AT_GROUP) ) || ""; # ?? |
481 my $mg = join( ", ", $e->get_value(AT_GROUP) ) || ""; # ?? |
478 my $forw = join( ", ", $e->get_value(AT_FORWARDINGADDRESS) ) || ""; |
482 my $forw = join( ", ", $e->get_value(AT_FORWARDINGADDRESS) ) || ""; |
479 my $ag = $e->get_value(AT_ACLGROUPS); |
483 my $ag = join ',$', split /,/, $e->get_value(AT_ACLGROUPS); |
|
484 $ag = "\$$ag" if $ag; |
480 |
485 |
481 print "$uid: $cn <$mr>"; |
486 print "$uid: $cn <$mr>"; |
482 |
487 |
483 #if (($e->get_value("iusRestrictedMail")||"") eq "TRUE") { |
488 #if (($e->get_value("iusRestrictedMail")||"") eq "TRUE") { |
484 #print " INTERNAL"; |
489 #print " INTERNAL"; |