diff options
-rwxr-xr-x | perl-install/standalone/drakgw | 76 |
1 files changed, 40 insertions, 36 deletions
diff --git a/perl-install/standalone/drakgw b/perl-install/standalone/drakgw index 862dc915f..762aa53f8 100755 --- a/perl-install/standalone/drakgw +++ b/perl-install/standalone/drakgw @@ -30,6 +30,7 @@ use detect_devices; use interactive; use network::network; use network::ethernet; +use run_program; use log; use c; use network::netconnect; @@ -80,13 +81,11 @@ sub start_daemons () { system("/etc/rc.d/init.d/named status >/dev/null 2>/dev/null") == 0 and sys("/etc/rc.d/init.d/named stop"); my $netscripts = '/etc/sysconfig/network-scripts'; - sys("$netscripts/net_cnx_down >/dev/null"); + sys("$netscripts/net_cnx_down >/dev/null") if cat_("$netscripts/net_cnx_down") !~ /network/; sys("/etc/rc.d/init.d/network restart >/dev/null"); - sys("$netscripts/net_cnx_up >/dev/null"); + sys("$netscripts/net_cnx_up >/dev/null") if cat_("$netscripts/net_cnx_down") !~ /network/; - sys("/etc/init.d/shorewall restart >/dev/null"); - - sys("/etc/rc.d/init.d/$_ start >/dev/null"), sys("/sbin/chkconfig --level 345 $_ on") foreach 'named', 'dhcpd', 'squid', 'shorewall'; + sys("/etc/rc.d/init.d/$_ start >/dev/null"), sys("/sbin/chkconfig --level 345 $_ on") foreach 'named', 'dhcpd', 'squid'; sys("/etc/rc.d/init.d/cups start >/dev/null") if $cups_used; } @@ -96,7 +95,6 @@ sub stop_daemons () { foreach (qw(dhcpd squid named)) { system("/etc/rc.d/init.d/$_ status >/dev/null 2>/dev/null") == 0 and sys("/etc/rc.d/init.d/$_ stop"); } - system("/etc/rc.d/init.d/shorewall status >/dev/null 2>/dev/null") == 0 and sys("/etc/rc.d/init.d/shorewall stop >/dev/null"); sys("/sbin/chkconfig --level 345 $_ off") foreach 'named', 'dhcpd', 'squid'; } @@ -119,10 +117,37 @@ begin: #- ********************************** #- * 0th step: verify if we are already set up -if ($shorewall && -f $masq_file && grep { !/^#/ } cat_("$masq_file")) { +if ($shorewall && -f $masq_file || -f "$masq_file.drakgwdisable" && grep { !/^#/ } cat_($masq_file) || grep { !/^#/ } cat_("$masq_file.drakgwdisable")) { $::Wizard_no_previous = 1; my $r; - if (!$shorewall->{disabled}) { + if (-f "$masq_file.drakgwdisable") { + $r = $in->ask_from_list_(N("Internet Connection Sharing currently disabled"), +N("The setup of Internet connection sharing has already been done. +It's currently disabled. + +What would you like to do?"), + [ N_("enable"), N_("reconfigure"), N_("dismiss") ]); + if ($r eq "enable") { + foreach ($dhcpd_conf, $squid_conf, $masq_file) { + rename($_, "$_.old") if -f $_; + rename("$_.drakgwdisable", $_) or die "Could not find configuration. Please reconfigure."; + }; + { + my $_wait_enabl = $in->wait_message('', N("Enabling servers...")); + start_daemons(); + print "add rules entries\n"; + substInFile { + s/#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/REDIRECT\tloc\t$squid_port\ttcp\twww\t-\nACCEPT\tfw\tnet\ttcp\twww\n#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/; + } "/etc/shorewall/rules"; + run_program::rooted($::prefix, 'chkconfig', '--add', 'shorewall'); + run_program::run('service', '>', '/dev/null', 'shorewall', 'restart') if $::isStandalone; + } + log::l("[drakgw] Enabled"); + } + $::Wizard_finished = 1; + $in->ask_okcancel('', N("Internet Connection Sharing is now enabled.")); + quit_global($in, 0); + } elsif (!$shorewall->{disabled}) { $r = $in->ask_from_list_(N("Internet Connection Sharing currently enabled"), N("The setup of Internet Connection Sharing has already been done. It's currently enabled. @@ -152,27 +177,6 @@ What would you like to do?"), if ($r eq "dismiss") { quit_global($in, 0); } - } else { - $r = $in->ask_from_list_(N("Internet Connection Sharing currently disabled"), -N("The setup of Internet connection sharing has already been done. -It's currently disabled. - -What would you like to do?"), - [ N_("enable"), N_("reconfigure"), N_("dismiss") ]); - if ($r eq "enable") { - foreach ($dhcpd_conf, $squid_conf, $masq_file) { - rename($_, "$_.old") if -f $_; - rename("$_.drakgwdisable", $_) or die "Could not find configuration. Please reconfigure."; - }; - { - my $_wait_enabl = $in->wait_message('', N("Enabling servers...")); - start_daemons(); - } - log::l("[drakgw] Enabled"); - } - $::Wizard_finished = 1; - $in->ask_okcancel('', N("Internet Connection Sharing is now enabled.")); - quit_global($in, 0); } if ($r eq "dismiss") { quit_global($in, 0); @@ -198,8 +202,6 @@ Note: you need a dedicated Network Adapter to set up a Local Area Network (LAN). step_detectsetup: -undef $::Wizard_no_previous; - my @configured_devices = map { /ifcfg-(\S+)/ } glob('/etc/sysconfig/network-scripts/ifcfg*'); my %aliased_devices; @@ -404,11 +406,6 @@ put_in_hash($shorewall ||= {}, { masquerade => { subnet => "$lan_address.0/$netmask" }, }); -network::shorewall::write($shorewall); -print "add rules entries\n"; -substInFile { - s/#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/REDIRECT\tloc\t$squid_port\ttcp\twww\t-\nACCEPT\tfw\tnet\ttcp\twww\n#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/; -} "/etc/shorewall/rules"; #- be sure that FORWARD_IPV4 is enabled in /etc/sysconfig/network @@ -578,6 +575,13 @@ if (-f $cups_conf && !$::testing) { start_daemons(); +network::shorewall::write($shorewall); +print "add rules entries\n"; +substInFile { + s/#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/REDIRECT\tloc\t$squid_port\ttcp\twww\t-\nACCEPT\tfw\tnet\ttcp\twww\n#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/; +} "/etc/shorewall/rules"; +run_program::rooted($::prefix, 'chkconfig', '--add', 'shorewall'); +run_program::run('service', '>', '/dev/null', 'shorewall', 'restart') if $::isStandalone; #- bye-bye message |