Author: justin
Date: 2005-08-27 23:06:17 -0600 (Sat, 27 Aug 2005)
New Revision: 600

Modified:
   ppc/trunk/scripts/net-setup
   x86/branches/utf8-newmake/scripts/net-setup
   x86/branches/utf8/scripts/net-setup
   x86_64/trunk/scripts/net-setup
Log:
Sync net-setup script from trunk to ppc, utf8, utf8-newmake and x86_64 
branches/arches.

Modified: ppc/trunk/scripts/net-setup
===================================================================
--- ppc/trunk/scripts/net-setup 2005-08-27 16:14:47 UTC (rev 599)
+++ ppc/trunk/scripts/net-setup 2005-08-28 05:06:17 UTC (rev 600)
@@ -1,185 +1,436 @@
 #!/bin/bash
 #
-# Script for interactively choosing a network service
-# and starting eth0 on the LFS 6.0 bootcd.
+# Script for interactively choosing a network interface, 
+# service and configuring this service.  First implemented
+# in the x86-6.0-1 CD.
 #
 # Written by Jeremy Huntwork 09.17.2004
+# Additional features by Justin Knierim with the help
+#   of Alexander Patrakov 08.08.05
 #
 
+# Locations of network configs, ifup and ifdown
 DIR=/etc/sysconfig/network-devices
-ETH0CFG=$DIR/ifconfig.eth0
 IFUP=$DIR/ifup
 IFDOWN=$DIR/ifdown
-LINKTEST=`ip link show eth0 2> /dev/null`
-GREETING="Let's configure your network device!"
 
-# Function to set nameservers in /etc/resolv.conf
-# Allows user to enter any number of nameservers,
-# exits when user types "done"
+# Set variables after network device is selected
+set_devvars(){
+       ETHXCFG=$DIR/ifconfig.$DEV
+       LINKTEST=`/sbin/ip link show $DEV 2> /dev/null`
+}
 
+# Form to enter nameservers for /etc/resolv.conf
 set_dns(){
+       DLG_COMMAND="dialog --title \"DNS Servers - /etc/resolv.conf\" 
--no-cancel \
+        --form \"Please enter the DNS IP addresses below:\" 0 0 3 \
+       \"Server 1:\" 1 1 \"$F_DNS1\" 1 25 15 0 \
+       \"Server 2:\" 2 1 \"$F_DNS2\" 2 25 15 0 \
+       \"Server 3:\" 3 1 \"$F_DNS3\" 3 25 15 0"
+       SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       echo "Enter a DNS server: "
-       echo "(Enter server addresses, one per line in order of preference, and 
type \"done\" when finished."
-       read DNS
-       counter=0
-       while [ $DNS != "done" ]
-       do
-               # Check that user enters four numbers separated by '.'
-               if [ -z "$DNS" -o -n "${DNS##?*.?*.?*.?*}" ] ; then
-                       echo "$DNS is not a valid nameserver address."
-               else
-                       # If this is the first entry, overwrite any existing
-                       # /etc/resolv.conf, else append.
-                       if [ $counter -eq 0 ] ; then
-                               echo "nameserver $DNS" > /etc/resolv.conf
-                       else 
-                               echo "nameserver $DNS" >> /etc/resolv.conf
-                       fi
-               fi
-               read DNS
-               counter=`expr $counter + 1`
-       done
-}              
+       STATUS=$?
+       if [ "$STATUS" -ne 0 ] ; then
+               exit 1
+       fi
 
-set_static_ip(){
-       echo "Enter your IP address:"
-       read IP
-       if [ -z "$IP" -o -n "${IP##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$IP is not a valid IP address."
-               set_static_ip;
+       unset F_DNS1 F_DNS2 F_DNS3
+       eval "`echo "$SELECTION" | sed -e '1s,^,F_DNS1=",' -e '2s,^,F_DNS2=",' \
+             -e '3s,^,F_DNS3=",' | sed -e 's,$,",'`"
+
+       # Validate DNS IP addresses
+       DNS_OK=1
+       if [ -n "$F_DNS1" -a "${F_DNS1##?*.?*.?*.?*}" ] || \
+          [ -n "$F_DNS2" -a "${F_DNS2##?*.?*.?*.?*}" ] || \
+          [ -n "$F_DNS3" -a "${F_DNS3##?*.?*.?*.?*}" ] ; then
+                DNS_OK=0
+               DNS_ERRMSG="One of the entered IP addresses is not valid."
+        fi
+
+       if [ "$DNS_OK" -eq 1 ] ; then
+               rm -f /etc/resolv.conf
+               [ -n "$F_DNS1" ] && echo "nameserver $F_DNS1" >> 
/etc/resolv.conf
+               [ -n "$F_DNS2" ] && echo "nameserver $F_DNS2" >> 
/etc/resolv.conf
+               [ -n "$F_DNS3" ] && echo "nameserver $F_DNS3" >> 
/etc/resolv.conf
+
+               unset F_DNS1 F_DNS2 F_DNS3 SELECTION DLG_COMMAND STATUS
+               unset DNS_OK DNS_ERRMSG
        else
-               echo "IP=$IP" >> $ETH0CFG
+               DLG_COMMAND="dialog --title \"DNS IP Validation Error\" \
+               --msgbox \"$DNS_ERRMSG\" 6 60"
+               eval $DLG_COMMAND
+               set_dns;        
        fi
-}
+}              
 
-set_static_gateway(){
-       echo "Enter your default gateway:"
-       read GTWY
-       if [ -z "$GTWY" -o -n "${GTWY##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$GTWY is not a valid default gateway."
-               set_static_gateway;
-       else
-               echo "GATEWAY=$GTWY" >> $ETH0CFG
+# Setup IP address, prefix, gateway and broadcast
+set_static_cfg(){
+       # Default values (only apply on first run-through, meaning SIP_OK 
doesn't exist)
+       if [ -z "$SIP_OK" ] ; then
+               F_PREFIX=24
        fi
-}
 
-set_static_prefix(){
-       echo "Enter your prefix: "
-       echo "(This determines your subnet mask. For example, a prefix of 24 
would give you a subnet mask of 255.255.255.0)"
-       read PRFX
-       # First verify that user has entered a prefix, and not just pressed 
'Enter'
-       if [ $PRFX ] ; then
-               # Check that prefix is a value between 8 & 30
-               if [ "$PRFX" -lt 8 -o "$PRFX" -gt 30 ] ; then
-                       echo ""
-                       echo "$PRFX is not a valid prefix."
-                       set_static_prefix;
-               else
-                       echo "PREFIX=$PRFX" >> $ETH0CFG
-               fi
+        DLG_COMMAND="dialog --title \"Static IP Configuration\" --no-cancel \
+        --form \"Please enter the network connection details:\" 0 0 4 \
+        \"IP Address:\" 1 1 \"$F_IPADDR\" 1 25 15 0 \
+        \"Prefix:\" 2 1 \"$F_PREFIX\" 2 25 2 0 \
+        \"Broadcast:\" 3 1 \"$F_BROADCAST\" 3 25 15 0 \
+       \"Gateway:\" 4 1 \"$F_GATEWAY\" 4 25 15 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+       unset F_IPADDR F_PREFIX F_BROADCAST F_GATEWAY
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_IPADDR=",' -e 
'2s,^,F_PREFIX=",' \
+              -e '3s,^,F_BROADCAST=",' -e '4s,^,F_GATEWAY=",' | sed -e 
's,$,",'`"
+
+        # Validate entries (Must give IP, prefix and broadcast.  Gateway 
optional.)
+        SIP_OK=1
+        if [ -n "$F_IPADDR" -a "${F_IPADDR##?*.?*.?*.?*}" ] || \
+           [ -n "$F_BROADCAST" -a "${F_BROADCAST##?*.?*.?*.?*}" ] || \
+           [ -n "$F_GATEWAY" -a "${F_GATEWAY##?*.?*.?*.?*}" ] ; then
+                SIP_OK=0
+               SIP_ERRMSG="One of the entered IP addresses or prefix is not 
valid."
+       fi
+       if [ "$F_PREFIX" -lt 8 -o "$F_PREFIX" -gt 30 ] ; then
+               SIP_OK=0
+               SIP_ERRMSG="The prefix is not valid.  Please enter a value from 
8 to 30."
+       fi
+       if [ -z "$F_IPADDR" -o -z "$F_BROADCAST" -o -z "$F_PREFIX" ] ; then
+               SIP_OK=0
+               SIP_ERRMSG="Please enter an IP address, broadcast and prefix."  
        
+        fi
+
+        if [ "$SIP_OK" -eq 1 ] ; then
+                echo "IP=$F_IPADDR" >> $ETHXCFG
+               echo "PREFIX=$F_PREFIX" >> $ETHXCFG
+               echo "BROADCAST=$F_BROADCAST" >> $ETHXCFG
+               [ -n "$F_GATEWAY" ] && echo "GATEWAY=$F_GATEWAY" >> $ETHXCFG
+
+                unset F_IPADDR F_PREFIX F_BROADCAST F_GATEWAY DLG_COMMAND 
STATUS
+                unset SELECTION SIP_OK SIP_ERRMSG
        else
-               echo "Prefix cannot be empty."
-               echo ""
-               set_static_prefix;
+                DLG_COMMAND="dialog --title \"Static IP Validation Error\" \
+                --msgbox \"$SIP_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_static_cfg;
        fi
 }
 
-set_static_broadcast(){
-       echo "Enter your broadcast address: "
-       read BRDCST
-       if [ -z "$BRDCST" -o -n "${BRDCST##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$BRDCST is not a valid broadcast address."
-               set_static_broadcast;
-       else
-               echo "BROADCAST=$BRDCST" >> $ETH0CFG
+# GPRS Device options
+set_gprs_cfg(){
+        # Default values (only apply on first run-through, meaning GPRS_OK 
doesn't exist)
+        if [ -z "$GPRS_OK" ] ; then
+                F_DEVICE=/dev/ttyS1
+                F_SPEED=115200
+               F_SETTING=1
+        fi
+
+        DLG_COMMAND="dialog --title \"GPRS Device Configuration\" --no-cancel \
+        --form \"Please enter the GPRS device details below. The default value 
for the setting number is 1.\" 0 0 4 \
+        \"APN:\" 1 1 \"$F_APN\" 1 25 30 0 \
+        \"Device:\" 2 1 \"$F_DEVICE\" 2 25 20 0 \
+        \"Speed:\" 3 1 \"$F_SPEED\" 3 25 10 0 \
+       \"Setting Number:\" 4 1 \"$F_SETTING\" 4 25 4 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+       unset F_APN F_DEVICE F_SPEED F_SETTING
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_APN=",' -e 
'2s,^,F_DEVICE=",' \
+              -e '3s,^,F_SPEED=",' -e '4s,^,F_SETTING=",' | sed -e 's,$,",'`"
+
+        # Validate entries (All values are required.)
+        GPRS_OK=1
+       if [ -z "$F_APN" -o -z "$F_DEVICE" -o -z "$F_SPEED" -o -z "$F_SETTING" 
] ; then
+               GPRS_OK=0
+               GPRS_ERRMSG="All fields are required to setup your GPRS device."
        fi
+
+        if [ "$GPRS_OK" -eq 1 ] ; then
+               # Make a backup and restore before changes, so the sed's work 
correctly.
+               [ -f /etc/ppp/peers/gprs.orig ] || cp /etc/ppp/peers/gprs 
/etc/ppp/peers/gprs.orig
+               [ -f /etc/ppp/gprs.chat.orig ] || cp /etc/ppp/gprs.chat 
/etc/ppp/gprs.chat.orig
+               cp /etc/ppp/peers/gprs.orig /etc/ppp/peers/gprs
+               cp /etc/ppp/gprs.chat.orig /etc/ppp/gprs.chat
+
+               # Alter /etc/ppp/peers/gprs file.
+               sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e 
"s@/dev/[EMAIL PROTECTED]@g" \
+                      -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" 
/etc/ppp/peers/gprs
+
+               # Alter /etc/ppp/gprs.chat (advanced setting)
+               sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" \
+                       -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" 
/etc/ppp/gprs.chat
+
+                unset F_APN F_DEVICE F_SPEED F_SETTING DLG_COMMAND STATUS
+                unset SELECTION GPRS_OK GPRS_ERRMSG
+        else
+                DLG_COMMAND="dialog --title \"GPRS Validation Error\" \
+                --msgbox \"$GPRS_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_gprs_cfg;
+        fi
 }
 
-# Main function. Presents user with a choice of
-# static or dhcp and attempts to bring up eth0
+# Modem Device options
+set_modem_cfg(){
+        # Default values (only apply on first run-through, meaning MODEM_OK 
doesn't exist)
+        if [ -z "$MODEM_OK" ] ; then
+                F_DEVICE=/dev/ttyS1
+                F_SPEED=115200
+        fi
 
-choose_service(){
+        DLG_COMMAND="dialog --title \"Modem Configuration\" --no-cancel \
+        --form \"Please enter the modem details below:\" 0 0 5 \
+        \"Telephone Number:\" 1 1 \"$F_PHONE\" 1 25 20 0 \
+        \"User:\" 2 1 \"$F_USERNAME\" 2 25 30 0 \
+        \"Password:\" 3 1 \"$F_PASSWORD\" 3 25 30 0 \
+        \"Device:\" 4 1 \"$F_DEVICE\" 4 25 20 0 \
+        \"Speed:\" 5 1 \"$F_SPEED\" 5 25 10 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+        unset F_PHONE F_USERNAME F_PASSWORD F_DEVICE F_SPEED
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_PHONE=",' -e 
'2s,^,F_USERNAME=",' \
+              -e '3s,^,F_PASSWORD=",' -e '4s,^,F_DEVICE=",' -e 
'5s,^,F_SPEED=",' | sed -e 's,$,",'`"
+
+        # Validate entries (All values except password are required.)
+        MODEM_OK=1
+        if [ -z "$F_PHONE" -o -z "$F_USERNAME" -o -z "$F_DEVICE" -o -z 
"$F_SPEED" ] ; then
+                MODEM_OK=0
+                MODEM_ERRMSG="The telephone number, username, device and speed 
are required fields."
+        fi
+
+        if [ "$MODEM_OK" -eq 1 ] ; then
+                # Make a backup and restore before changes, so the sed's work 
correctly.
+                [ -f /etc/ppp/peers/dialup.orig ] || cp /etc/ppp/peers/dialup 
/etc/ppp/peers/dialup.orig
+                [ -f /etc/ppp/pap-secrets.orig ] || cp /etc/ppp/pap-secrets 
/etc/ppp/pap-secrets.orig
+                cp /etc/ppp/peers/dialup.orig /etc/ppp/peers/dialup
+                cp /etc/ppp/pap-secrets.orig /etc/ppp/pap-secrets
+
+                # Alter /etc/ppp/peers/dialup file.
+                sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e 
"s@/dev/[EMAIL PROTECTED]@g" \
+                       -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e "[EMAIL 
PROTECTED]"jdoe\"@\"$F_USERNAME\"@g" \
+                      /etc/ppp/peers/dialup
+
+                # Alter /etc/ppp/pap-secrets
+               echo $F_USERNAME dialup $F_PASSWORD >> /etc/ppp/pap-secrets
+
+                unset F_PHONE F_USERNAME F_PASSWORD F_DEVICE F_SPEED 
DLG_COMMAND STATUS
+                unset SELECTION MODEM_OK MODEM_ERRMSG
+        else
+                DLG_COMMAND="dialog --title \"Modem Validation Error\" \
+                --msgbox \"$MODEM_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_modem_cfg;
+        fi
+}
+
+# Main Menu for Network Devices
+net_service_menu(){
        # Remove previous config, so ifup won't get confused.
-       rm -f $ETH0CFG
+       rm -f $ETHXCFG
 
-       echo ""
-       echo "What type of service should eth0 use?"
-       echo "(static, dhcp or pppoe)"
-       read SERVICE
+       unset ARGS
+       ARGS="$ARGS dhcp \"Acquire IP address through dhcp.\""
+       ARGS="$ARGS static \"Enter a static IP Address.\""
+       ARGS="$ARGS pppoe \"Setup an ADSL connection.\""
 
-case "$SERVICE" in
+       DLG_COMMAND="dialog --title \"Select network service\" --default-item 
dhcp \
+               --menu \"Select the network service to use for the $DEV 
interface:\" \
+               0 0 0 $ARGS"
+       SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       dhcp) 
-               echo "SERVICE=dhcpcd" > $ETH0CFG
-               echo "DHCP_START=\"\"" >> $ETH0CFG
-               echo "DHCP_STOP=\"-k\"" >> $ETH0CFG
+       unset DLG_COMMAND ARGS
 
-               # Start the service
-               $IFUP eth0
+       case "$SERVICE" in
 
-               # Test if dhcp worked and did not set DNS.
-               # If so run set_dns function.
-               if echo `ip link show eth0 2> /dev/null` | grep -q UP ; then    
                
-                       if [ ! -f /etc/resolv.conf ] ; then
-                               echo "DHCP did not configure DNS."
-                               set_dns;
+               dhcp) 
+                       echo "SERVICE=dhcpcd" > $ETHXCFG
+                       echo "DHCP_START=\"\"" >> $ETHXCFG
+                       echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+
+                       # Start the service
+                       $IFUP $DEV
+
+                       # Test if dhcp worked and did not set DNS.
+                       # If so run set_dns function.
+                       if echo "$LINKTEST" | grep -q UP ; then                 
+                               if [ ! -f /etc/resolv.conf ] ; then
+                                       set_dns;
+                               fi
+                               ip addr show $DEV
                        fi
-                       ip addr show eth0
-               fi
-               ;;
+                       ;;
+       
+               static)
+                       echo "SERVICE=ipv4-static" > $ETHXCFG
+                       set_static_cfg;
+                       set_dns;
+                       $IFUP $DEV
+                       ;;
+       
+               pppoe)
+                       adsl-setup
+                       ;;
+               *)
+                       exit 0
+                       ;;
+       esac
+}
 
-       static)
-               echo "SERVICE=ipv4-static" > $ETH0CFG
-               set_static_ip;
-               set_static_gateway;
-               set_static_prefix;
-               set_static_broadcast;
-               set_dns;
-               # Start the service
-               $IFUP eth0
-               ;;
+# Main Menu for ppp modem devices
+ppp_modem_menu(){
+        unset ARGS
+        ARGS="$ARGS configure \"Configure your modem.\""
+        ARGS="$ARGS dial \"Dial modem and exit.\""
+        ARGS="$ARGS hangup \"Hang up modem and exit.\""
 
-       pppoe)
-               adsl-setup
-               ;;
+        DLG_COMMAND="dialog --title \"Modem - Actions\" --default-item 
configure \
+                --menu \"Select the action to perform for your modem:\" \
+                0 0 0 $ARGS"
+        SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       *)
-               # Error message in case user entered something unusable, like 
"waldo"
-               echo ""
-               echo "--------------------------"
-               echo " Invalid option: $SERVICE"
-               echo " Please try again."
-               echo "--------------------------"
-               choose_service;
-               ;;
-esac
+        unset DLG_COMMAND ARGS
+
+        case "$SERVICE" in
+
+                configure)
+                        set_modem_cfg;
+                        ;;
+
+                dial)
+                        [ -e /dev/ppp ] || mknod /dev/ppp c 108 0
+                        modprobe ppp-generic ; pppd call dialup
+                        exit 0
+                        ;;
+
+                hangup)
+                        killall pppd
+                        exit 0
+                        ;;
+                *)
+                        exit 0
+                        ;;
+        esac
+
+        ppp_modem_menu;
 }
 
-# Script starts here. Tests first for link on eth0
+# Main Menu for ppp gprs devices
+ppp_gprs_menu(){
+        unset ARGS
+        ARGS="$ARGS configure \"Configure your GPRS device.\""
+        ARGS="$ARGS dial \"Dial GPRS device and exit.\""
+        ARGS="$ARGS hangup \"Hang up GPRS device and exit.\""
 
-if [ -n "$LINKTEST" ] ; then
+        DLG_COMMAND="dialog --title \"GPRS Device - Actions\" --default-item 
configure \
+                --menu \"Select the action to perform for your GPRS device:\" \
+                0 0 0 $ARGS"
+        SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       # If link is not up, start main function choose_service.
+        unset DLG_COMMAND ARGS
 
-       if ! echo "$LINKTEST" | grep -q UP ; then
-               echo ""
-               echo $GREETING
-               choose_service;
+        case "$SERVICE" in
+
+                configure)
+                       set_gprs_cfg;
+                        ;;
+
+                dial)
+                       [ -e /dev/ppp ] || mknod /dev/ppp c 108 0 
+                       modprobe ppp-generic ; pppd call gprs
+                       exit 0
+                        ;;
+
+                hangup)
+                       killall pppd
+                       exit 0
+                        ;;
+                *)
+                        exit 0
+                        ;;
+        esac
+
+       ppp_gprs_menu;
+}
+
+# Script starts here. Check for root user.
+if [ `whoami` != "root" ] ; then
+       echo "You must be root to use $0"
+       exit 1;
+fi
+
+# Get list of devices and prompt user to select one
+if [ ! -d /sys/class/net ] ; then
+       echo "No devices found or sysfs not mounted!"
+       exit 1;
+fi
+
+for EDEV in /sys/class/net/eth* /sys/class/net/wlan* ; do
+       EDEV=`basename $EDEV`
+       if echo $EDEV | grep -q "*" ; then continue ; fi
+       if echo `/sbin/ip link show $EDEV 2> /dev/null` | grep -q UP ; then
+               EDEVSTATUS="UP"
        else
+               EDEVSTATUS="DOWN"
+       fi
+       DEVLIST="$DEVLIST `basename $EDEV` \"$EDEVSTATUS\""
+done
+DEVLIST="$DEVLIST ppp-modem \"Configure a dial-up Modem\" ppp-gprs \"Configure 
a GPRS Modem\""
 
-       # If link is up, user likely has run this script already.
-       # Take down eth0 so we can set it up cleanly.
+DLG_COMMAND="dialog --title \"Network Configuration\" --default-item eth0 \
+               --timeout 30 --menu \"Select the network device to configure:\" 
\
+       0 0 0 $DEVLIST"
+DEV=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+unset EDEV EDEVSTATUS DEVLIST DLG_COMMAND
 
-               $IFDOWN eth0
-               echo ""
-               echo $GREETING
-               choose_service;
+# Continue if device was selected, exit if otherwise.
+if [ -n "$DEV" ] ; then
+       if [ "$DEV" == "ppp-modem" ] ; then
+               ppp_modem_menu;
+               exit 0
        fi
-else
-       echo "Device eth0 is not present on this system!"
+       if [ "$DEV" == "ppp-gprs" ] ; then
+               ppp_gprs_menu;
+               exit 0
+       fi
+        # If the menu times out, activate eth0 with dhcpcd and exit.
+        if [ "$DEV" == "timeout" ] ; then
+                DEV="eth0"
+                set_devvars;
+                rm -f $ETHXCFG
+                echo "SERVICE=dhcpcd" > $ETHXCFG
+                echo "DHCP_START=\"\"" >> $ETHXCFG
+                echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+                $IFUP $DEV
+                exit 0
+        fi
+       
+       # If not ppp-modem or ppp-gprs, then network device to configure
+       set_devvars;
+
+       if [ -n "$LINKTEST" ] ; then
+               # Link is up. Bring it down and start service menu.
+               if echo "$LINKTEST" | grep -q UP ; then
+                       $IFDOWN $DEV
+               fi
+
+               net_service_menu;
+       else
+               DLG_COMMAND="dialog --title \"Device Not Found\" \
+                --msgbox \"Device $DEV is not present on this system.\" 6 60"
+                eval $DLG_COMMAND
+               exit 1
+       fi
 fi

Modified: x86/branches/utf8/scripts/net-setup
===================================================================
--- x86/branches/utf8/scripts/net-setup 2005-08-27 16:14:47 UTC (rev 599)
+++ x86/branches/utf8/scripts/net-setup 2005-08-28 05:06:17 UTC (rev 600)
@@ -1,191 +1,436 @@
 #!/bin/bash
 #
-# Script for interactively choosing a network service
-# and starting eth0 on the LFS LiveCD. First implemented
+# Script for interactively choosing a network interface, 
+# service and configuring this service.  First implemented
 # in the x86-6.0-1 CD.
 #
 # Written by Jeremy Huntwork 09.17.2004
+# Additional features by Justin Knierim with the help
+#   of Alexander Patrakov 08.08.05
 #
 
+# Locations of network configs, ifup and ifdown
 DIR=/etc/sysconfig/network-devices
-ETH0CFG=$DIR/ifconfig.eth0
 IFUP=$DIR/ifup
 IFDOWN=$DIR/ifdown
-LINKTEST=`ip link show eth0 2> /dev/null`
-GREETING="Let's configure your network device!"
 
-# Function to set nameservers in /etc/resolv.conf
-# Allows user to enter any number of nameservers,
-# exits when user types "done"
+# Set variables after network device is selected
+set_devvars(){
+       ETHXCFG=$DIR/ifconfig.$DEV
+       LINKTEST=`/sbin/ip link show $DEV 2> /dev/null`
+}
 
+# Form to enter nameservers for /etc/resolv.conf
 set_dns(){
+       DLG_COMMAND="dialog --title \"DNS Servers - /etc/resolv.conf\" 
--no-cancel \
+        --form \"Please enter the DNS IP addresses below:\" 0 0 3 \
+       \"Server 1:\" 1 1 \"$F_DNS1\" 1 25 15 0 \
+       \"Server 2:\" 2 1 \"$F_DNS2\" 2 25 15 0 \
+       \"Server 3:\" 3 1 \"$F_DNS3\" 3 25 15 0"
+       SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       echo "Enter a DNS server: "
-       echo "(Enter server addresses, one per line in order of preference, and 
type \"done\" when finished."
-       read DNS
-       counter=0
-       while [ $DNS != "done" ]
-       do
-               # Check that user enters four numbers separated by '.'
-               if [ -z "$DNS" -o -n "${DNS##?*.?*.?*.?*}" ] ; then
-                       echo "$DNS is not a valid nameserver address."
-               else
-                       # If this is the first entry, overwrite any existing
-                       # /etc/resolv.conf, else append.
-                       if [ $counter -eq 0 ] ; then
-                               echo "nameserver $DNS" > /etc/resolv.conf
-                       else 
-                               echo "nameserver $DNS" >> /etc/resolv.conf
-                       fi
-               fi
-               read DNS
-               counter=`expr $counter + 1`
-       done
-}              
+       STATUS=$?
+       if [ "$STATUS" -ne 0 ] ; then
+               exit 1
+       fi
 
-set_static_ip(){
-       echo "Enter your IP address:"
-       read IP
-       if [ -z "$IP" -o -n "${IP##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$IP is not a valid IP address."
-               set_static_ip;
+       unset F_DNS1 F_DNS2 F_DNS3
+       eval "`echo "$SELECTION" | sed -e '1s,^,F_DNS1=",' -e '2s,^,F_DNS2=",' \
+             -e '3s,^,F_DNS3=",' | sed -e 's,$,",'`"
+
+       # Validate DNS IP addresses
+       DNS_OK=1
+       if [ -n "$F_DNS1" -a "${F_DNS1##?*.?*.?*.?*}" ] || \
+          [ -n "$F_DNS2" -a "${F_DNS2##?*.?*.?*.?*}" ] || \
+          [ -n "$F_DNS3" -a "${F_DNS3##?*.?*.?*.?*}" ] ; then
+                DNS_OK=0
+               DNS_ERRMSG="One of the entered IP addresses is not valid."
+        fi
+
+       if [ "$DNS_OK" -eq 1 ] ; then
+               rm -f /etc/resolv.conf
+               [ -n "$F_DNS1" ] && echo "nameserver $F_DNS1" >> 
/etc/resolv.conf
+               [ -n "$F_DNS2" ] && echo "nameserver $F_DNS2" >> 
/etc/resolv.conf
+               [ -n "$F_DNS3" ] && echo "nameserver $F_DNS3" >> 
/etc/resolv.conf
+
+               unset F_DNS1 F_DNS2 F_DNS3 SELECTION DLG_COMMAND STATUS
+               unset DNS_OK DNS_ERRMSG
        else
-               echo "IP=$IP" >> $ETH0CFG
+               DLG_COMMAND="dialog --title \"DNS IP Validation Error\" \
+               --msgbox \"$DNS_ERRMSG\" 6 60"
+               eval $DLG_COMMAND
+               set_dns;        
        fi
-}
+}              
 
-set_static_gateway(){
-       echo "Enter your default gateway:"
-       read GTWY
-       if [ -z "$GTWY" -o -n "${GTWY##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$GTWY is not a valid default gateway."
-               set_static_gateway;
-       else
-               echo "GATEWAY=$GTWY" >> $ETH0CFG
+# Setup IP address, prefix, gateway and broadcast
+set_static_cfg(){
+       # Default values (only apply on first run-through, meaning SIP_OK 
doesn't exist)
+       if [ -z "$SIP_OK" ] ; then
+               F_PREFIX=24
        fi
-}
 
-set_static_prefix(){
-       echo "Enter your prefix: "
-       echo "(This determines your subnet mask. For example, a prefix of 24 
would give you a subnet mask of 255.255.255.0)"
-       read PRFX
-       # First verify that user has entered a prefix, and not just pressed 
'Enter'
-       if [ $PRFX ] ; then
-               # Check that prefix is a value between 8 & 30
-               if [ "$PRFX" -lt 8 -o "$PRFX" -gt 30 ] ; then
-                       echo ""
-                       echo "$PRFX is not a valid prefix."
-                       set_static_prefix;
-               else
-                       echo "PREFIX=$PRFX" >> $ETH0CFG
-               fi
+        DLG_COMMAND="dialog --title \"Static IP Configuration\" --no-cancel \
+        --form \"Please enter the network connection details:\" 0 0 4 \
+        \"IP Address:\" 1 1 \"$F_IPADDR\" 1 25 15 0 \
+        \"Prefix:\" 2 1 \"$F_PREFIX\" 2 25 2 0 \
+        \"Broadcast:\" 3 1 \"$F_BROADCAST\" 3 25 15 0 \
+       \"Gateway:\" 4 1 \"$F_GATEWAY\" 4 25 15 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+       unset F_IPADDR F_PREFIX F_BROADCAST F_GATEWAY
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_IPADDR=",' -e 
'2s,^,F_PREFIX=",' \
+              -e '3s,^,F_BROADCAST=",' -e '4s,^,F_GATEWAY=",' | sed -e 
's,$,",'`"
+
+        # Validate entries (Must give IP, prefix and broadcast.  Gateway 
optional.)
+        SIP_OK=1
+        if [ -n "$F_IPADDR" -a "${F_IPADDR##?*.?*.?*.?*}" ] || \
+           [ -n "$F_BROADCAST" -a "${F_BROADCAST##?*.?*.?*.?*}" ] || \
+           [ -n "$F_GATEWAY" -a "${F_GATEWAY##?*.?*.?*.?*}" ] ; then
+                SIP_OK=0
+               SIP_ERRMSG="One of the entered IP addresses or prefix is not 
valid."
+       fi
+       if [ "$F_PREFIX" -lt 8 -o "$F_PREFIX" -gt 30 ] ; then
+               SIP_OK=0
+               SIP_ERRMSG="The prefix is not valid.  Please enter a value from 
8 to 30."
+       fi
+       if [ -z "$F_IPADDR" -o -z "$F_BROADCAST" -o -z "$F_PREFIX" ] ; then
+               SIP_OK=0
+               SIP_ERRMSG="Please enter an IP address, broadcast and prefix."  
        
+        fi
+
+        if [ "$SIP_OK" -eq 1 ] ; then
+                echo "IP=$F_IPADDR" >> $ETHXCFG
+               echo "PREFIX=$F_PREFIX" >> $ETHXCFG
+               echo "BROADCAST=$F_BROADCAST" >> $ETHXCFG
+               [ -n "$F_GATEWAY" ] && echo "GATEWAY=$F_GATEWAY" >> $ETHXCFG
+
+                unset F_IPADDR F_PREFIX F_BROADCAST F_GATEWAY DLG_COMMAND 
STATUS
+                unset SELECTION SIP_OK SIP_ERRMSG
        else
-               echo "Prefix cannot be empty."
-               echo ""
-               set_static_prefix;
+                DLG_COMMAND="dialog --title \"Static IP Validation Error\" \
+                --msgbox \"$SIP_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_static_cfg;
        fi
 }
 
-set_static_broadcast(){
-       echo "Enter your broadcast address: "
-       read BRDCST
-       if [ -z "$BRDCST" -o -n "${BRDCST##?*.?*.?*.?*}" ] ; then
-               echo ""
-               echo "$BRDCST is not a valid broadcast address."
-               set_static_broadcast;
-       else
-               echo "BROADCAST=$BRDCST" >> $ETH0CFG
+# GPRS Device options
+set_gprs_cfg(){
+        # Default values (only apply on first run-through, meaning GPRS_OK 
doesn't exist)
+        if [ -z "$GPRS_OK" ] ; then
+                F_DEVICE=/dev/ttyS1
+                F_SPEED=115200
+               F_SETTING=1
+        fi
+
+        DLG_COMMAND="dialog --title \"GPRS Device Configuration\" --no-cancel \
+        --form \"Please enter the GPRS device details below. The default value 
for the setting number is 1.\" 0 0 4 \
+        \"APN:\" 1 1 \"$F_APN\" 1 25 30 0 \
+        \"Device:\" 2 1 \"$F_DEVICE\" 2 25 20 0 \
+        \"Speed:\" 3 1 \"$F_SPEED\" 3 25 10 0 \
+       \"Setting Number:\" 4 1 \"$F_SETTING\" 4 25 4 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+       unset F_APN F_DEVICE F_SPEED F_SETTING
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_APN=",' -e 
'2s,^,F_DEVICE=",' \
+              -e '3s,^,F_SPEED=",' -e '4s,^,F_SETTING=",' | sed -e 's,$,",'`"
+
+        # Validate entries (All values are required.)
+        GPRS_OK=1
+       if [ -z "$F_APN" -o -z "$F_DEVICE" -o -z "$F_SPEED" -o -z "$F_SETTING" 
] ; then
+               GPRS_OK=0
+               GPRS_ERRMSG="All fields are required to setup your GPRS device."
        fi
+
+        if [ "$GPRS_OK" -eq 1 ] ; then
+               # Make a backup and restore before changes, so the sed's work 
correctly.
+               [ -f /etc/ppp/peers/gprs.orig ] || cp /etc/ppp/peers/gprs 
/etc/ppp/peers/gprs.orig
+               [ -f /etc/ppp/gprs.chat.orig ] || cp /etc/ppp/gprs.chat 
/etc/ppp/gprs.chat.orig
+               cp /etc/ppp/peers/gprs.orig /etc/ppp/peers/gprs
+               cp /etc/ppp/gprs.chat.orig /etc/ppp/gprs.chat
+
+               # Alter /etc/ppp/peers/gprs file.
+               sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e 
"s@/dev/[EMAIL PROTECTED]@g" \
+                      -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" 
/etc/ppp/peers/gprs
+
+               # Alter /etc/ppp/gprs.chat (advanced setting)
+               sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" \
+                       -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" 
/etc/ppp/gprs.chat
+
+                unset F_APN F_DEVICE F_SPEED F_SETTING DLG_COMMAND STATUS
+                unset SELECTION GPRS_OK GPRS_ERRMSG
+        else
+                DLG_COMMAND="dialog --title \"GPRS Validation Error\" \
+                --msgbox \"$GPRS_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_gprs_cfg;
+        fi
 }
 
-# Main function. Presents user with a choice of
-# static or dhcp and attempts to bring up eth0
+# Modem Device options
+set_modem_cfg(){
+        # Default values (only apply on first run-through, meaning MODEM_OK 
doesn't exist)
+        if [ -z "$MODEM_OK" ] ; then
+                F_DEVICE=/dev/ttyS1
+                F_SPEED=115200
+        fi
 
-choose_service(){
+        DLG_COMMAND="dialog --title \"Modem Configuration\" --no-cancel \
+        --form \"Please enter the modem details below:\" 0 0 5 \
+        \"Telephone Number:\" 1 1 \"$F_PHONE\" 1 25 20 0 \
+        \"User:\" 2 1 \"$F_USERNAME\" 2 25 30 0 \
+        \"Password:\" 3 1 \"$F_PASSWORD\" 3 25 30 0 \
+        \"Device:\" 4 1 \"$F_DEVICE\" 4 25 20 0 \
+        \"Speed:\" 5 1 \"$F_SPEED\" 5 25 10 0"
+        SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
+        STATUS=$?
+        if [ "$STATUS" -ne 0 ] ; then
+                exit 1
+        fi
+
+        unset F_PHONE F_USERNAME F_PASSWORD F_DEVICE F_SPEED
+        eval "`echo "$SELECTION" | sed -e '1s,^,F_PHONE=",' -e 
'2s,^,F_USERNAME=",' \
+              -e '3s,^,F_PASSWORD=",' -e '4s,^,F_DEVICE=",' -e 
'5s,^,F_SPEED=",' | sed -e 's,$,",'`"
+
+        # Validate entries (All values except password are required.)
+        MODEM_OK=1
+        if [ -z "$F_PHONE" -o -z "$F_USERNAME" -o -z "$F_DEVICE" -o -z 
"$F_SPEED" ] ; then
+                MODEM_OK=0
+                MODEM_ERRMSG="The telephone number, username, device and speed 
are required fields."
+        fi
+
+        if [ "$MODEM_OK" -eq 1 ] ; then
+                # Make a backup and restore before changes, so the sed's work 
correctly.
+                [ -f /etc/ppp/peers/dialup.orig ] || cp /etc/ppp/peers/dialup 
/etc/ppp/peers/dialup.orig
+                [ -f /etc/ppp/pap-secrets.orig ] || cp /etc/ppp/pap-secrets 
/etc/ppp/pap-secrets.orig
+                cp /etc/ppp/peers/dialup.orig /etc/ppp/peers/dialup
+                cp /etc/ppp/pap-secrets.orig /etc/ppp/pap-secrets
+
+                # Alter /etc/ppp/peers/dialup file.
+                sed -i -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e 
"s@/dev/[EMAIL PROTECTED]@g" \
+                       -e "[EMAIL PROTECTED]@[EMAIL PROTECTED]" -e "[EMAIL 
PROTECTED]"jdoe\"@\"$F_USERNAME\"@g" \
+                      /etc/ppp/peers/dialup
+
+                # Alter /etc/ppp/pap-secrets
+               echo $F_USERNAME dialup $F_PASSWORD >> /etc/ppp/pap-secrets
+
+                unset F_PHONE F_USERNAME F_PASSWORD F_DEVICE F_SPEED 
DLG_COMMAND STATUS
+                unset SELECTION MODEM_OK MODEM_ERRMSG
+        else
+                DLG_COMMAND="dialog --title \"Modem Validation Error\" \
+                --msgbox \"$MODEM_ERRMSG\" 6 60"
+                eval $DLG_COMMAND
+                set_modem_cfg;
+        fi
+}
+
+# Main Menu for Network Devices
+net_service_menu(){
        # Remove previous config, so ifup won't get confused.
-       rm -f $ETH0CFG
+       rm -f $ETHXCFG
 
-       echo ""
-       echo "What type of service should eth0 use?"
-       echo "(static, dhcp or pppoe)"
-       read SERVICE
+       unset ARGS
+       ARGS="$ARGS dhcp \"Acquire IP address through dhcp.\""
+       ARGS="$ARGS static \"Enter a static IP Address.\""
+       ARGS="$ARGS pppoe \"Setup an ADSL connection.\""
 
-case "$SERVICE" in
+       DLG_COMMAND="dialog --title \"Select network service\" --default-item 
dhcp \
+               --menu \"Select the network service to use for the $DEV 
interface:\" \
+               0 0 0 $ARGS"
+       SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       dhcp) 
-               echo "SERVICE=dhcpcd" > $ETH0CFG
-               echo "DHCP_START=\"\"" >> $ETH0CFG
-               echo "DHCP_STOP=\"-k\"" >> $ETH0CFG
+       unset DLG_COMMAND ARGS
 
-               # Start the service
-               $IFUP eth0
+       case "$SERVICE" in
 
-               # Test if dhcp worked and did not set DNS.
-               # If so run set_dns function.
-               if `ip link show eth0 2>/dev/null` | grep -q UP ; then          
        
-                       if [ ! -f /etc/resolv.conf ] ; then
-                               echo "DHCP did not configure DNS."
-                               set_dns;
+               dhcp) 
+                       echo "SERVICE=dhcpcd" > $ETHXCFG
+                       echo "DHCP_START=\"\"" >> $ETHXCFG
+                       echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+
+                       # Start the service
+                       $IFUP $DEV
+
+                       # Test if dhcp worked and did not set DNS.
+                       # If so run set_dns function.
+                       if echo "$LINKTEST" | grep -q UP ; then                 
+                               if [ ! -f /etc/resolv.conf ] ; then
+                                       set_dns;
+                               fi
+                               ip addr show $DEV
                        fi
-                       ip addr show eth0
-               fi
-               ;;
+                       ;;
+       
+               static)
+                       echo "SERVICE=ipv4-static" > $ETHXCFG
+                       set_static_cfg;
+                       set_dns;
+                       $IFUP $DEV
+                       ;;
+       
+               pppoe)
+                       adsl-setup
+                       ;;
+               *)
+                       exit 0
+                       ;;
+       esac
+}
 
-       static)
-               echo "SERVICE=ipv4-static" > $ETH0CFG
-               set_static_ip;
-               set_static_gateway;
-               set_static_prefix;
-               set_static_broadcast;
-               set_dns;
-               # Start the service
-               $IFUP eth0
-               ;;
+# Main Menu for ppp modem devices
+ppp_modem_menu(){
+        unset ARGS
+        ARGS="$ARGS configure \"Configure your modem.\""
+        ARGS="$ARGS dial \"Dial modem and exit.\""
+        ARGS="$ARGS hangup \"Hang up modem and exit.\""
 
-       pppoe)
-               adsl-setup
-               ;;
+        DLG_COMMAND="dialog --title \"Modem - Actions\" --default-item 
configure \
+                --menu \"Select the action to perform for your modem:\" \
+                0 0 0 $ARGS"
+        SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-       *)
-               # Error message in case user entered something unusable, like 
"waldo"
-               echo ""
-               echo "--------------------------"
-               echo " Invalid option: $SERVICE"
-               echo " Please try again."
-               echo "--------------------------"
-               choose_service;
-               ;;
-esac
+        unset DLG_COMMAND ARGS
+
+        case "$SERVICE" in
+
+                configure)
+                        set_modem_cfg;
+                        ;;
+
+                dial)
+                        [ -e /dev/ppp ] || mknod /dev/ppp c 108 0
+                        modprobe ppp-generic ; pppd call dialup
+                        exit 0
+                        ;;
+
+                hangup)
+                        killall pppd
+                        exit 0
+                        ;;
+                *)
+                        exit 0
+                        ;;
+        esac
+
+        ppp_modem_menu;
 }
 
-# Script starts here. Tests first for link on eth0
+# Main Menu for ppp gprs devices
+ppp_gprs_menu(){
+        unset ARGS
+        ARGS="$ARGS configure \"Configure your GPRS device.\""
+        ARGS="$ARGS dial \"Dial GPRS device and exit.\""
+        ARGS="$ARGS hangup \"Hang up GPRS device and exit.\""
 
+        DLG_COMMAND="dialog --title \"GPRS Device - Actions\" --default-item 
configure \
+                --menu \"Select the action to perform for your GPRS device:\" \
+                0 0 0 $ARGS"
+        SERVICE=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+
+        unset DLG_COMMAND ARGS
+
+        case "$SERVICE" in
+
+                configure)
+                       set_gprs_cfg;
+                        ;;
+
+                dial)
+                       [ -e /dev/ppp ] || mknod /dev/ppp c 108 0 
+                       modprobe ppp-generic ; pppd call gprs
+                       exit 0
+                        ;;
+
+                hangup)
+                       killall pppd
+                       exit 0
+                        ;;
+                *)
+                        exit 0
+                        ;;
+        esac
+
+       ppp_gprs_menu;
+}
+
+# Script starts here. Check for root user.
 if [ `whoami` != "root" ] ; then
        echo "You must be root to use $0"
        exit 1;
 fi
 
-if [ -n "$LINKTEST" ] ; then
+# Get list of devices and prompt user to select one
+if [ ! -d /sys/class/net ] ; then
+       echo "No devices found or sysfs not mounted!"
+       exit 1;
+fi
 
-       # If link is not up, start main function choose_service.
-
-       if ! echo "$LINKTEST" | grep -q UP ; then
-               echo ""
-               echo $GREETING
-               choose_service;
+for EDEV in /sys/class/net/eth* /sys/class/net/wlan* ; do
+       EDEV=`basename $EDEV`
+       if echo $EDEV | grep -q "*" ; then continue ; fi
+       if echo `/sbin/ip link show $EDEV 2> /dev/null` | grep -q UP ; then
+               EDEVSTATUS="UP"
        else
+               EDEVSTATUS="DOWN"
+       fi
+       DEVLIST="$DEVLIST `basename $EDEV` \"$EDEVSTATUS\""
+done
+DEVLIST="$DEVLIST ppp-modem \"Configure a dial-up Modem\" ppp-gprs \"Configure 
a GPRS Modem\""
 
-       # If link is up, user likely has run this script already.
-       # Take down eth0 so we can set it up cleanly.
+DLG_COMMAND="dialog --title \"Network Configuration\" --default-item eth0 \
+               --timeout 30 --menu \"Select the network device to configure:\" 
\
+       0 0 0 $DEVLIST"
+DEV=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+unset EDEV EDEVSTATUS DEVLIST DLG_COMMAND
 
-               $IFDOWN eth0
-               echo ""
-               echo $GREETING
-               choose_service;
+# Continue if device was selected, exit if otherwise.
+if [ -n "$DEV" ] ; then
+       if [ "$DEV" == "ppp-modem" ] ; then
+               ppp_modem_menu;
+               exit 0
        fi
-else
-       echo "Device eth0 is not present on this system!"
+       if [ "$DEV" == "ppp-gprs" ] ; then
+               ppp_gprs_menu;
+               exit 0
+       fi
+        # If the menu times out, activate eth0 with dhcpcd and exit.
+        if [ "$DEV" == "timeout" ] ; then
+                DEV="eth0"
+                set_devvars;
+                rm -f $ETHXCFG
+                echo "SERVICE=dhcpcd" > $ETHXCFG
+                echo "DHCP_START=\"\"" >> $ETHXCFG
+                echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+                $IFUP $DEV
+                exit 0
+        fi
+       
+       # If not ppp-modem or ppp-gprs, then network device to configure
+       set_devvars;
+
+       if [ -n "$LINKTEST" ] ; then
+               # Link is up. Bring it down and start service menu.
+               if echo "$LINKTEST" | grep -q UP ; then
+                       $IFDOWN $DEV
+               fi
+
+               net_service_menu;
+       else
+               DLG_COMMAND="dialog --title \"Device Not Found\" \
+                --msgbox \"Device $DEV is not present on this system.\" 6 60"
+                eval $DLG_COMMAND
+               exit 1
+       fi
 fi

Modified: x86/branches/utf8-newmake/scripts/net-setup
===================================================================
--- x86/branches/utf8-newmake/scripts/net-setup 2005-08-27 16:14:47 UTC (rev 
599)
+++ x86/branches/utf8-newmake/scripts/net-setup 2005-08-28 05:06:17 UTC (rev 
600)
@@ -377,8 +377,9 @@
        exit 1;
 fi
 
-for EDEV in "/sys/class/net/eth* /sys/class/net/wlan*" ; do
+for EDEV in /sys/class/net/eth* /sys/class/net/wlan* ; do
        EDEV=`basename $EDEV`
+       if echo $EDEV | grep -q "*" ; then continue ; fi
        if echo `/sbin/ip link show $EDEV 2> /dev/null` | grep -q UP ; then
                EDEVSTATUS="UP"
        else
@@ -389,7 +390,7 @@
 DEVLIST="$DEVLIST ppp-modem \"Configure a dial-up Modem\" ppp-gprs \"Configure 
a GPRS Modem\""
 
 DLG_COMMAND="dialog --title \"Network Configuration\" --default-item eth0 \
-               --timeout 20 --menu \"Select the network device to configure:\" 
\
+               --timeout 30 --menu \"Select the network device to configure:\" 
\
        0 0 0 $DEVLIST"
 DEV=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 unset EDEV EDEVSTATUS DEVLIST DLG_COMMAND
@@ -404,6 +405,17 @@
                ppp_gprs_menu;
                exit 0
        fi
+        # If the menu times out, activate eth0 with dhcpcd and exit.
+        if [ "$DEV" == "timeout" ] ; then
+                DEV="eth0"
+                set_devvars;
+                rm -f $ETHXCFG
+                echo "SERVICE=dhcpcd" > $ETHXCFG
+                echo "DHCP_START=\"\"" >> $ETHXCFG
+                echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+                $IFUP $DEV
+                exit 0
+        fi
        
        # If not ppp-modem or ppp-gprs, then network device to configure
        set_devvars;

Modified: x86_64/trunk/scripts/net-setup
===================================================================
--- x86_64/trunk/scripts/net-setup      2005-08-27 16:14:47 UTC (rev 599)
+++ x86_64/trunk/scripts/net-setup      2005-08-28 05:06:17 UTC (rev 600)
@@ -377,8 +377,9 @@
        exit 1;
 fi
 
-for EDEV in "/sys/class/net/eth* /sys/class/net/wlan*" ; do
+for EDEV in /sys/class/net/eth* /sys/class/net/wlan* ; do
        EDEV=`basename $EDEV`
+       if echo $EDEV | grep -q "*" ; then continue ; fi
        if echo `/sbin/ip link show $EDEV 2> /dev/null` | grep -q UP ; then
                EDEVSTATUS="UP"
        else
@@ -389,7 +390,7 @@
 DEVLIST="$DEVLIST ppp-modem \"Configure a dial-up Modem\" ppp-gprs \"Configure 
a GPRS Modem\""
 
 DLG_COMMAND="dialog --title \"Network Configuration\" --default-item eth0 \
-               --timeout 20 --menu \"Select the network device to configure:\" 
\
+               --timeout 30 --menu \"Select the network device to configure:\" 
\
        0 0 0 $DEVLIST"
 DEV=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 unset EDEV EDEVSTATUS DEVLIST DLG_COMMAND
@@ -404,6 +405,17 @@
                ppp_gprs_menu;
                exit 0
        fi
+        # If the menu times out, activate eth0 with dhcpcd and exit.
+        if [ "$DEV" == "timeout" ] ; then
+                DEV="eth0"
+                set_devvars;
+                rm -f $ETHXCFG
+                echo "SERVICE=dhcpcd" > $ETHXCFG
+                echo "DHCP_START=\"\"" >> $ETHXCFG
+                echo "DHCP_STOP=\"-k\"" >> $ETHXCFG
+                $IFUP $DEV
+                exit 0
+        fi
        
        # If not ppp-modem or ppp-gprs, then network device to configure
        set_devvars;

-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to