diff options
Diffstat (limited to 'perl-install/standalone')
-rwxr-xr-x | perl-install/standalone/drakgw | 126 |
1 files changed, 98 insertions, 28 deletions
diff --git a/perl-install/standalone/drakgw b/perl-install/standalone/drakgw index 2ebd926db..5b5e7e962 100755 --- a/perl-install/standalone/drakgw +++ b/perl-install/standalone/drakgw @@ -13,8 +13,6 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # -$drakgw_version = "0.9.0"; - use lib qw(/usr/lib/libDrakX); use common qw(:system :file); @@ -25,6 +23,7 @@ use c; local $_ = join '', @ARGV; /-h/ and die "usage: drakgw [--expert]\n"; +/-v/ and die "version: $Id$"; $::expert = /-expert/ || cat_("/etc/sysconfig/system") =~ /^TYPE="?expert/m; #" $::isStandalone = 1; @@ -32,12 +31,83 @@ $::isStandalone = 1; my $in = vnew interactive('su'); +my $drakgw_setup = "/etc/sysconfig/inet_sharing"; + +sub start_daemons() +{ + grep(/is running/, `/etc/rc.d/init.d/dhcpd status`) and ((system("/etc/rc.d/init.d/dhcpd stop") == 0) or die "Could not stop the dhcp server"); + grep(/Connection refused/, `/etc/rc.d/init.d/named status 2>&1`) or ((system("/etc/rc.d/init.d/named stop") == 0) or die "Could not stop the named server"); + (system("/etc/rc.d/init.d/network restart") == 0) or die "Could not restart the network"; + (system("/etc/rc.d/rc.firewall") == 0) or die "Could not start the firewall script"; + (system("/etc/rc.d/init.d/named start") == 0) or die "Could not start the caching nameserver"; + (system("/sbin/chkconfig --level 345 named on") == 0) or die "Could not chkconfig named"; + (system("/etc/rc.d/init.d/dhcpd start") == 0) or die "Could not start the dhcp server"; + (system("/sbin/chkconfig --level 345 dhcpd on") == 0) or die "Could not chkconfig dhcpd"; + + local *DRAKGW_SETUP; open DRAKGW_SETUP, ">$drakgw_setup" or die "Can't open $drakgw_setup"; + print DRAKGW_SETUP "INET_SHARING=enabled\n"; + close DRAKGW_SETUP; + 1; +} + + +sub stop_daemons() +{ + grep(/is running/, `/etc/rc.d/init.d/dhcpd status`) and ((system("/etc/rc.d/init.d/dhcpd stop") == 0) or die "Could not stop the dhcp server"); + grep(/Connection refused/, `/etc/rc.d/init.d/named status 2>&1`) or ((system("/etc/rc.d/init.d/named stop") == 0) or die "Could not stop the named server"); + (system("/sbin/chkconfig --level 345 named off") == 0) or die "Could not chkconfig named"; + (system("/sbin/chkconfig --level 345 dhcpd off") == 0) or die "Could not chkconfig dhcpd"; + + local *DRAKGW_SETUP; open DRAKGW_SETUP, ">$drakgw_setup" or die "Can't open $drakgw_setup"; + print DRAKGW_SETUP "INET_SHARING=disabled\n"; + close DRAKGW_SETUP; + 1; +} + + +#- ********************************** +#- * 0nd step: verify if we are already set up + +if (-f $drakgw_setup) +{ + open DRAKGW_SETUP, "$drakgw_setup" or die "Can't open $drakgw_setup"; + my @drakgw_setup_content = <DRAKGW_SETUP>; + close DRAKGW_SETUP; + + if (grep(/enabled/, @drakgw_setup_content)) + { + my $r = $in->ask_from_list(_("Internet Connection Sharing currently enabled"), + _("The setup of Internet connection sharing has already been done.\n". + "It's currently enabled.\n\n". + "What would you like to do?"), + [ "disable", "reconfigure", "dismiss" ]); + ($r eq "disable") and stop_daemons() and $in->exit(0); + ($r eq "dismiss") and $in->exit(0); + } + elsif (grep(/disabled/, @drakgw_setup_content)) + { + my $r = $in->ask_from_list(_("Internet Connection Sharing currently disabled"), + _("The setup of Internet connection sharing has already been done.\n". + "It's currently disabled.\n\n". + "What would you like to do?"), + [ "enable", "reconfigure", "dismiss" ]); + ($r eq "enable") and start_daemons() and $in->exit(0); + ($r eq "dismiss") and $in->exit(0); + } + else + { + $in->ask_warn("Unrecognized config file", _("Config file content could not be interpreted.")); + $in->exit(-1); + } +} + + + #- ********************************** #- * 1st step: detect/setup $in->ask_okcancel(_("Internet Connection Sharing"), - _("Your computer can be configured so that its Internet connection shall be shared ". - "with other computers.\n". + _("Your computer can be configured to share its Internet connection.\n\n". "Note: you need a dedicated Network Adapter to set up a Local Area Network (LAN).\n\n". "Would you like to setup the Internet Connection Sharing?"), 1) or $in->exit(0); @@ -86,8 +156,8 @@ my @all_cards = map { "Interface $_ (using module $aliased_devices{$_})" } (keys my $interface; if ($#all_cards == -1) { - $in->ask_warn(_("No NIC on your system!"), - _("No ethernet network adapter is currently configured on your\n". + $in->ask_warn(_("No network adapter on your system!"), + _("No ethernet network adapter is currently configured on your ". "system. Please run the hardware configuration tool.")); $in->exit(0); } @@ -101,8 +171,8 @@ elsif ($#all_cards == 0) else { $interface = $in->ask_from_list(_("Choose the network interface"), - _("Here are the configured network adapters on your system; please\n". - "choose which one to use to setup your Local Area Network."), + _("Please choose what network adapter will be connected to your\n". + "Local Area Network."), \@all_cards, ); defined $interface or $in->exit(0); @@ -115,7 +185,7 @@ my $device = $1; my $lan_address = "192.168.0.0"; $::expert and ($lan_address = $in->ask_from_entry(_("Local Area Network specification"), - _("You may now decide which class C network will be your LAN.\n"), + _("You may now decide which class C network to use.\n"), _("Network:"), $lan_address, ) or $in->exit(0)); ($lan_address =~ /^([0-9]+\.[0-9]+\.[0-9]+)\.0$/) or die "Invalid network.\n"; @@ -154,7 +224,7 @@ $in->ask_okcancel(_("Internet Connection Sharing - setup of $device"), #- ********************************** #- * 2nd step: configure -my $wait_configuring = $in->wait_message('Configuring...', _("Configuring scripts, installing software, starting daemons...")); +my $wait_configuring = $in->wait_message('Configuring...', _("Configuring scripts, installing software, starting servers...")); #- setup the /etc/sysconfig/network-script/ script @@ -205,11 +275,11 @@ print RCFIREWALL <<EOF; # RealAudio WILL function but in TCP mode. This can cause a reduction # in sound quality # -#/sbin/modprobe ip_masq_raudio +/sbin/modprobe ip_masq_raudio # Supports the masquerading of IRC DCC file transfers # -#/sbin/modprobe ip_masq_irc +/sbin/modprobe ip_masq_irc # Supports the masquerading of Quake and QuakeWorld by default. This modules is @@ -223,16 +293,16 @@ print RCFIREWALL <<EOF; #/sbin/modprobe ip_masq_quake # #Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960) -#/sbin/modprobe ip_masq_quake 26000,27000,27910,27960 +/sbin/modprobe ip_masq_quake 26000,27000,27910,27960 # Supports the masquerading of the CuSeeme video conferencing software # -#/sbin/modprobe ip_masq_cuseeme +/sbin/modprobe ip_masq_cuseeme #Supports the masquerading of the VDO-live video conferencing software # -#/sbin/modprobe ip_masq_vdolive +/sbin/modprobe ip_masq_vdolive #CRITICAL: Enable IP forwarding since it is disabled by default since @@ -331,6 +401,9 @@ close DHCPDCONF; #- put the interface for the dhcp server in linuxconf config, for the /etc script of dhcpd my $conf_linuxconf = "/etc/conf.linuxconf"; +-f $conf_linuxconf or system("urpmi --auto linuxconf"); +-f $conf_linuxconf or ($in->ask_warn('', _("Could not install linuxconf RPM with urpmi.")) and $in->exit(0)); + open CONF_LINUXCONF, "$conf_linuxconf" or die "Can't open $conf_linuxconf"; my @conf_linuxconf_content = <CONF_LINUXCONF>; close CONF_LINUXCONF; @@ -354,26 +427,23 @@ $f = "/var/named/named.local"; #- start the daemons -(system("/etc/rc.d/init.d/network restart") == 0) or die "Could not restart the network"; -(system("/etc/rc.d/rc.firewall") == 0) or die "Could not start the firewall script"; -grep(/is running/, `/etc/rc.d/init.d/dhcpd status`) and ((system("/etc/rc.d/init.d/dhcpd stop") == 0) or die "Could not stop the dhcp server"); -(system("/etc/rc.d/init.d/dhcpd start") == 0) or die "Could not start the dhcp server"; -(system("/sbin/chkconfig --level 345 dhcpd on") == 0) or die "Could not chkconfig dhcpd"; -grep(/Connection refused/, `/etc/rc.d/init.d/named status 2>&1`) or ((system("/etc/rc.d/init.d/named stop") == 0) or die "Could not stop the named server"); -(system("/etc/rc.d/init.d/named start") == 0) or die "Could not start the caching nameserver"; -(system("/sbin/chkconfig --level 345 named on") == 0) or die "Could not chkconfig named"; +start_daemons(); + +#- bye-bye message undef $wait_configuring; + +-f "/etc/sysconfig/ipchains" and $in->ask_warn(_("Firewalling configuration detected.!"), + _("Warning! An existing firewalling configuration has been detected.\n". + "It will probably override forwarding and masquerading configuration, please fix.")); + $in->ask_warn(_("Everything configured!"), _("Everything has been configured.\n". - "You may now connect computers on your Local Area Network,\n". - "using automatic DHCP network configuration.")); + "You may now share Internet connection with other computers on your Local Area Network, ". + "using automatic network configuration (DHCP).")); $in->exit(0); - -# 0.9.0 Thu Aug 17 15:03:40 2000 -# - first version |