summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/finish-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/standalone/finish-install')
-rwxr-xr-xperl-install/standalone/finish-install134
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);
+ }
+ }
+}