1 |
diff -Nur -x '*.orig' -x '*.rej' e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-delete mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-delete |
2 |
--- e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-delete 2005-07-27 23:26:55.000000000 +0200 |
3 |
+++ mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-delete 2010-02-02 19:39:37.000000000 +0100 |
4 |
@@ -36,9 +36,9 @@ |
5 |
} |
6 |
|
7 |
my $event = $ARGV [0]; |
8 |
-my $userName = $ARGV [1]; |
9 |
+my $name = $ARGV [1]; |
10 |
|
11 |
-die "Username argument missing." unless defined ($userName); |
12 |
+die "Username argument missing." unless defined ($name); |
13 |
|
14 |
#------------------------------------------------------------ |
15 |
# Delete user from LDAP directory. First read LDAP password |
16 |
@@ -57,17 +57,30 @@ |
17 |
password => $pw |
18 |
); |
19 |
|
20 |
-my @search_args = ( base => $base, filter => "uid=$userName" ); |
21 |
+my @search_args = ( base => "ou=Users,$base", filter => "uid=$name" ); |
22 |
my $mesg = $ldap->search(@search_args); |
23 |
|
24 |
$mesg->code && die "Failed ldap search: ", $mesg->error; |
25 |
|
26 |
if ($mesg->count > 1) |
27 |
{ |
28 |
- die("LDAP search for $userName returned $mesg->count - 1 expected\n"); |
29 |
+ die("LDAP search for $name returned $mesg->count - 1 expected\n"); |
30 |
} |
31 |
|
32 |
$ldap->delete($mesg->entry(0)); |
33 |
+ |
34 |
+if ($event eq 'group-delete'){ |
35 |
+ @search_args = ( base => "ou=Groups,$base", filter => "cn=$name" ); |
36 |
+ $mesg = $ldap->search(@search_args); |
37 |
+ $mesg->code && die "Failed ldap search: ", $mesg->error; |
38 |
+ if ($mesg->count > 1) |
39 |
+ { |
40 |
+ die("LDAP search for $name returned $mesg->count - 1 expected\n"); |
41 |
+ } |
42 |
+ |
43 |
+ $ldap->delete($mesg->entry(0)); |
44 |
+} |
45 |
+ |
46 |
$ldap->unbind; |
47 |
|
48 |
exit (0); |
49 |
diff -Nur -x '*.orig' -x '*.rej' e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update |
50 |
--- e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update 2010-02-02 19:42:46.000000000 +0100 |
51 |
+++ mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/events/actions/ldap-update 2010-02-02 19:41:49.000000000 +0100 |
52 |
@@ -106,6 +106,7 @@ |
53 |
my $type = $acct->prop('type'); |
54 |
next unless ($type eq 'user' || $type eq 'group'); |
55 |
my @attrs = (); |
56 |
+ my @groupAttrs = (); |
57 |
if (($type eq 'user') || ($key eq 'admin')) |
58 |
{ |
59 |
my $name = $acct->prop('FirstName') . " " . $acct->prop('LastName'); |
60 |
@@ -147,6 +148,9 @@ |
61 |
|
62 |
my $key = $acct->key; |
63 |
my $desc = $acct->prop('Description') || ''; |
64 |
+ my @members = split(/,/,($acct->prop('Members') || '')); |
65 |
+ my $gid = $acct->prop('Gid'); |
66 |
+ |
67 |
utf8::upgrade($desc); |
68 |
push @attrs, (cn => $desc) unless $desc =~ /^\s*$/; |
69 |
push @attrs, (mail => "$key\@$domain"); |
70 |
@@ -155,22 +159,44 @@ |
71 |
push @attrs, (ou => $dept) unless $dept =~ /^\s*$/; |
72 |
push @attrs, (l => $city) unless $city =~ /^\s*$/; |
73 |
push @attrs, (street => $street) unless $street =~ /^\s*$/; |
74 |
+ |
75 |
+ push @groupAttrs, (objectClass => 'posixGroup'); |
76 |
+ push @groupAttrs, (cn => $key); |
77 |
+ push @groupAttrs, (gidNumber => $gid); |
78 |
+ push @groupAttrs, (description => $desc) unless $desc =~ /^\s*$/; |
79 |
+ push @groupAttrs, (memberUid => \@members); |
80 |
} |
81 |
- my $dn = "uid=$key,$base"; |
82 |
+ my $dn = "uid=$key,ou=Users,$base"; |
83 |
+ my $groupDn = "cn=$key,ou=Groups,$base"; |
84 |
if (($event eq 'user-create') || ($event eq 'group-create')) |
85 |
{ |
86 |
my $result = $ldap->add ($dn, attr => \@attrs); |
87 |
|
88 |
$result->code && |
89 |
warn "failed to add entry for $dn: ", $result->error ; |
90 |
+ |
91 |
+ if ($type eq 'group'){ |
92 |
+ $result = $ldap->add ($groupDn, attr => \@groupAttrs); |
93 |
+ |
94 |
+ $result->code && |
95 |
+ warn "failed to add entry for $groupDn: ", $result->error ; |
96 |
+ } |
97 |
} |
98 |
else |
99 |
{ |
100 |
my %attrs = @attrs; |
101 |
+ my %groupAttrs = @groupAttrs; |
102 |
my $result = $ldap->modify ($dn, replace => \%attrs); |
103 |
|
104 |
$result->code && |
105 |
warn "failed to modify entry for $dn: ", $result->error ; |
106 |
+ |
107 |
+ if ($type eq 'group'){ |
108 |
+ $result = $ldap->modify ($groupDn, replace => \%groupAttrs); |
109 |
+ |
110 |
+ $result->code && |
111 |
+ warn "failed to modify entry for $groupDn: ", $result->error ; |
112 |
+ } |
113 |
} |
114 |
} |
115 |
$ldap->unbind; |
116 |
diff -Nur -x '*.orig' -x '*.rej' e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/10organisation mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/10organisation |
117 |
--- e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/10organisation 2010-02-02 19:42:46.000000000 +0100 |
118 |
+++ mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/10organisation 2010-02-02 19:39:37.000000000 +0100 |
119 |
@@ -4,7 +4,19 @@ |
120 |
|
121 |
$OUT .= "dn: $ldapBase\n"; |
122 |
$OUT .= "objectClass: organization\n"; |
123 |
+ $OUT .= "objectClass: top\n"; |
124 |
$OUT .= "dc: $dc\n"; |
125 |
$OUT .= "o: $o\n"; |
126 |
$OUT .= "objectClass: dcObject\n"; |
127 |
+ |
128 |
+ $OUT .= "\n"; |
129 |
+ $OUT .= "dn: ou=Users,$ldapBase\n"; |
130 |
+ $OUT .= "objectClass: top\n"; |
131 |
+ $OUT .= "objectClass: organizationalUnit\n"; |
132 |
+ $OUT .= "ou: Users\n\n"; |
133 |
+ $OUT .= "dn: ou=Groups,$ldapBase\n"; |
134 |
+ $OUT .= "objectClass: top\n"; |
135 |
+ $OUT .= "objectClass: organizationalUnit\n"; |
136 |
+ $OUT .= "ou: Groups\n\n"; |
137 |
} |
138 |
+ |
139 |
diff -Nur -x '*.orig' -x '*.rej' e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups |
140 |
--- e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 2010-02-02 19:42:46.000000000 +0100 |
141 |
+++ mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 2010-02-02 19:39:37.000000000 +0100 |
142 |
@@ -1,15 +1,28 @@ |
143 |
{ |
144 |
foreach ($a->groups) |
145 |
- { |
146 |
+ { |
147 |
my $key = $_->key; |
148 |
- my $desc = $_->prop('Description'); |
149 |
+ my $desc = $_->prop('Description') || ''; |
150 |
+ my $gid = $_->prop('Gid'); |
151 |
+ my @members = split( /,/, ($_->prop('Members') || '') ); |
152 |
|
153 |
$OUT .= "\n"; |
154 |
- $OUT .= "dn: uid=$key,$ldapBase\n"; |
155 |
+ $OUT .= "dn: uid=$key,ou=Users,$ldapBase\n"; |
156 |
$OUT .= "objectClass: inetOrgPerson\n"; |
157 |
$OUT .= "mail: $key\@$DomainName\n"; |
158 |
$OUT .= utf8("cn: $desc\n") if $desc; |
159 |
$OUT .= "uid: $key\n"; |
160 |
$OUT .= "sn: $key\n"; |
161 |
+ |
162 |
+ $OUT .= "\n"; |
163 |
+ $OUT .= "dn: cn=$key,ou=Groups,$ldapBase\n"; |
164 |
+ $OUT .= "objectClass: posixGroup\n"; |
165 |
+ $OUT .= "gidNumber: $gid\n"; |
166 |
+ $OUT .= "cn: $key\n"; |
167 |
+ $OUT .= "description: $desc\n"; |
168 |
+ foreach my $member (@members){ |
169 |
+ $OUT .= "memberUid: $member\n"; |
170 |
+ } |
171 |
} |
172 |
} |
173 |
+ |
174 |
diff -Nur -x '*.orig' -x '*.rej' e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users |
175 |
--- e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 2010-02-02 19:42:46.000000000 +0100 |
176 |
+++ mezzanine_patched_e-smith-ldap-5.2.0/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 2010-02-02 19:39:37.000000000 +0100 |
177 |
@@ -15,7 +15,7 @@ |
178 |
my $password = $passwd{$key}; |
179 |
|
180 |
$OUT .= "\n"; |
181 |
- $OUT .= utf8("dn: uid=$key,$ldapBase\n"); |
182 |
+ $OUT .= utf8("dn: uid=$key,ou=Users,$ldapBase\n"); |
183 |
$OUT .= utf8("objectClass: inetOrgPerson\n"); |
184 |
$OUT .= utf8("uid: $key\n"); |
185 |
$OUT .= utf8("cn: $name\n") if $name; |
186 |
|