Mailgroup wird im Alias-Modul mit angezeigt.
authorheiko
Tue, 15 Nov 2005 20:40:28 +0000
changeset 3 1f0b4cd76cc8
parent 2 a8bab3a3ec80
child 4 8e4b6dd8fa54
Mailgroup wird im Alias-Modul mit angezeigt.
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(@) {