diff options
-rw-r--r-- | perl-install/network/netconnect.pm | 8 | ||||
-rw-r--r-- | perl-install/network/tools.pm | 52 | ||||
-rwxr-xr-x | perl-install/standalone/drakconnect | 4 | ||||
-rw-r--r-- | perl-install/standalone/net_applet | 9 | ||||
-rwxr-xr-x | perl-install/standalone/net_monitor | 8 |
5 files changed, 40 insertions, 41 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 } diff --git a/perl-install/standalone/drakconnect b/perl-install/standalone/drakconnect index 3b8393265..20f9638b2 100755 --- a/perl-install/standalone/drakconnect +++ b/perl-install/standalone/drakconnect @@ -94,9 +94,9 @@ my $int_connect = Gtk2::Button->new(N("Wait please")); $int_connect->set_sensitive(0); $int_connect->signal_connect(clicked => sub { if (!$isconnected) { - network::tools::start_interface($net->{net_interface}); + network::tools::start_net_interface($net, 1); } else { - network::tools::stop_interface($net->{net_interface}); + network::tools::stop_net_interface($net, 1); } }); diff --git a/perl-install/standalone/net_applet b/perl-install/standalone/net_applet index d8e72394e..03b5cba10 100644 --- a/perl-install/standalone/net_applet +++ b/perl-install/standalone/net_applet @@ -63,8 +63,8 @@ Run the \"%s\" assistant from the Mandriva Linux Control Center", N("Set up a ne ); my %actions = ( - 'upNetwork' => { name => sub { N("Connect %s", $_[0]) }, launch => \&network::tools::start_interface }, - 'downNetwork' => { name => sub { N("Disconnect %s", $_[0]) }, launch => \&network::tools::stop_interface }, + 'upNetwork' => { name => sub { N("Connect %s", $_[0]) }, launch => sub { network::tools::start_interface($_[0], 1) } }, + 'downNetwork' => { name => sub { N("Disconnect %s", $_[0]) }, launch => sub { network::tools::stop_interface($_[0], 1) } }, 'monitorNetwork' => { name => N("Monitor Network"), launch => sub { system("/usr/sbin/net_monitor --defaultintf $_[0] &") } }, 'wireless' => { name => N("Manage wireless networks"), launch => sub { system("/usr/sbin/drakroam &") } }, 'confNetwork' => { name => N("Configure Network"), launch => sub { system("/usr/sbin/drakconnect --skip-wizard &") } }, @@ -82,8 +82,9 @@ my %actions = ( choices => sub { network::network::netprofile_list() }, choice_selected => sub { $_[0] eq $net->{PROFILE} }, launch => sub { - $net->{PROFILE} = $_[0]; - network::tools::bg_command_as_root('/sbin/set-netprofile', $net->{PROFILE}); + require run_program; + $net->{PROFILE} = $_[0]; + run_program::raw({ detach => 1 }, network::tools::wrap_command_for_root('/sbin/set-netprofile', $net->{PROFILE})); } }, 'refresh' => { name => N("Refresh"), launch => sub { checkNetworkForce() } }, diff --git a/perl-install/standalone/net_monitor b/perl-install/standalone/net_monitor index e72e8e53a..1bef0f4d5 100755 --- a/perl-install/standalone/net_monitor +++ b/perl-install/standalone/net_monitor @@ -47,8 +47,8 @@ network::network::read_net_conf($net); $default_intf ||= $net->{default}{interface}; if ($force) { - $connect and network::tools::start_interface($default_intf); - $disconnect and network::tools::stop_interface($default_intf); + $connect and network::tools::start_interface($default_intf, 1); + $disconnect and network::tools::stop_interface($default_intf, 1); $connect = $disconnect = 0; } $quiet and exit(0); @@ -251,8 +251,8 @@ sub connection() { $tool_pid = $wasconnected == 1 - ? network::tools::stop_interface($default_intf) - : network::tools::start_interface($default_intf); + ? network::tools::stop_interface($default_intf, 1) + : network::tools::start_interface($default_intf, 1); } sub graph_window_width() { $width - $left_border } |