equal
deleted
inserted
replaced
219 |
219 |
220 sub list_groups(@) { |
220 sub list_groups(@) { |
221 |
221 |
222 @_ = ('*') unless @_; |
222 @_ = ('*') unless @_; |
223 my @ag = split ',', $Cf->imap_aclgroups; |
223 my @ag = split ',', $Cf->imap_aclgroups; |
|
224 my $ag_all = 1 if '*' ~~ @ag; |
224 my $ag_att = AT_ACLGROUPS; |
225 my $ag_att = AT_ACLGROUPS; |
225 my $filter = |
226 my $filter = |
226 "(&($ag_att=*)" . "(|" . join( "", map { "(uid=$_)" } @_ ) . "))"; |
227 "(&($ag_att=*)" . "(|" . join( "", map { "(uid=$_)" } @_ ) . "))"; |
227 my $r = $ldap->search( |
228 my $r = $ldap->search( |
228 attrs => [ 'uid', AT_ACLGROUPS ], |
229 attrs => [ 'uid', AT_ACLGROUPS ], |
238 |
239 |
239 my $users; |
240 my $users; |
240 while ( my $e = ( $r->shift_entry ) ) { |
241 while ( my $e = ( $r->shift_entry ) ) { |
241 my $uid = $e->get_value('uid'); |
242 my $uid = $e->get_value('uid'); |
242 my @ag_cur = split ',', $e->get_value($ag_att); |
243 my @ag_cur = split ',', $e->get_value($ag_att); |
243 for (@ag) { |
244 for (@ag_cur) { |
244 $users->{$_} = |
245 $users->{$_} = |
245 defined $users->{$_} |
246 defined $users->{$_} |
246 ? [ @{ $users->{$_} }, $uid ] |
247 ? [ @{ $users->{$_} }, $uid ] |
247 : [$uid] |
248 : [$uid] |
248 if $_ ~~ @ag_cur; |
249 if $ag_all or $_ ~~ @ag; |
249 } |
250 } |
250 } |
251 } |
251 |
252 |
252 print "$_:\n\t", join( "\n\t", @{ $users->{$_} } ), "\n\n" |
253 print "$_:\n\t", join( "\n\t", @{ $users->{$_} } ), "\n\n" |
253 for keys %{$users}; |
254 for keys %{$users}; |