equal
deleted
inserted
replaced
12 qw(LDAP_ALREADY_EXISTS LDAP_NO_SUCH_OBJECT LDAP_TYPE_OR_VALUE_EXISTS); |
12 qw(LDAP_ALREADY_EXISTS LDAP_NO_SUCH_OBJECT LDAP_TYPE_OR_VALUE_EXISTS); |
13 use Net::LDAP::Entry; |
13 use Net::LDAP::Entry; |
14 use Mail::IMAPTalk; |
14 use Mail::IMAPTalk; |
15 use Text::Wrap; |
15 use Text::Wrap; |
16 use password; |
16 use password; |
|
17 use Common; |
17 |
18 |
18 my $Cf; |
19 my $Cf; |
19 my ( $ldap, $ubase, $abase ); |
20 my ( $ldap, $ubase, $abase ); |
20 my ( $imap, $imap_password ); |
21 my ( $imap, $imap_password ); |
21 END { $imap and $imap = undef; } |
22 END { $imap and $imap = undef; } |
22 |
23 |
23 sub _add(); |
24 sub _add(); |
24 sub _list(); |
25 sub _list(); |
25 sub _delete(); |
26 sub _delete(); |
26 sub _mkpw($); |
|
27 sub uniq(@); |
27 sub uniq(@); |
28 sub verbose(@); |
28 sub verbose(@); |
29 sub _mbox($); |
29 sub _mbox($); |
30 |
30 |
31 sub OU_ACCOUNTS(); |
31 sub OU_ACCOUNTS(); |
102 $user =~ s/!$//; # jetzt können wir ! nicht mehr brauchn |
102 $user =~ s/!$//; # jetzt können wir ! nicht mehr brauchn |
103 my $cn = $Cf->fullname || $user; |
103 my $cn = $Cf->fullname || $user; |
104 my $sn = ( reverse split " ", $cn )[0]; |
104 my $sn = ( reverse split " ", $cn )[0]; |
105 my $mailGroup = [ split /,/, $Cf->group || "" ]; |
105 my $mailGroup = [ split /,/, $Cf->group || "" ]; |
106 my $mailForwardingAddress = [ split /,/, $Cf->forward || "" ]; |
106 my $mailForwardingAddress = [ split /,/, $Cf->forward || "" ]; |
107 my $pw = _mkpw( $Cf->password || "{pwgen}" ); |
107 my $pw = Common::mkpw( $Cf->password || "{pwgen}" ); |
108 my $mbox = _mbox($user); |
108 my $mbox = _mbox($user); |
109 |
109 |
110 if ( $mailPrimaryAddress !~ /@/ ) { |
110 if ( $mailPrimaryAddress !~ /@/ ) { |
111 $mailPrimaryAddress .= "@" . $Cf->default_domain; |
111 $mailPrimaryAddress .= "@" . $Cf->default_domain; |
112 } |
112 } |
368 |
368 |
369 $e->replace( (AT_PRIMARYADDRESS) => $Cf->primary ); |
369 $e->replace( (AT_PRIMARYADDRESS) => $Cf->primary ); |
370 $modified++; |
370 $modified++; |
371 } |
371 } |
372 |
372 |
373 if ( my $pw = _mkpw( $Cf->password ) ) { |
373 if ( my $pw = Common::mkpw( $Cf->password ) ) { |
374 $e->replace( userPassword => $pw ); |
374 $e->replace( userPassword => $pw ); |
375 $modified++; |
375 $modified++; |
376 } |
376 } |
377 |
377 |
378 #if ($Cf->internal ne ":") { |
378 #if ($Cf->internal ne ":") { |
566 my %x; |
566 my %x; |
567 @x{@_} = (); |
567 @x{@_} = (); |
568 return keys %x; |
568 return keys %x; |
569 } |
569 } |
570 |
570 |
571 { |
571 |
572 my @pw; |
|
573 |
|
574 sub _mkpw($) { |
|
575 my $in = $_[0]; |
|
576 |
|
577 return $in unless $in and $in eq "{pwgen}"; |
|
578 |
|
579 if ( !@pw ) { |
|
580 chomp( @pw = `pwgen 8 10 2>/dev/null` ); |
|
581 die "pwgen: $!" if $?; |
|
582 } |
|
583 return shift @pw; |
|
584 |
|
585 } |
|
586 } |
|
587 |
572 |
588 sub _mbox($) { |
573 sub _mbox($) { |
589 |
574 |
590 my ($user) = @_; |
575 my ($user) = @_; |
591 |
576 |