dkluenter
sub _create_default_abook_user_object {
my $self = shift;
my $ldap = shift;
my $abookdn = $self->{'uadn'};
# Add user node
eval {
$ldap->add ( $abookdn,
'attr' => [
'objectclass' => [ 'top','bmailNamedObject','simpleSecurityObject'],
'uid'=> $self->{'lp'},
'userPassword' => "{SASL}".$self->{'login'},
]
);
};
if ($@) {
if (my $e = Exception::Class->caught('ExistsEx')) {
#warn "user object already exists -- that's fine";
}
else {
ref $@ ? $@->rethrow : die $@; # hopefully just a missing domain object.
}
}
else {
print STDERR "Abook ".$self->{'login'}." successfully created!\n" if $BMail::DEBUG > 0;
}
}
sub create_abook_service {
_create_abook_service(@_);
}
# Called for new users to create abook base objects on the abook-server
sub _create_abook_service {
my $self = shift;
my $conf = $self->{'conf'};
# Find user abook host.
my $host = $self->abookserver;
my $masterDN = $conf->get('abookDN');
my $masterpw = $conf->get('abookpw');
# Open Connection to the abook of the user.
my $ldap = BMail::Backend::LDAP->new($host,[$masterDN,$masterpw]);
die "No bind to abook LDAP" unless $ldap; # Either redundant or
# Open Connection to the abook of the user.
my $ldap = BMail::Backend::LDAP->new($host,[$masterDN,$masterpw]);
die "No bind to abook LDAP" unless $ldap; # Either redundant or really fatal
my $domainDN = $self->{'abookDomainDN'};
# Try create user node
eval {
$self->_create_default_abook_user_object($ldap);
};
if (my $e = Exception::Class->caught('NotFoundEx')) {
# No such object - maybe this is the first user for the domain
# Add customer domain object
print STDERR "Creating Abook domain, DN: $domainDN\n" if $BMail::DEBUG > 0;
$ldap->add ( $domainDN,
'attr' =>
[
'objectclass' => [ 'top','bmailNamedObject'],
'o'=>$self->{'domain'}
]
);
# Now try again. - without safety net
$self->_create_default_abook_user_object($ldap);
}
elsif ($@) {
$self->set_no_abook_service;
ref $@ ? $@->rethrow : die $@;
}
» ohne Titel
« mess

