/[smeserver]/rpms/e-smith-base+ldap/sme7/e-smith-base+ldap-4.19.1-convert_ldap-init-accounts_to_template.patch
ViewVC logotype

Annotation of /rpms/e-smith-base+ldap/sme7/e-smith-base+ldap-4.19.1-convert_ldap-init-accounts_to_template.patch

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


Revision 1.2 - (hide annotations) (download)
Tue Oct 7 19:21:54 2008 UTC (15 years, 8 months ago) by slords
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
New streams

1 slords 1.1 diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-init-accounts mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-init-accounts
2     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-init-accounts 2008-04-02 10:42:45.000000000 -0600
3     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-init-accounts 1969-12-31 17:00:00.000000000 -0700
4     @@ -1,300 +0,0 @@
5     -#!/usr/bin/perl -w
6     -
7     -#----------------------------------------------------------------------
8     -# copyright (C) 1999, 2000 e-smith, inc.
9     -#
10     -# This program is free software; you can redistribute it and/or modify
11     -# it under the terms of the GNU General Public License as published by
12     -# the Free Software Foundation; either version 2 of the License, or
13     -# (at your option) any later version.
14     -#
15     -# This program is distributed in the hope that it will be useful,
16     -# but WITHOUT ANY WARRANTY; without even the implied warranty of
17     -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18     -# GNU General Public License for more details.
19     -#
20     -# You should have received a copy of the GNU General Public License
21     -# along with this program; if not, write to the Free Software
22     -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23     -#----------------------------------------------------------------------
24     -
25     -package esmith;
26     -
27     -use strict;
28     -use Errno;
29     -use esmith::ConfigDB;
30     -use esmith::AccountsDB;
31     -use esmith::util;
32     -use Net::LDAP::LDIF;
33     -
34     -# Events: post-install, post-upgrade.
35     -# We assume we cannot access to ldap during this action.
36     -
37     -my $c = esmith::ConfigDB->open_ro or die "Couldn't open config db\n";
38     -
39     -my $domain = $c->get('DomainName')
40     - || die("Couldn't determine domain name");
41     -$domain = $domain->value;
42     -my $smb_server = $c->get('smb')
43     - || die("Couldn't determine samba server name");
44     -$smb_server = $smb_server->prop("ServerName");
45     -$smb_server =~ tr/[a-z]/[A-Z]/;
46     -my $base = esmith::util::ldapBase ($domain);
47     -
48     -# We specify an empty configuration file to assure no ldap connection.
49     -my $g = `/usr/bin/net getlocalsid -s /dev/null`;
50     -unless ($g =~ /SID.*is: (.+)/) {
51     - warn "Unable to determine SID. Clearning cache to see if it helps.";
52     - rename '/etc/samba/secrets.tdb','/etc/samba/secrets.'.time;
53     - rename '/var/cache/samba/gencache.tdb','/var/cache/samba/gencache.'.time;
54     - rename '/var/cache/samba/wins.dat','/var/cache/samba/wins.'.time;
55     - $g = `/usr/bin/net getlocalsid -s /dev/null`;
56     - $g =~ /SID.*is: (.+)/ or die "Could not get current sid\n";
57     -}
58     -my $local_sid = $1;
59     -
60     -# Since we are adding entries directly to the database, to ensure consistency,
61     -# slapd should not be running.
62     -if (`ps -A|grep slapd`)
63     -{
64     - unless (system("/usr/local/bin/svc -d /service/ldap") == 0)
65     - {
66     - die "Failed to init ldap base because slapd is running.\n";
67     - }
68     -}
69     -
70     -# Be sure that relevant schemas are enabled.
71     -unless (system("/sbin/e-smith/expand-template /etc/openldap/slapd.conf") == 0)
72     -{
73     - die "Failed to expand /etc/openldap/slapd.conf.\n";
74     -}
75     -
76     -# See perldoc perlipc (search for 'Safe Pipe Opens').
77     -my $pid = open(DISCARD, "|-");
78     -
79     -# Write to DISCARD ldif code corresponding to accounts to init.
80     -if ($pid) # parent
81     -{
82     - my $ldif = Net::LDAP::LDIF->new("/home/e-smith/db/ldap/$domain.ldif",
83     - "r", onerror => 'undef');
84     - my $writer = Net::LDAP::LDIF->new(\*DISCARD, "w", onerror => 'undef');
85     -
86     - # Entries to init.
87     - my @ous = ("Groups", "People", "Users"); # ous for Organizational Units.
88     - my @users = ("root", "ntp", "www", "admin", "public");
89     - my @groups = ("shared", "slocate", "nobody", @users);
90     -
91     - # Groups to map with samba, their names and their rids.
92     - my %mapping =
93     - (
94     - 'admin' => ['Domain Admins', "512"],
95     - 'shared' => ['Domain Users', "513"],
96     - 'nobody' => ['Domain Guests', "514"]
97     - );
98     -
99     - # Check for already initialized entries.
100     - my %ou_done = ();
101     - my %group_done = ();
102     - my %user_done = ();
103     - my $smb_domain_done;
104     - while (not $ldif->eof())
105     - {
106     - my $entry = $ldif->read_entry();
107     - if ($ldif->error())
108     - {
109     - warn "Error msg: ", $ldif->error(), "\n";
110     - warn "Error lines:\n", $ldif->error_lines(), "\n";
111     - }
112     - else
113     - {
114     - my $dn = $entry->dn || "";
115     -
116     - $smb_domain_done = 1
117     - if ($dn eq "sambaDomainName=$smb_server,$base");
118     -
119     - foreach (@ous)
120     - {
121     - $ou_done{$_} = 1
122     - if ($dn eq "ou=$_,$base");
123     - }
124     -
125     - foreach (@groups)
126     - {
127     - $group_done{$_} = 1
128     - if ($dn eq "cn=$_,ou=Groups,$base");
129     - }
130     -
131     - foreach (@users)
132     - {
133     - $user_done{$_} = 1
134     - if ($dn eq "uid=$_,ou=Users,$base");
135     - }
136     - }
137     - }
138     - $ldif->done();
139     -
140     - # Produce ldif code.
141     - unless ($smb_domain_done)
142     - {
143     - my $smb_domain = Net::LDAP::Entry->new();
144     - $smb_domain->dn("sambaDomainName=$smb_server,$base");
145     - $smb_domain->add
146     - (
147     - "objectClass" => "sambaDomain",
148     - "sambaAlgorithmicRidBase" => "1000",
149     - "sambaDomainName" => $smb_server,
150     - "sambaSID" => $local_sid,
151     - );
152     -
153     - $writer->write($smb_domain);
154     - }
155     -
156     - foreach (@ous)
157     - {
158     - next if $ou_done{$_};
159     -
160     - my $ou = Net::LDAP::Entry->new();
161     - $ou->dn("ou=$_,$base");
162     - $ou->add
163     - (
164     - "ou" => $_,
165     - "objectClass" => ["organizationalUnit", "top"]
166     - );
167     -
168     - $writer->write($ou);
169     - }
170     -
171     - my $group_info = parse_file("/etc/group", @groups);
172     -
173     - foreach (@groups)
174     - {
175     - next if $group_done{$_};
176     -
177     - my ($name, $passwd, $gid, $members) = @{$group_info->{$_}};
178     -
179     - die "Unable to find $_ informations in /etc/group.\n"
180     - unless ($name ne "" && $gid ne "");
181     -
182     - my $group = Net::LDAP::Entry->new();
183     - $group->dn("cn=$_,ou=Groups,$base");
184     -
185     - if ($mapping{$_})
186     - {
187     - my ($dname, $rid) = @{$mapping{$_}};
188     - $group->add
189     - (
190     - "objectClass" => ["posixGroup", "sambaGroupMapping", "top"],
191     - "cn" => $name,
192     - "gidNumber" => $gid,
193     - "memberUid" => [split(/,/, $members || "")],
194     - "description" => "Local Unix group",
195     - "displayName" => $dname,
196     - "sambaGroupType" => "2",
197     - "sambaSID" => $local_sid . "-" . $rid
198     - );
199     - }
200     - else
201     - {
202     - $group->add
203     - (
204     - "objectClass" => ["posixGroup", "top"],
205     - "cn" => $name,
206     - "gidNumber" => $gid,
207     - "memberUid" => [split(/,/, $members || "")]
208     - );
209     - }
210     -
211     - $writer->write($group);
212     - }
213     -
214     - my $passwd_info = parse_file("/etc/passwd", @users);
215     - my $shadow_info = parse_file("/etc/shadow", @users);
216     -
217     - foreach (@users)
218     - {
219     - next if $user_done{$_};
220     -
221     - my ($name, undef, $uid, $gid, $comment, $home, $shell)
222     - = @{$passwd_info->{$_}};
223     - my (undef, $passwd, $lastchange, $min, $max, $warning, $inactive,
224     - $expire, $flag) = @{$shadow_info->{$_}};
225     -
226     - die "Unable to find $_ informations in /etc/passwd.\n"
227     - unless ($name ne "" && $uid ne "" && $gid ne "" && $home ne "");
228     -
229     - my $user = Net::LDAP::Entry->new();
230     - $user->dn("uid=$_,ou=Users,$base");
231     - $user->add
232     - (
233     - "objectClass" => ["account", "posixAccount", "shadowAccount",
234     - "top"],
235     - "cn" => $name,
236     - "uid" => $name,
237     - "gecos" => $comment || "no comment",
238     - "uidNumber" => $uid,
239     - "gidNumber" => $gid,
240     - "userPassword" => "{crypt}" . ($passwd || "*"),
241     - "homeDirectory" => $home,
242     - "loginShell" => $shell || "/bin/false",
243     - "shadowLastChange" => $lastchange || int(time / (24 * 3600)),
244     - "shadowMin" => $min || "-1",
245     - "shadowMax" => $max || "99999",
246     - "shadowWarning" => $warning || "7",
247     - "shadowInactive" => $inactive || "-1",
248     - "shadowExpire" => $expire || "-1",
249     - "shadowFlag" => $flag || "-1"
250     - );
251     -
252     - $writer->write($user);
253     - }
254     -
255     -$writer->done();
256     -close(DISCARD) || die "Child exited early.";
257     -}
258     -else # child
259     -{
260     - # Add entries to slapd base.
261     - unless (system("/usr/sbin/slapadd -b $base") == 0)
262     - {
263     - die "Failed to add ldif entries to $base via slapadd.\n";
264     - }
265     -
266     - # Make sure ldap db are owned by ldap
267     - system("/bin/chown ldap:ldap /var/lib/ldap/*") == 0
268     - or die "Failed to chown ldap db.\n";
269     -
270     - exit 0;
271     -}
272     -
273     -# Update dump to assute consistency.
274     -unless (system("/usr/sbin/slapcat",
275     - "-b", $base,
276     - "-l", "/home/e-smith/db/ldap/$domain.ldif") == 0)
277     -{
278     - die "Failed to update slapd dump (/home/e-smith/db/ldap/$domain.ldif).\n";
279     -}
280     -
281     -# Parse a file with fields separated by ':' (ie /etc/{group,passwd,shadow}).
282     -sub parse_file
283     -{
284     - # We are only interested in @keep accounts.
285     - my ($file, @keep) = @_;
286     -
287     - my %result = ();
288     -
289     - open(FILE, $file) or die("open: $!");
290     -
291     - my @line;
292     - while(<FILE>)
293     - {
294     - chomp;
295     - @line = split(/:/);
296     - foreach (@keep)
297     - {
298     - $result{$_} = [ @line ]
299     - if ($line[0] eq $_);
300     - }
301     - }
302     -
303     - return \%result;
304     -}
305     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/11SambaDomain mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/11SambaDomain
306     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/11SambaDomain 1969-12-31 17:00:00.000000000 -0700
307     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/11SambaDomain 2008-04-02 10:42:01.000000000 -0600
308     @@ -0,0 +1,10 @@
309     +{
310     + my ($smb_server) = $smb{ServerName};
311     + $smb_server =~ tr/[a-z]/[A-Z]/;
312     +
313     + $OUT .= "dn: sambaDomainName=$smb_server,$ldapBase\n";
314     + $OUT .= "objectClass: sambaDomain\n";
315     + $OUT .= "sambaAlgorithmicRidBase: 1000\n";
316     + $OUT .= "sambaDomainName: $smb_server\n";
317     + $OUT .= "sambaSID: $local_sid\n";
318     +}
319     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/12UserGroupContainers mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/12UserGroupContainers
320     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/12UserGroupContainers 1969-12-31 17:00:00.000000000 -0700
321     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/12UserGroupContainers 2008-04-02 10:42:01.000000000 -0600
322     @@ -0,0 +1,10 @@
323     +{
324     + foreach (@ous)
325     + {
326     + $OUT .= "dn: ou=$_,$ldapBase\n";
327     + $OUT .= "objectClass: top\n";
328     + $OUT .= "objectClass: organizationalUnit\n";
329     + $OUT .= "ou: $_\n\n";
330     + }
331     +}
332     +
333     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups
334     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 1969-12-31 17:00:00.000000000 -0700
335     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 2008-04-02 10:42:01.000000000 -0600
336     @@ -0,0 +1,44 @@
337     +{
338     + my $group_info = parse_file("/etc/group", @groups);
339     +
340     + foreach my $group (@groups)
341     + {
342     + # Skip groups in db but not in /etc/group.
343     + next unless ($group_info->{$group});
344     +
345     + my ($name, $passwd, $gid, $members) = @{$group_info->{$group}};
346     +
347     + $OUT .= "dn: cn=$group,ou=Groups,$ldapBase\n";
348     +
349     + if ($mapping{$group})
350     + {
351     + my ($dname, $rid) = @{$mapping{$group}};
352     +
353     + $OUT .= utf8("objectClass: posixGroup\n");
354     + $OUT .= utf8("objectClass: sambaGroupMapping\n");
355     + $OUT .= utf8("objectClass: top\n");
356     + $OUT .= utf8("cn: $name\n");
357     + $OUT .= utf8("gidNumber: $gid\n");
358     + foreach (split(/,/, $members || ""))
359     + {
360     + $OUT .= utf8("memberUid: $_\n");
361     + }
362     + $OUT .= utf8("description: Local Unix group\n");
363     + $OUT .= utf8("displayName: $dname\n");
364     + $OUT .= utf8("sambaGroupType: 2\n");
365     + $OUT .= utf8("sambaSID: $local_sid" . "-" . "$rid\n\n");
366     + }
367     + else
368     + {
369     + $OUT .= utf8("objectClass: posixGroup\n");
370     + $OUT .= utf8("objectClass: top\n");
371     + $OUT .= utf8("cn: $name\n");
372     + $OUT .= utf8("gidNumber: $gid\n");
373     + foreach (split(/,/, $members || ""))
374     + {
375     + $OUT .= utf8("memberUid: $_\n");
376     + }
377     + $OUT .= "\n";
378     + }
379     + }
380     +}
381     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50people mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50people
382     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50people 1969-12-31 17:00:00.000000000 -0700
383     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50people 2008-04-02 10:42:01.000000000 -0600
384     @@ -0,0 +1,60 @@
385     +{
386     + @peoples = ($a->users, $a->groups);
387     +
388     + foreach my $people (@peoples)
389     + {
390     + my $key = $people->key;
391     + my $type = $people->prop('type');
392     +
393     + if ($type eq 'user')
394     + {
395     + my $first = $people->prop('FirstName') || '';
396     + my $last = $people->prop('LastName') || '';
397     + my $name = "$first $last";
398     + my $phone = $people->prop('Phone') || '';
399     + my $company = $people->prop('Company') || '';
400     + my $dept = $people->prop('Dept') || '';
401     + my $city = $people->prop('City') || '';
402     + my $street = $people->prop('Street') || '';
403     +
404     + $OUT .= utf8("dn: uid=$key,ou=People,$ldapBase\n");
405     + $OUT .= utf8("objectClass: person\n");
406     + $OUT .= utf8("objectClass: organizationalPerson\n");
407     + $OUT .= utf8("objectClass: inetOrgPerson\n");
408     + $OUT .= utf8("uid: $key\n");
409     + $OUT .= utf8("cn: $name\n");
410     + $OUT .= utf8("givenName: $first\n");
411     + $OUT .= utf8("sn: $last\n");
412     + $OUT .= utf8("mail: $key\@$DomainName\n");
413     + $OUT .= utf8("telephoneNumber: $phone\n");
414     + $OUT .= utf8("o: $company\n");
415     + $OUT .= utf8("ou: $dept\n");
416     + $OUT .= utf8("l: $city\n");
417     + $OUT .= utf8("street: $street\n\n");
418     + }
419     + elsif ($type eq 'group')
420     + {
421     + my $desc = $people->prop('Description') || '';
422     + my $phone = $ldap{defaultPhoneNumber} || '';
423     + my $company = $ldap{defaultCompany} || '';
424     + my $dept = $ldap{defaultDepartment} || '';
425     + my $city = $ldap{defaultCity} || '';
426     + my $street = $ldap{defaultStreet} || '';
427     +
428     + $OUT .= utf8("dn: uid=$key,ou=People,$ldapBase\n");
429     + $OUT .= utf8("objectClass: person\n");
430     + $OUT .= utf8("objectClass: organizationalPerson\n");
431     + $OUT .= utf8("objectClass: inetOrgPerson\n");
432     + $OUT .= utf8("uid: $key\n");
433     + $OUT .= utf8("cn: $desc\n");
434     + $OUT .= utf8("sn: $desc\n");
435     + $OUT .= utf8("mail: $key\@$DomainName\n");
436     + $OUT .= utf8("telephoneNumber: $phone\n");
437     + $OUT .= utf8("o: $company\n");
438     + $OUT .= utf8("ou: $dept\n");
439     + $OUT .= utf8("l: $city\n");
440     + $OUT .= utf8("street: $street\n\n");
441     + }
442     + }
443     +}
444     +
445     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users
446     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 1969-12-31 17:00:00.000000000 -0700
447     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 2008-04-02 10:42:01.000000000 -0600
448     @@ -0,0 +1,36 @@
449     +{
450     + my $passwd_info = parse_file("/etc/passwd", @users);
451     + my $shadow_info = parse_file("/etc/shadow", @users);
452     +
453     + foreach my $user (@users)
454     + {
455     + # Skip users in db but not in /etc/passwd.
456     + next unless ($passwd_info->{$user});
457     +
458     + my ($name, undef, $uid, $gid, $comment, $home, $shell)
459     + = @{$passwd_info->{$user}};
460     + my (undef, $passwd, $lastchange, $min, $max, $warning, $inactive,
461     + $expire, $flag) = @{$shadow_info->{$user}};
462     +
463     + $OUT .= utf8("dn: uid=$user,ou=Users,$ldapBase\n");
464     + $OUT .= utf8("objectClass: account\n");
465     + $OUT .= utf8("objectClass: posixAccount\n");
466     + $OUT .= utf8("objectClass: shadowAccount\n");
467     + $OUT .= utf8("objectClass: top\n");
468     + $OUT .= utf8("cn: $name\n");
469     + $OUT .= utf8("uid: $name\n");
470     + $OUT .= utf8("gecos: " . ($comment || "no comment") . "\n");
471     + $OUT .= utf8("uidNumber: $uid\n");
472     + $OUT .= utf8("gidNumber: $gid\n");
473     + $OUT .= utf8("userPassword: {crypt}" . ($passwd || "*") . "\n");
474     + $OUT .= utf8("homeDirectory: $home\n");
475     + $OUT .= utf8("loginShell: " . ($shell || "/bin/false") . "\n");
476     + $OUT .= utf8("shadowLastChange: " . ($lastchange || int(time / (24 * 3600))) . "\n");
477     + $OUT .= utf8("shadowMin: " . ($min || "-1") . "\n");
478     + $OUT .= utf8("shadowMax: " . ($max || "99999") . "\n");
479     + $OUT .= utf8("shadowWarning: " . ($warning || "7") . "\n");
480     + $OUT .= utf8("shadowInactive: " . ($inactive || "-1") . "\n");
481     + $OUT .= utf8("shadowExpire: " . ($expire || "-1") . "\n");
482     + $OUT .= utf8("shadowFlag: " . ($flag || "-1") . "\n\n");
483     + }
484     +}
485     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin
486     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin 2008-04-02 10:42:47.000000000 -0600
487     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin 2008-04-02 10:42:01.000000000 -0600
488     @@ -1,14 +1,63 @@
489     {
490     + use esmith::ConfigDB;
491     use esmith::AccountsDB;
492     use esmith::util;
493    
494     $a = esmith::AccountsDB->open_ro;
495     + $c = esmith::ConfigDB->open_ro;
496     $ldapBase = esmith::util::ldapBase ($DomainName);
497     + $local_sid = `/usr/bin/net getlocalsid -s /dev/null -n $smb{ServerName}`;
498     + $local_sid =~ s/SID.*is: (.+)/$1/;
499     + chomp($local_sid);
500     sub utf8
501     {
502     my $t = shift;
503     utf8::encode($t);
504     return $t;
505     }
506     + # Basic entries to init.
507     + @ous = ("Groups", "People", "Users"); # ous for Organizational Units.
508     + @users = ("root", "ntp", "www", "admin", "public");
509     + @groups = ("shared", "slocate", "nobody", @users);
510     +
511     + # Groups to map with samba, their names and their rids.
512     + %mapping =
513     + (
514     + 'admin' => ['Domain Admins', "512"],
515     + 'shared' => ['Domain Users', "513"],
516     + 'nobody' => ['Domain Guests', "514"]
517     + );
518     +
519     + # Add users and groups from db.
520     + foreach my $account ($a->users, $a->groups)
521     + {
522     + @users = (@users, $account->key);
523     + @groups = (@groups, $account->key);
524     + }
525     +
526     + # Parse a file with fields separated by ':' (ie /etc/{group,passwd,shadow}).
527     + sub parse_file
528     + {
529     + # We are only interested in @keep accounts.
530     + my ($file, @keep) = @_;
531     +
532     + my %result = ();
533     +
534     + open(FILE, $file) or die("open: $!");
535     +
536     + my @line;
537     + while(<FILE>)
538     + {
539     + chomp;
540     + @line = split(/:/);
541     + foreach (@keep)
542     + {
543     + $result{$_} = [ @line ]
544     + if ($line[0] eq $_);
545     + }
546     + }
547     +
548     + return \%result;
549     + }
550     $OUT = "";
551     }
552     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/var/service/ldap/run mezzanine_patched_e-smith-base+ldap-4.19.1/root/var/service/ldap/run
553     --- e-smith-base+ldap-4.19.1/root/var/service/ldap/run 2008-04-02 10:42:47.000000000 -0600
554     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/var/service/ldap/run 2008-04-02 10:42:01.000000000 -0600
555     @@ -38,7 +38,6 @@
556     fi
557     sed -e 's/objectClass: group/objectClass: posixGroup/' < $ldif | \
558     setuidgid ldap slapadd -c
559     - /etc/e-smith/events/actions/ldap-init-accounts
560     fi
561     fi
562    

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