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"
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=""
$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
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
{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"
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"}' \
#addauto
fi
- fi
+ fi # Use DHCP broadcast?
echo "Done."
}