/[smeserver]/rpms/e-smith-ldap/sme8/e-smith-ldap-5.2.0-rename_old_record_fix.patch
ViewVC logotype

Annotation of /rpms/e-smith-ldap/sme8/e-smith-ldap-5.2.0-rename_old_record_fix.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sat Sep 25 20:42:47 2010 UTC (13 years, 8 months ago) by slords
Branch: MAIN
CVS Tags: e-smith-ldap-5_2_0-49_el5_sme, e-smith-ldap-5_2_0-76_el5_sme, e-smith-ldap-5_2_0-71_el5_sme, e-smith-ldap-5_2_0-39_el5_sme, e-smith-ldap-5_2_0-77_el5_sme, e-smith-ldap-5_2_0-50_el5_sme, e-smith-ldap-5_2_0-78_el5_sme, e-smith-ldap-5_2_0-37_el5_sme, e-smith-ldap-5_2_0-61_el5_sme, e-smith-ldap-5_2_0-66_el5_sme, e-smith-ldap-5_2_0-70_el5_sme, e-smith-ldap-5_2_0-79_el5_sme, e-smith-ldap-5_2_0-81_el5_sme, e-smith-ldap-5_2_0-36_el5_sme, e-smith-ldap-5_2_0-59_el5_sme, e-smith-ldap-5_2_0-45_el5_sme, e-smith-ldap-5_2_0-75_el5_sme, e-smith-ldap-5_2_0-46_el5_sme, e-smith-ldap-5_2_0-56_el5_sme, e-smith-ldap-5_2_0-55_el5_sme, e-smith-ldap-5_2_0-57_el5_sme, e-smith-ldap-5_2_0-73_el5_sme, e-smith-ldap-5_2_0-69_el5_sme, e-smith-ldap-5_2_0-48_el5_sme, e-smith-ldap-5_2_0-44_el5_sme, e-smith-ldap-5_2_0-52_el5_sme, e-smith-ldap-5_2_0-51_el5_sme, e-smith-ldap-5_2_0-35_el5_sme, e-smith-ldap-5_2_0-72_el5_sme, e-smith-ldap-5_2_0-65_el5_sme, e-smith-ldap-5_2_0-54_el5_sme, e-smith-ldap-5_2_0-53_el5_sme, e-smith-ldap-5_2_0-43_el5_sme, e-smith-ldap-5_2_0-47_el5_sme, e-smith-ldap-5_2_0-40_el5_sme, e-smith-ldap-5_2_0-80_el5_sme, e-smith-ldap-5_2_0-74_el5_sme, e-smith-ldap-5_2_0-41_el5_sme, e-smith-ldap-5_2_0-63_el5_sme, e-smith-ldap-5_2_0-60_el5_sme, e-smith-ldap-5_2_0-62_el5_sme, e-smith-ldap-5_2_0-42_el5_sme, e-smith-ldap-5_2_0-38_el5_sme, e-smith-ldap-5_2_0-68_el5_sme, e-smith-ldap-5_2_0-67_el5_sme, e-smith-ldap-5_2_0-64_el5_sme, HEAD
* Sat Sep 25 2010 Shad L. Lords <slords@mail.com> 5.2.0-35.sme
- Fix old record lookups from sme7 [SME: 6235]

1 slords 1.1 diff -up e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update.rename_old_record_fix e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update
2     --- e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update.rename_old_record_fix 2010-09-25 13:59:31.000000000 -0600
3     +++ e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update 2010-09-25 14:39:31.000000000 -0600
4     @@ -120,11 +120,14 @@ my $o = $l->prop('defaultCompany') || $d
5     my %seen;
6     my @objects = qw(top organization dcObject);
7     my $result = $ldap->search( base => $base, filter => '(objectClass=*)', scope => 'base' );
8     -warn "failed checking base entry $base: ", $result->error if $result->code;
9     -if ($result->count == 0)
10     +if ($result->code == 32)
11     {
12     $result = $ldap->add( $base, attr => [ dc => $dc, o => $o, objectClass => \@objects ] );
13     }
14     +elsif ($result->code)
15     +{
16     + warn "failed checking base entry $base: ", $result->error;
17     +}
18     else
19     {
20     # Don't overwrite objectClass (just update if necessary)
21     @@ -132,18 +135,21 @@ else
22     @objects = grep { ! $seen{$_} ++ } (@objects, $result->entry(0)->get_value('objectClass') );
23     $ldap->modify( $base, replace => { dc => $dc, o => $o, objectClass => \@objects } );
24     }
25     -warn "failed(",$result->code,") to add/update entry $base: ", $result->error if $result->code;
26     +warn "failed to add/update entry $base: ", $result->error if $result->code;
27    
28     # Try and find container records
29     foreach my $obj ( qw(Users Groups Computers) )
30     {
31     @objects = qw(top organizationalUnit);
32     - $result = $ldap->search( base => $base, filter => "(ou=$obj)" );
33     - warn "failed checking base entry ou=$obj,$base: ", $result->error if $result->code;
34     - if ($result->count == 0)
35     + $result = $ldap->search( base => "ou=$obj,$base", filter => '(objectClass=*)', scope => 'base' );
36     + if ($result->code == 32)
37     {
38     $result = $ldap->add( "ou=$obj,$base", attr => [ ou => $obj, objectClass => \@objects ] );
39     }
40     + elsif ($result->code)
41     + {
42     + warn "failed checking base entry ou=$obj,$base: ", $result->error;
43     + }
44     else
45     {
46     # Don't overwrite objectClass (just update if necessary)
47     @@ -266,42 +272,11 @@ endpwent();
48     #------------------------------------------------------------
49     foreach my $dn (keys %$updates)
50     {
51     - # Try and find old record (sme7)
52     - my ($oldfilter, undef, $oldsearchbase) = split /,/, $dn, 3;
53     - my $oldresult = $ldap->search( base => $oldsearchbase, filter => "($oldfilter)", scope => 'one' );
54     - if ( $result->code )
55     - {
56     - warn "failed looking up old entry $oldfilter,$oldsearchbase: ", $result->error;
57     - next;
58     - }
59     -
60     # Try and find record
61     - my ($filter, $searchbase) = split /,/, $dn, 2;
62     - $result = $ldap->search( base => $searchbase, filter => "($filter)" );
63     - if ( $result->code )
64     - {
65     - warn "failed looking up entry $dn: ", $result->error;
66     - next;
67     - }
68     - my $cnt = $result->count;
69     - my @objectClass = $cnt == 0 ? () : $result->entry(0)->get_value('objectClass');
70     -
71     - # If we have an old record either rename it or remove it
72     - if ( $oldresult->count == 1)
73     - {
74     - if ( $cnt == 0 )
75     - {
76     - $result = $ldap->moddn( "$oldfilter,$oldsearchbase", newrdn => $filter, newsuperior => $searchbase, deleteoldrdn => 1 );
77     - warn "failed to rename old entry $oldfilter,$oldsearchbase: ", $result->error if $result->code;
78     - $cnt = $oldresult->count;
79     - @objectClass = $oldresult->entry(0)->get_value('objectClass');
80     - }
81     - else
82     - {
83     - $result = $ldap->delete( "$oldfilter,$oldsearchbase" );
84     - warn "failed to remove old entry $oldfilter,$oldsearchbase: ", $result->error if $result->code;
85     - }
86     - }
87     + $result = $ldap->search( base => $dn, filter => '(objectClass=*)', scope => 'base' );
88     + warn "failed looking up entry $dn: ", $result->error if $result->code && $result->code != 32;
89     + my $code = $result->code;
90     + my @objectClass = $code == 32 ? () : $result->entry(0)->get_value('objectClass');
91    
92     # Clean up attributes and convert to utf8
93     delete $updates->{$dn}->{'junk'};
94     @@ -309,7 +284,7 @@ foreach my $dn (keys %$updates)
95     {
96     if ( ref($updates->{$dn}->{$attr}) eq 'ARRAY' )
97     {
98     - if ( $cnt == 0 and scalar(@{$updates->{$dn}->{$attr}}) == 0 )
99     + if ( $code == 32 and scalar(@{$updates->{$dn}->{$attr}}) == 0 )
100     {
101     delete $updates->{$dn}->{$attr};
102     }
103     @@ -327,7 +302,7 @@ foreach my $dn (keys %$updates)
104     {
105     utf8::upgrade($updates->{$dn}->{$attr});
106     }
107     - elsif ( $cnt == 0 )
108     + elsif ( $code == 32 )
109     {
110     delete $updates->{$dn}->{$attr};
111     }
112     @@ -338,25 +313,45 @@ foreach my $dn (keys %$updates)
113     }
114     }
115    
116     + # Try and find old record (sme7)
117     + my ($oldfilter, undef, $oldsearchbase) = split /,/, $dn, 3;
118     + my $oldresult = $ldap->search( base => "$oldfilter,$oldsearchbase", filter => '(objectClass=*)', scope => 'base' );
119     + if ($oldresult->code)
120     + {
121     + warn "failed looking up old entry $oldfilter,$oldsearchbase: ", $result->error if $oldresult->code != 32;
122     + }
123     + else
124     + {
125     + if ($code == 32)
126     + {
127     + my ($newdn, $newbase) = split /,/, $dn, 2;
128     + $result = $ldap->moddn( "$oldfilter,$oldsearchbase", newrdn => $newdn, newsuperior => $newbase, deleteoldrdn => 1 );
129     + warn "failed to rename old entry $oldfilter,$oldsearchbase: ", $result->error if $result->code;
130     + $code = $oldresult->code;
131     + @objectClass = $oldresult->entry(0)->get_value('objectClass');
132     + }
133     + else
134     + {
135     + $result = $ldap->delete( "$oldfilter,$oldsearchbase" );
136     + warn "failed to remove old entry $oldfilter,$oldsearchbase: ", $result->error if $result->code;
137     + }
138     + }
139     +
140     # Perform insert or update
141     - if ( $cnt == 0 )
142     + if ( $code == 32 )
143     {
144     $result = $ldap->add( $dn, attrs => [ %{$updates->{$dn}} ] );
145     $result->code && warn "failed to add entry $dn: ", $result->error;
146     }
147     - elsif ( $cnt == 1 )
148     + else
149     {
150     - # Don't overwrite objectClass (just update if necessary)
151     - %seen = ();
152     + # Don't overwrite objectClass (just remove person if existing)
153     + %seen = ( person => 1 );
154     @{$updates->{$dn}->{objectClass}} = grep { ! $seen{$_} ++ } (@{$updates->{$dn}->{objectClass}}, @objectClass );
155    
156     $result = $ldap->modify( $dn, replace => $updates->{$dn});
157     $result->code && warn "failed to modify entry $dn: ", $result->error;
158     }
159     - else
160     - {
161     - warn "failed looking up entry $dn: found $cnt results";
162     - }
163     }
164     $ldap->unbind;
165    

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed