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

Contents 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 - (show annotations) (download)
Sat Sep 25 20:42:47 2010 UTC (13 years, 7 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 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