diff options
author | Mystery Man <unknown@mandriva.org> | 2000-11-08 00:01:16 +0000 |
---|---|---|
committer | Mystery Man <unknown@mandriva.org> | 2000-11-08 00:01:16 +0000 |
commit | d5c526273db473a7d87a26000585900fc10dda7d (patch) | |
tree | 0fdaabe7a00921b6cc556601b103d344fc7ac781 /perl-install/any.pm | |
parent | 9c164312d4bfff6d93e1c4529de6b992f2bebc44 (diff) | |
download | drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.gz drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.bz2 drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.xz drakx-d5c526273db473a7d87a26000585900fc10dda7d.zip |
This commit was manufactured by cvs2svn to create branch
'unlabeled-1.1.1'.
Diffstat (limited to 'perl-install/any.pm')
-rw-r--r-- | perl-install/any.pm | 243 |
1 files changed, 11 insertions, 232 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm index 1c0d9c368..5b2fef5c3 100644 --- a/perl-install/any.pm +++ b/perl-install/any.pm @@ -2,257 +2,36 @@ package any; use diagnostics; use strict; -use vars qw(@users); #-###################################################################################### #- misc imports #-###################################################################################### -use common qw(:common :system :file :functional); -use commands; -use detect_devices; -use fsedit; -use run_program; -use log; +use common qw(:file :system :common :functional); -#-PO: names (tie, curly...) have corresponding icons for kdm -my @users_male = (__("tie"), __("default"), __("curly")); #- don't change the names, files correspond to them -my @users_female = (__("brunette"), __("girl"), __("woman-blond")); -@users = (@users_male, @users_female, __("automagic")); - -sub addKdmIcon { - my ($prefix, $user, $icon, $force) = @_; - my $dest = "$prefix/usr/share/apps/kdm/pics/users/$user.xpm"; - unlink $dest if $force; - eval { commands::cp("$prefix/usr/share/icons/user-$icon-mdk.xpm", $dest) } if $icon; -} - -sub allocUsers { +sub addKdmUsers { my ($prefix, @users) = @_; require timezone; - my @u1 = @users_male; - my @u2 = @users_female; - foreach (grep { !$_->{icon} || $_->{icon} eq "automagic" } @users) { + my @u1 = my @users_male = qw(tie default curly); + my @u2 = my @users_female = qw(brunette girl woman-blond); + foreach (@users) { my $l = rand() < timezone::sexProb($_->{name}) ? \@u2 : \@u1; - $_->{auto_icon} = splice(@$l, rand(@$l), 1); #- known biased (see cookbook for better) + my $u = splice(@$l, rand(@$l), 1); #- known biased (see cookbook for better) + symlink "../../../../icons/user-$u-mdk.xpm", "$prefix/usr/share/apps/kdm/pics/users/$_.xpm"; @u1 = @users_male unless @u1; @u2 = @users_female unless @u2; } + symlinkf "../../../../icons/user-hat-mdk.xpm", "$prefix/usr/share/apps/kdm/pics/users/root.xpm" unless $::isStandalone; } sub addUsers { my ($prefix, @users) = @_; my $msec = "$prefix/etc/security/msec"; - - allocUsers($prefix, @users); foreach my $u (@users) { - substInFile { s/^$u->{name}\n//; $_ .= "$u->{name}\n" if eof } "$msec/user.conf" if -d $msec; - addKdmIcon($prefix, $u->{name}, delete $u->{auto_icon} || $u->{icon}, 'force'); - } - run_program::rooted($prefix, "/usr/share/msec/grpuser.sh --refresh"); - addKdmIcon($prefix, 'root', 'hat', 'force'); -} - -sub crypt { - my ($password, $md5) = @_; - $md5 ? - c::crypt_md5($password, salt(8)) : - crypt ($password, salt(2)); -} -sub enableShadow { - my ($prefix) = @_; - run_program::rooted($prefix, "pwconv") or log::l("pwconv failed"); - run_program::rooted($prefix, "grpconv") or log::l("grpconv failed"); -} -sub enableMD5Shadow { - my ($prefix, $shadow, $md5) = @_; - substInFile { - if (/^password.*pam_pwdb.so/) { - s/\s*shadow//; s/\s*md5//; - s/$/ shadow/ if $shadow; - s/$/ md5/ if $md5; - } - } grep { -r $_ } map { "$prefix/etc/pam.d/$_" } qw(login rlogin passwd); -} - -sub setupBootloader { - my ($in, $b, $hds, $fstab, $security, $prefix, $more) = @_; - - $more++ if $b->{bootUnsafe}; - - if ($::beginner && $more >= 1) { - my @l = (__("First sector of drive (MBR)"), __("First sector of boot partition")); - - $in->set_help('setupBootloaderBeginner') unless $::isStandalone; - if (arch() =~ /sparc/) { - $b->{use_partition} = $in->ask_from_list_(_("SILO Installation"), - _("Where do you want to install the bootloader?"), - \@l, $l[$b->{use_partition}]); - } else { - my $boot = $hds->[0]{device}; - my $onmbr = "/dev/$boot" eq $b->{boot}; - $b->{boot} = "/dev/" . ($in->ask_from_list_(_("LILO/grub Installation"), - _("Where do you want to install the bootloader?"), - \@l, $l[!$onmbr]) eq $l[0] - ? $boot : fsedit::get_root($fstab, 'boot')->{device}); - } - } elsif ($more || !$::beginner) { - $in->set_help(arch() =~ /sparc/ ? "setupSILOGeneral" : "setupBootloaderGeneral") unless $::isStandalone; #- TO MERGE ? - - if ($::expert) { - my $default = arch() =~ /sparc/ ? 'silo' : 'grub'; - my $m = $in->ask_from_list_('', _("Which bootloader(s) do you want to use?"), [ keys(%{$b->{methods}}), __("None") ], $default) or return; - $b->{methods}{$_} = 0 foreach keys %{$b->{methods}}; - $b->{methods}{$m} = 1 if $m ne "None"; - } - #- at least one method - grep_each { $::b } %{$b->{methods}} or return; - - #- put lilo if grub is chosen, so that /etc/lilo.conf is generated - exists $b->{methods}{lilo} and $b->{methods}{lilo} = 1 if $b->{methods}{grub}; - - my @silo_install_lang = (_("First sector of drive (MBR)"), _("First sector of boot partition")); - my $silo_install_lang = $silo_install_lang[$b->{use_partition}]; - my @l = ( -arch() =~ /sparc/ ? ( -_("Bootloader installation") => { val => \$silo_install_lang, list => \@silo_install_lang, not_edit => 1 }, -) : ( -_("Boot device") => { val => \$b->{boot}, list => [ map { "/dev/$_" } (map { $_->{device} } @$hds, @$fstab), detect_devices::floppies() ], not_edit => !$::expert }, -_("LBA (doesn't work on old BIOSes)") => { val => \$b->{lba32}, type => "bool", text => "lba" }, -_("Compact") => { val => \$b->{compact}, type => "bool", text => _("compact") }, -_("Video mode") => { val => \$b->{vga}, list => [ keys %bootloader::vga_modes ], not_edit => $::beginner }, -), -_("Delay before booting default image") => \$b->{timeout}, -$security < 4 ? () : ( -_("Password") => { val => \$b->{password}, hidden => 1 }, -_("Password (again)") => { val => \$b->{password2}, hidden => 1 }, -_("Restrict command line options") => { val => \$b->{restricted}, type => "bool", text => _("restrict") }, -) - ); - @l = @l[0..3] unless $::expert; #- take "bootloader installation" and "delay before ..." on SPARC. - - $b->{vga} ||= 'Normal'; - $in->ask_from_entries_refH('', _("Bootloader main options"), \@l, - complete => sub { -#- $security > 4 && length($b->{password}) < 6 and $in->ask_warn('', _("At this level of security, a password (and a good one) in lilo is requested")), return 1; - $b->{restricted} && !$b->{password} and $in->ask_warn('', _("Option ``Restrict command line options'' is of no use without a password")), return 1; - $b->{password} eq $b->{password2} or !$b->{restricted} or $in->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return 1; - 0; - } - ) or return 0; - $b->{use_partition} = $silo_install_lang eq _("First sector of drive (MBR)") ? 0 : 1; - $b->{vga} = $bootloader::vga_modes{$b->{vga}} || $b->{vga}; + substInFile { s/^$u\n//; $_ .= "$u\n" if eof } "$msec/user.conf" if -d $msec; } + run_program::rooted($prefix, "/etc/security/msec/init-sh/grpuser.sh --refresh"); - until ($::beginner && $more <= 1) { - $in->set_help(arch() =~ /sparc/ ? 'setupSILOAddEntry' : 'setupBootloaderAddEntry') unless $::isStandalone; - my $c = $in->ask_from_listf([''], -_("Here are the different entries. -You can add some more or change the existing ones."), - sub { - my ($e) = @_; - ref $e ? - "$e->{label} ($e->{kernel_or_dev})" . ($b->{default} eq $e->{label} && " *") : - translate($e); - }, - [ @{$b->{entries}}, __("Add"), __("Done") ]); - - $c eq "Done" and last; - - my ($e); - - if ($c eq "Add") { - my @labels = map { $_->{label} } @{$b->{entries}}; - my $prefix; - if ($in->ask_from_list_('', _("Which type of entry do you want to add?"), - [ __("Linux"), arch() =~ /sparc/ ? __("Other OS (SunOS...)") : __("Other OS (windows...)") ] - ) eq "Linux") { - $e = { type => 'image', - root => '/dev/' . fsedit::get_root($fstab)->{device}, #- assume a good default. - }; - $prefix = "linux"; - } else { - $e = { type => 'other' }; - $prefix = arch() =~ /sparc/ ? "sunos" : "windows"; - } - $e->{label} = $prefix; - for (my $nb = 0; member($e->{label}, @labels); $nb++) { $e->{label} = "$prefix-$nb" } - } else { - $e = $c; - } - my %old_e = %$e; - my $default = my $old_default = $e->{label} eq $b->{default}; - - my @l; - if ($e->{type} eq "image") { - @l = ( -_("Image") => { val => \$e->{kernel_or_dev}, list => [ eval { map { s/$prefix//; $_ } glob_("$prefix/boot/vmlinuz*") } ] }, -_("Root") => { val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @$fstab ], not_edit => !$::expert }, -_("Append") => \$e->{append}, -_("Initrd") => { val => \$e->{initrd}, list => [ eval { map { s/$prefix//; $_ } glob_("$prefix/boot/initrd*") } ] }, -_("Read-write") => { val => \$e->{'read-write'}, type => 'bool' } - ); - @l = @l[0..5] unless $::expert; - } else { - @l = ( -_("Root") => { val => \$e->{kernel_or_dev}, list => [ map { "/dev/$_->{device}" } @$fstab ], not_edit => !$::expert }, -arch() !~ /sparc/ ? ( -_("Table") => { val => \$e->{table}, list => [ '', map { "/dev/$_->{device}" } @$hds ], not_edit => !$::expert }, -_("Unsafe") => { val => \$e->{unsafe}, type => 'bool' } -) : (), - ); - @l = @l[0..1] unless $::expert; - } - @l = ( -_("Label") => \$e->{label}, -@l, -_("Default") => { val => \$default, type => 'bool' }, - ); - - if ($in->ask_from_entries_refH($c eq "Add" ? '' : ['', _("Ok"), _("Remove entry")], - '', \@l, - complete => sub { - $e->{label} or $in->ask_warn('', _("Empty label not allowed")), return 1; - member($e->{label}, map { $_->{label} } grep { $_ != $e } @{$b->{entries}}) and $in->ask_warn('', _("This label is already used")), return 1; - 0; - })) { - $b->{default} = $old_default || $default ? $default && $e->{label} : $b->{default}; - require bootloader; - bootloader::configure_entry($prefix, $e); #- hack to make sure initrd file are built. - - push @{$b->{entries}}, $e if $c eq "Add"; - } else { - @{$b->{entries}} = grep { $_ != $e } @{$b->{entries}}; - } - } - 1; -} - -sub setAutologin { - my ($prefix, $user, $wm) = @_; - my $f = "$prefix/etc/X11/xdm/xdm_config"; - my $t1 = "DisplayManager._0.autoUser:"; - my $t2 = "DisplayManager._0.autoString:"; - substInFile { s/^(\Q$t1\E|\Q$t2\E).*\n//; $_ .= "$t1\t$user\n$t2\t$wm\n" if eof && $user } $f; - # (dam's) : a patch for gdm is being done. + addKdmUsers($prefix, @users); } - -sub writeandclean_ldsoconf { - my ($prefix) = @_; - my $file = "$prefix/etc/ld.so.conf"; - - log::l("before: ", cat_($file)); - output $file, - grep { !m|^(/usr)?/lib$| } #- no need to have /lib and /usr/lib in ld.so.conf - uniq cat_($file), "/usr/X11R6/lib\n"; - log::l("after: ", cat_($file)); -} - -sub shells { - my ($prefix) = @_; - grep { -x "$prefix$_" } map { chomp; $_ } cat_("$prefix/etc/shells"); -} - - - 1; |