diff options
Diffstat (limited to 'perl-install/standalone/finish-install')
| -rwxr-xr-x | perl-install/standalone/finish-install | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/perl-install/standalone/finish-install b/perl-install/standalone/finish-install new file mode 100755 index 000000000..4d615762e --- /dev/null +++ b/perl-install/standalone/finish-install @@ -0,0 +1,134 @@ +#!/usr/bin/perl + +use lib qw(/usr/lib/libDrakX); + +use common; +use interactive; +use any; +use authentication; +use network::netconnect; +use security::level; + +$ENV{SHARE_PATH} ||= "/usr/share"; +my $authentication = authentication::get(); +my $security = security::level::get(); +network::netconnect::read_net_conf(my $netcnx = {}, my $netc = {}, my $intf = {}); + +$::isWizard = 1; +my $in = 'interactive'->vnew; + +sub ask_language() { + require lang; + my $locale = lang::read(); + any__selectLanguage_and_more_standalone($in, $locale); + lang::write($locale); + lang__set($locale); + Gtk2->set_locale; +} + +sub ask_keyboard() { + require keyboard; + my $keyboard = keyboard::read(); + + choose: + $keyboard->{KEYBOARD} = $in->ask_from_listf(N("Keyboard"), + N("Please, choose your keyboard layout."), + sub { translate(keyboard::KEYBOARD2text($_[0])) }, + [ keyboard::KEYBOARDs() ], + $keyboard->{KEYBOARD}) or return; + + keyboard::group_toggle_choose($in, $keyboard) or goto choose; + + keyboard::setxkbmap($keyboard); + eval { + my $xfree_conf = Xconfig::xfree->read; + my $xkb = keyboard::keyboard2full_xkb($keyboard); + $xfree_conf->set_keyboard($xkb); + $xfree_conf->write; + }; + + keyboard::write($keyboard); + system('/etc/init.d/keytable', 'restart'); +} + +sub ask_network() { + my $modules_conf = modules::any_conf->read; + modules::load_category($modules_conf, 'net'); + + require network::netconnect; + network::netconnect::real_main('', $netcnx, $in, $modules_conf, $netc, undef, $intf); +} + +sub ask_authentication() { + my $meta_class = { getVarsFromSh("/etc/sysconfig/system") }->{META_CLASS}; + + my $superuser = {}; + authentication::ask_root_password_and_authentication($in, $netc, $superuser, $authentication, $meta_class, $security); + authentication::set_root_passwd($superuser, $authentication); + + eval { + authentication::set($in, $netc, $authentication); + network::network::write_conf($netc); + }; + if (my $err = $@) { + $in->ask_warn(N("Error"), formatError($err)); + goto &ask_authentication; + } +} + +sub ask_users() { + my $users = []; + any::ask_users($in, $users, $security, []); + any::add_users($users, $authentication); +} + +sub call { + my ($f_name) = @_; + log::l("calling $f_name"); + my $f = $::{$f_name} or internal_error "bad function $f_name"; + eval { $f->() }; + log::l("$f_name failed: $@") if $@; +} + +call('ask_language'); +call('ask_keyboard'); +call('ask_network'); +$::WizardWindow->destroy; undef $::WizardWindow; +$::Wizard_pix_up = 'redhat-config-users'; +call('ask_authentication'); +call('ask_users'); +setVarsInSh('/etc/sysconfig/finish-install', { FINISH_INSTALL => 'no' }); + +$in->exit(0); + + +sub lang__set { + my ($locale) = @_; + put_in_hash(\%ENV, lang::i18n_env($locale)); + lang::bindtextdomain(); +} + +sub any__selectLanguage_and_more_standalone { + my ($in, $locale) = @_; + eval { + local $::isWizard = 1; + language: + # keep around previous settings so that selectLanguage can keep UTF-8 flag: + local $::Wizard_no_previous = 1; + my $old_lang = $locale->{lang}; + $in->{locale} = $locale; + $locale->{lang} = any::selectLanguage($in, $locale->{lang}); + $locale->{IM} = lang::get_default_im($locale->{lang}) if $old_lang ne $locale->{lang}; + undef $::Wizard_no_previous; + any::selectCountry($in, $locale) or goto language; + }; + if ($@) { + if ($@ =~ /^one lang only/) { + any::selectCountry($in, $locale) or $in->exit(0); + } elsif ($@ !~ /wizcancel/) { + die; + } else { + $in->exit(0); + } + } +} |
