account.pm
branchfoerste-hhsp
changeset 75 63b7c7fcd0cb
parent 70 66832ec269ad
equal deleted inserted replaced
74:b82a656f784e 75:63b7c7fcd0cb
    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