diff options
Diffstat (limited to 'perl-install/network')
-rw-r--r-- | perl-install/network/netconnect.pm | 8 | ||||
-rw-r--r-- | perl-install/network/tools.pm | 52 |
2 files changed, 29 insertions, 31 deletions
diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm index 6b1672ad3..76fd01044 100644 --- a/perl-install/network/netconnect.pm +++ b/perl-install/network/netconnect.pm @@ -1272,9 +1272,9 @@ It is not necessary on most networks."), if ($a) { # local $::isWizard = 0; my $_w = $in->wait_message('', N("Testing your connection..."), 1); - network::tools::disconnect_backend($net); + network::tools::stop_net_interface($net, 0); sleep 1; - network::tools::connect_backend($net); + network::tools::start_net_interface($net, 1); my $s = 30; $type =~ /modem/ and $s = 50; $type =~ /adsl/ and $s = 35; @@ -1361,12 +1361,12 @@ sub start_internet { #- give a chance for module to be loaded using kernel-BOOT modules... #- FIXME, this has nothing to do there $::isStandalone or modules::load_category($o->{modules_conf}, 'network/*'); - network::tools::start_interface($o->{net}{net_interface}); + network::tools::start_net_interface($o->{net}, 1); } sub stop_internet { my ($o) = @_; - network::tools::stop_interface($o->{net}{net_interface}); + network::tools::stop_net_interface($o->{net}, 1); } 1; diff --git a/perl-install/network/tools.pm b/perl-install/network/tools.pm index 1d15b50c0..4be315700 100644 --- a/perl-install/network/tools.pm +++ b/perl-install/network/tools.pm @@ -48,43 +48,41 @@ sub passwd_by_login { } } -sub connect_backend { - my ($net) = @_; - run_program::raw({ detach => 1, root => $::prefix }, "/sbin/ifup", $net->{net_interface}); -} - -sub disconnect_backend { - my ($net) = @_; - run_program::raw({ detach => 1, root => $::prefix }, "/sbin/ifdown", $net->{net_interface}); -} - -sub bg_command_as_root { +sub wrap_command_for_root { my ($name, @args) = @_; #- FIXME: duplicate code from common::require_root_capability - if (check_for_xserver() && fuzzy_pidofs(qr/\bkwin\b/) > 0) { - run_program::raw({ detach => 1 }, "kdesu", "--ignorebutton", "-c", "$name @args"); - } else { - run_program::raw({ detach => 1 }, [ 'consolehelper', $name ], @args); - } + check_for_xserver() && fuzzy_pidofs(qr/\bkwin\b/) > 0 ? + ("kdesu", "--ignorebutton", "-c", "$name @args") : + ([ 'consolehelper', $name ], @args); } -sub user_run_interface_command { - my ($command, $intf) = @_; - if (system("/usr/sbin/usernetctl $intf report") == 0) { - run_program::raw({ detach => 1 }, $command, $intf); - } else { - bg_command_as_root($command, $intf); - } +sub run_interface_command { + my ($command, $intf, $detach) = @_; + my @command = + !$> || system("/usr/sbin/usernetctl $intf report") == 0 ? + ($command, $intf) : + wrap_command_for_root($command, $intf); + run_program::raw({ detach => $detach, root => $::prefix }, @command); } sub start_interface { - my ($intf) = @_; - user_run_interface_command('/sbin/ifup', $intf); + my ($intf, $detach) = @_; + run_interface_command('/sbin/ifup', $intf, $detach); } sub stop_interface { - my ($intf) = @_; - user_run_interface_command('/sbin/ifdown', $intf); + my ($intf, $detach) = @_; + run_interface_command('/sbin/ifdown', $intf, $detach); +} + +sub start_net_interface { + my ($net, $detach) = @_; + start_interface($net->{net_interface}, $detach); +} + +sub stop_net_interface { + my ($net, $detach) = @_; + stop_interface($net->{net_interface}, $detach); } sub connected() { gethostbyname("mandrakesoft.com") ? 1 : 0 } |