account.pm
branchcms
changeset 16 65695e59a6f9
parent 15 8e33564a0815
child 18 e3710b49e8e4
--- a/account.pm	Tue Jul 04 21:52:14 2006 +0000
+++ b/account.pm	Fri Jul 14 14:32:38 2006 +0000
@@ -90,6 +90,7 @@
     my $mailPrimaryAddress = $Cf->primary || $user;
     my $mailAddress = [$user, split /,/, $Cf->other || ""];
     my $mailGroup = [split /,/, $Cf->group || ""];
+    my $mailForwardingAddress = [split /,/, $Cf->forward || ""];
     my $pw = _mkpw($Cf->password || "{pwgen}");
 
 
@@ -133,6 +134,8 @@
 	$e->add((AT_PRIMARYADDRESS) => $mailPrimaryAddress);
 	$e->add(userPassword => $pw);
 	$e->add((AT_GROUP) => $mailGroup) if @$mailGroup;
+	$e->add((AT_FORWARDINGADDRESS) => $mailForwardingAddress) if @$mailForwardingAddress;
+
 	# $e->add(iusRestrictedMail => $Cf->internal) if $Cf->internal ne ":";
 
 	$e->exists("sn") or $e->add(sn => $sn);
@@ -240,6 +243,22 @@
 	    $modified++;
 	}
 
+	if (defined $Cf->forward) {
+	    my @f = split /,/, $Cf->forward;
+	    grep { /^[+-]/ } @f or $e->delete(AT_FORWARDINGADDRESS)
+		if $e->get_value(AT_FORWARDINGADDRESS);
+
+	    foreach my $f (@f) {
+		if ($f =~ s/^-//) {
+		    $e->delete((AT_FORWARDINGADDRESS) => [$f]);
+		} else {
+		    $f =~ s/^\+//;
+		    $e->add((AT_FORWARDINGADDRESS) => [$f]);
+		}
+	    }
+	    $modified++;
+	}
+
 	if (my $a = $Cf->primary) {
 	    $r = $ldap->search(base => $ubase, 
 		# filter => "(|(mailPrimaryAddress=$a)(mail=$a))");
@@ -355,6 +374,7 @@
 	my $mr = $e->get_value(AT_PRIMARYADDRESS) || "";	# ??
 	my $ml = join(", ", $e->get_value(AT_ADDRESS)) || "";	# ??
 	my $mg = join(", ", $e->get_value(AT_GROUP)) || "";	# ??
+	my $forw = join (", ", $e->get_value(AT_FORWARDINGADDRESS)) || "";
 	my $mbox = "user/$uid";
 
 	print "$uid: $cn <$mr>";
@@ -384,6 +404,7 @@
 	
 	print  wrap("\t", "\t\t", "Other Adresses: $ml\n") if $ml;
 	print wrap("\t", "\t\t", "Mail Groups: $mg\n") if $mg;
+	print wrap("\t", "\t\t", "Forwardings: $forw\n") if $forw;
 
     }
 }