steffen: server/perl-kolab/Kolab-LDAP LDAP.pm,1.12,1.13
cvs at intevation.de
cvs at intevation.de
Fri Jul 16 19:18:06 CEST 2004
Author: steffen
Update of /kolabrepository/server/perl-kolab/Kolab-LDAP
In directory doto:/tmp/cvs-serv1560/perl-kolab/Kolab-LDAP
Modified Files:
LDAP.pm
Log Message:
new deleteflag semantics
Index: LDAP.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/Kolab-LDAP/LDAP.pm,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- LDAP.pm 11 Jul 2004 16:12:07 -0000 1.12
+++ LDAP.pm 16 Jul 2004 17:18:03 -0000 1.13
@@ -180,8 +180,12 @@
{
my $object = shift;
my $p = shift || 'user';
- my $del = $object->get_value($Kolab::config{$p . '_field_deleted'}) || '';
- return ($del =~ /true/i);
+ my $del = $object->get_value($Kolab::config{$p . '_field_deleted'}, asref => 1 );
+ #foreach (@$del) {
+ # return 1 if lc($_) eq lc($Kolab::config{'fqhostname'});
+ #}
+ #return 0;
+ return $#$del > 0;
}
# Map from Kolab ACLs to Cyrus ACLs
@@ -219,6 +223,12 @@
my $homeserver = $object->get_value('homeServer');
my $islocal = 1;
+ my $del = $object->get_value($Kolab::config{$p . '_field_deleted'}, asref => 1);
+ if( ref($del) eq 'ARRAY' && @$del > 0 ) {
+ Kolab::log('L', "Kolab::LDAP::createObject() skipping object ".$object->get_value($objuidfield)
+ ." because it is deleted");
+ return;
+ }
if( $homeserver && $homeserver ne $Kolab::config{'fqhostname'} ) {
if( $p eq 'sf' ) {
# Dont create shared folders on other hosts than it's homeserver
@@ -316,11 +326,25 @@
if ($remfromldap) {
my $dn = $object->dn;
- Kolab::log('L', "Removing DN `$dn'");
- my $mesg = $ldap->delete($dn);
- if ($mesg->code) {
- Kolab::log('L', "Unable to remove DN `$dn'", KOLAB_WARN);
- }
+ my $del = $object->get_value($Kolab::config{$p . '_field_deleted'}, asref => 1);
+ if( ref($del) eq 'ARRAY' && scalar(@$del) == 1 ) {
+ # Ok we are the last one...
+ Kolab::log('L', "Removing DN `$dn'");
+ my $mesg = $ldap->delete($dn);
+ if ($mesg->code) {
+ Kolab::log('L', "Unable to remove DN `$dn': ".$mesg->error, KOLAB_WARN);
+ }
+ } else {
+ # Just remove us from the deleteflag
+ Kolab::log('L', "Removing ".$Kolab::config{'fqhostname'}." from deleteflag in `$dn'");
+ my $mesg = $ldap->modify( $dn, delete =>
+ { $Kolab::config{$p . '_field_deleted'} =>
+ $Kolab::config{'fqhostname'} } );
+ if ($mesg->code) {
+ Kolab::log('L', "Unable to remove ".$Kolab::config{'fqhostname'}
+ ." from deleteflag in `$dn': ".$mesg->error, KOLAB_WARN);
+ }
+ }
}
my $guid = $object->get_value($Kolab::config{$p . '_field_guid'});
@@ -426,7 +450,7 @@
$ldapmesg = $ldap->search(
base => $dn,
scope => 'sub',
- filter => '(&(objectClass=' . $Kolab::config{$p . '_object_class'} . ")$add(" . $Kolab::config{$p . '_field_deleted'} . '=TRUE))',
+ filter => '(&(objectClass=' . $Kolab::config{$p . '_object_class'} . ")$add(" . $Kolab::config{$p . '_field_deleted'} . '='.$Kolab::config{'fqhostname'}.'))',
attrs => [
'*',
$Kolab::config{$p . '_field_guid'},
More information about the commits
mailing list