diff -r a8bab3a3ec80 -r 1f0b4cd76cc8 alias.pm --- a/alias.pm Mon Nov 07 09:47:30 2005 +0000 +++ b/alias.pm Tue Nov 15 20:40:28 2005 +0000 @@ -17,7 +17,7 @@ use password; my $Cf; -my ($ldap, $abase); +my ($ldap, $abase, $ubase); sub _add(); sub _list(); @@ -26,19 +26,26 @@ sub verbose(@); sub columns(); +sub OU_ACCOUNTS(); sub OU_ALIASES(); sub OC_ALIAS(); sub AT_FORWARDINGADDRESS(); +sub AT_GROUP(); +sub AT_PRIMARYADDRESS(); sub import(@) { $Cf = shift; require constant; + import constant OU_ACCOUNTS => $Cf->ldap_ou_accounts; import constant OU_ALIASES => $Cf->ldap_ou_aliases; import constant OC_ALIAS => $Cf->ldap_oc_alias; import constant AT_FORWARDINGADDRESS => $Cf->ldap_at_forwardingaddress; + import constant AT_GROUP => $Cf->ldap_at_group; + import constant AT_PRIMARYADDRESS => $Cf->ldap_at_primaryaddress; $abase = OU_ALIASES . "," . $Cf->ldap_base; + $ubase = OU_ACCOUNTS . "," . $Cf->ldap_base; } sub run($) { @@ -194,6 +201,25 @@ . "\n"); } + + $filter = "(|" . join("", map { "(".AT_GROUP."=$_)" } @ARGV) . ")"; + $r = $ldap->search( + filter => $filter, + base => $ubase, + attrs => [AT_GROUP, AT_PRIMARYADDRESS] + ); + die $r->error if $r->code; + + my %group; + while (my $e = $r->shift_entry) { + my $mail = $e->get_value(AT_PRIMARYADDRESS); + foreach my $g ($e->get_value(AT_GROUP)) { + push @{$group{$g}}, $mail; + } + } + foreach my $g (keys %group) { + print wrap("", "\t", "$g⇒ " . join(", ", @{$group{$g}}) . "\n"); + } } sub verbose(@) {