account.pm
branchfoerste
changeset 69 430b3ecdbbf8
parent 68 e8285fb4fb63
child 70 66832ec269ad
equal deleted inserted replaced
68:e8285fb4fb63 69:430b3ecdbbf8
   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/^\+//;
   345             }
   349             }
   346 
   350 
   347             if ($ag) {
   351             if ($ag) {
   348                 $e->replace( (AT_ACLGROUPS) => $ag );
   352                 $e->replace( (AT_ACLGROUPS) => $ag );
   349             } else {
   353             } else {
   350                 $e->delete( AT_ACLGROUPS );
   354                 $e->delete( AT_ACLGROUPS ) if $lag;
   351             }
   355             }
   352             $modified++;
   356             $modified++;
   353         }
   357         }
   354 
   358 
   355         if ( my $a = $Cf->primary ) {
   359         if ( my $a = $Cf->primary ) {
   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";