X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=sbin%2Fnetcardconfig;h=d9440e6096f34ee1e533e8c77b134347d1ae3d53;hb=f512c908edc331ca6a87bb83a8ae06e630d2e040;hp=41f08c98b23f66931d35cb3844589c71c83d9909;hpb=59b9714ea4557a99ecf19a36d53ea8bf53746dd3;p=grml-network.git diff --git a/sbin/netcardconfig b/sbin/netcardconfig index 41f08c9..d9440e6 100755 --- a/sbin/netcardconfig +++ b/sbin/netcardconfig @@ -28,58 +28,58 @@ bailout() { writeiwline() { IWOURLINE="" if [ -n "$NWID" ]; then - IWOURLINE="$IWOURLINE wireless-nwid $NWID\n" + IWOURLINE="$IWOURLINE\twireless-nwid $NWID\n" fi if [ -n "$MODE" ]; then - IWOURLINE="$IWOURLINE wireless-mode $MODE\n" + IWOURLINE="$IWOURLINE\twireless-mode $MODE\n" fi if [ -n "$CHANNEL" ]; then - IWOURLINE="$IWOURLINE wireless-channel $CHANNEL\n" + IWOURLINE="$IWOURLINE\twireless-channel $CHANNEL\n" fi if [ -n "$FREQ" ]; then - IWOURLINE="$IWOURLINE wireless-freq $FREQ\n" + IWOURLINE="$IWOURLINE\twireless-freq $FREQ\n" fi if [ -n "$KEY" ]; then if [ "$PUBKEY" -eq 1 ]; then # Store the key in interfaces in wireless-key - IWOURLINE="$IWOURLINE wireless-key $KEY\n" + IWOURLINE="$IWOURLINE\twireless-key $KEY\n" else # Store the key in /etc/network/wep.$DV which is root readable only # Use pre-up in interfaces to read and set it - echo "$KEY" > "/etc/network/wep.$DV" && chmod 600 "/etc/network/wep.$DV" && IWOURLINE="$IWOURLINE pre-up KEY=\$(cat /etc/network/wep.$DV) && iwconfig $DV key \$KEY\n" + echo "$KEY" > "/etc/network/wep.$DV" && chmod 600 "/etc/network/wep.$DV" && IWOURLINE="$IWOURLINE\tpre-up KEY=\$(cat /etc/network/wep.$DV) && iwconfig $DV key \$KEY\n" fi fi for mod in /sys/module/rt2??0/ ; do if [ -d "$mod" ]; then - IWPREUPLINE="$IWPREUPLINE pre-up /sbin/ip link set $DV up\n" + IWPREUPLINE="$IWPREUPLINE\tpre-up /sbin/ip link set $DV up\n" break fi done if [ -n "$IWCONFIG" ]; then - IWPREUPLINE="$IWPREUPLINE iwconfig $IWCONFIG\n" + IWPREUPLINE="$IWPREUPLINE\tiwconfig $IWCONFIG\n" fi if [ -n "$IWSPY" ]; then - IWPREUPLINE="$IWPREUPLINE iwspy $IWSPY\n" + IWPREUPLINE="$IWPREUPLINE\tiwspy $IWSPY\n" fi if [ -n "$IWPRIV" ]; then - IWPREUPLINE="$IWPREUPLINE iwpriv $IWPRIV\n" + IWPREUPLINE="$IWPREUPLINE\tiwpriv $IWPRIV\n" fi # execute ESSID last, but make sure that it is written as first option if [ -n "$ESSID" ]; then - IWOURLINE="$IWOURLINE wireless-essid $ESSID\n" + IWOURLINE="$IWOURLINE\twireless-essid $ESSID\n" fi if [ "$WPAON" -gt 0 ]; then - IWOURLINE="$IWOURLINE wpa-ssid $ESSID\n wpa-psk $WPASECRET\n" + IWOURLINE="$IWOURLINE\twpa-ssid $ESSID\n\twpa-psk $WPASECRET\n" fi IWOURLINE="$IWOURLINE $IWPREUPLINE" @@ -190,10 +190,11 @@ configiface() { DV=$DEVICENAME ifdown "${DV}" --force sleep 3 - # wireless config - WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig "$DV" 2>/dev/null | wc -l)" + # INTERACTIVE=true if "${INTERACTIVE}" ; then + # Setup wireless options? if [ $iswireless -gt 0 ] && $DIALOG --yesno "$MESSAGE13" 8 45; then + WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig "$DV" 2>/dev/null | wc -l)" ESSID="" NWID="" MODE="" @@ -432,8 +433,12 @@ configiface() { $DIALOG --inputbox "$MESSAGEW20 $DEVICENAME $MESSAGEW21" 15 50 "$IWPRIV" 2>"$TMP" || bailout 1 read -r IWPRIV <"$TMP" ; rm -f "$TMP" - writeiwline - fi + unset IWOURLINE + if [ "$iswireless" = "1" ] ; then + writeiwline + fi + + fi # Setup wireless options? # Configure VLAN on this interface? if $DIALOG --defaultno --yesno "$MESSAGE16" 8 45; then @@ -445,8 +450,9 @@ configiface() { DV="vlan$VLAN" fi fi - fi + fi # INTERACTIVE=true + # Use DHCP broadcast? if ("${INTERACTIVE}" && "${DIALOG}" --yesno "${MESSAGE2}" 8 45) || \ (! "${INTERACTIVE}" && [[ "${METHOD}" == 'dhcp' ]]) ; then if [ -w /etc/network/interfaces ]; then @@ -457,7 +463,14 @@ configiface() { {if(!(found+lastblank)){print}} END{print "iface '"$DV"' inet dhcp";if("'"$PDV"'"!=""){print "\tvlan-raw-device '"$PDV"'"}}' \ /etc/network/interfaces >"$TMP" - echo -e "$IWOURLINE" >> "$TMP" + case "$DV" in + "$WLAN") + # write wireless configuration only when we are dealing with a wireless device, + # it might be set from a previous configuration run of a wireless device + # while the currently configured network device isn't a wireless device + echo -e "$IWOURLINE" >> "$TMP" + ;; + esac #echo -e "\n\n" >> $TMP cat "$TMP" >/etc/network/interfaces rm -f "$TMP" @@ -499,6 +512,17 @@ configiface() { fi if [ -w /etc/network/interfaces ]; then + case "$DV" in + "$WLAN") + ;; + *) + # ensure we don't leak the IWOURLINE into the + # following awk command line, if we are configuring + # a device without wireless capabilities + unset IWOURLINE + ;; + esac + awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}} {if(!found){print}} END{print "\niface '"$DV"' inet static\n\taddress '"$IP"'\n\tnetmask '"$NM"'\n\tnetwork '"${IP%.*}.0"'";if("'"$BC"'"!=""){print "\tbroadcast '"$BC"'"};if("'"$DG"'"!=""){print "\tgateway '"$DG"'"};if("'"$NS"'"!=""){print "\tdns-nameservers '"$NS"'"};if("'"$PDV"'"!=""){print "\tvlan-raw-device '"$PDV"'"};if("'"$IWOURLINE"'"!=""){print "'"$IWOURLINE"'"};print "\n"}' \ @@ -511,7 +535,7 @@ configiface() { #addauto fi - fi + fi # Use DHCP broadcast? echo "Done." }