xref: /freebsd/usr.sbin/bsdinstall/scripts/wlanconfig (revision 877ea0472189a40fb6de77c59a403b75ecda99bb)
12118f387SNathan Whitehorn#!/bin/sh
22118f387SNathan Whitehorn#-
32118f387SNathan Whitehorn# Copyright (c) 2011 Nathan Whitehorn
4f18789d7SDevin Teske# Copyright (c) 2013-2016 Devin Teske
52118f387SNathan Whitehorn# All rights reserved.
62118f387SNathan Whitehorn#
72118f387SNathan Whitehorn# Redistribution and use in source and binary forms, with or without
82118f387SNathan Whitehorn# modification, are permitted provided that the following conditions
92118f387SNathan Whitehorn# are met:
102118f387SNathan Whitehorn# 1. Redistributions of source code must retain the above copyright
112118f387SNathan Whitehorn#    notice, this list of conditions and the following disclaimer.
122118f387SNathan Whitehorn# 2. Redistributions in binary form must reproduce the above copyright
132118f387SNathan Whitehorn#    notice, this list of conditions and the following disclaimer in the
142118f387SNathan Whitehorn#    documentation and/or other materials provided with the distribution.
152118f387SNathan Whitehorn#
162118f387SNathan Whitehorn# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
172118f387SNathan Whitehorn# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
182118f387SNathan Whitehorn# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
192118f387SNathan Whitehorn# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
202118f387SNathan Whitehorn# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
212118f387SNathan Whitehorn# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
222118f387SNathan Whitehorn# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
232118f387SNathan Whitehorn# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
242118f387SNathan Whitehorn# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
252118f387SNathan Whitehorn# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
262118f387SNathan Whitehorn# SUCH DAMAGE.
272118f387SNathan Whitehorn#
282118f387SNathan Whitehorn# $FreeBSD$
29bc4a673fSDevin Teske#
30bc4a673fSDevin Teske############################################################ INCLUDES
31bc4a673fSDevin Teske
32bc4a673fSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig"
33bc4a673fSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1
344913f849SAndriy Voskoboinykf_include $BSDCFG_SHARE/dialog.subr
3558dc38bdSDevin Teskef_dialog_backtitle "FreeBSD Installer"
36bc4a673fSDevin Teske
37f18789d7SDevin Teske############################################################ FUNCTIONS
382118f387SNathan Whitehorn
394913f849SAndriy Voskoboinykcountry_set()
404913f849SAndriy Voskoboinyk{
41bede0708SDevin Teske	local error_str iface_up ifconfig_args=
424913f849SAndriy Voskoboinyk
4397a4c9f0SDevin Teske	#
444913f849SAndriy Voskoboinyk	# Setup what was selected
4597a4c9f0SDevin Teske	# NB: Do not change order of arguments (or regdomain will be ignored)
4697a4c9f0SDevin Teske	#
47114a587eSDevin Teske	[ "$2" ] && ifconfig_args="$ifconfig_args country $2"
48114a587eSDevin Teske	[ "$1" ] && ifconfig_args="$ifconfig_args regdomain $1"
49114a587eSDevin Teske	[ "$ifconfig_args" ] || return $SUCCESS # Nothing to do
50114a587eSDevin Teske	ifconfig_args="${ifconfig_args# }"
514913f849SAndriy Voskoboinyk
524913f849SAndriy Voskoboinyk	# Regdomain/country cannot be applied while interface is running
53138ab67aSDevin Teske	iface_up=$( ifconfig -lu | grep -w $WLAN_IFACE )
54e2025334SDevin Teske	[ "$iface_up" ] && ifconfig $WLAN_IFACE down
55138ab67aSDevin Teske	error_str=$( ifconfig $WLAN_IFACE $ifconfig_args 2>&1 |
561cac9fc2SDevin Teske		sed -e 's/ifconfig: //' )
5738a99423SDevin Teske	if [ "$iface_up" ]; then
584913f849SAndriy Voskoboinyk		# Restart wpa_supplicant(8) (should not fail).
594913f849SAndriy Voskoboinyk		wpa_supplicant -B -i $WLAN_IFACE -c \
608d5182d6SDevin Teske			"$BSDINSTALL_TMPETC/wpa_supplicant.conf"
614913f849SAndriy Voskoboinyk	fi
6238a99423SDevin Teske	if [ "$error_str" ]; then
63ea2e60b0SDevin Teske		$DIALOG \
642abc4c24SDevin Teske			--title "Error" \
657797a597SDevin Teske			--backtitle "$DIALOG_BACKTITLE" \
662abc4c24SDevin Teske			--yes-label Change \
672abc4c24SDevin Teske			--no-label Ignore \
682abc4c24SDevin Teske			--yesno \
692abc4c24SDevin Teske			"Error while applying chosen settings ($error_str)" \
702abc4c24SDevin Teske			0 0
714913f849SAndriy Voskoboinyk		if [ $? -eq $DIALOG_OK ]; then
724913f849SAndriy Voskoboinyk			return $FAILURE # Restart
734913f849SAndriy Voskoboinyk		else
744913f849SAndriy Voskoboinyk			return $SUCCESS # Skip
754913f849SAndriy Voskoboinyk		fi
764913f849SAndriy Voskoboinyk	else
77b5938e7dSDevin Teske		awk 'sub(/^\t\t/,"")||1' \
78b5938e7dSDevin Teske			> "$BSDINSTALL_TMPETC/rc.conf.net.wlan" <<-EOF
79b5938e7dSDevin Teske		create_args_$WLAN_IFACE="$ifconfig_args"
80b5938e7dSDevin Teske		EOF
814913f849SAndriy Voskoboinyk	fi
824913f849SAndriy Voskoboinyk
834913f849SAndriy Voskoboinyk	return $SUCCESS
844913f849SAndriy Voskoboinyk}
854913f849SAndriy Voskoboinyk
864913f849SAndriy Voskoboinykdialog_country_select()
874913f849SAndriy Voskoboinyk{
88bede0708SDevin Teske	local input regdomains countries regdomain country
8948e9fce2SDevin Teske	local no_default="<not selected>"
9071ef4d58SDevin Teske	local default_regdomain="${1:-$no_default}"
9171ef4d58SDevin Teske	local default_country="${2:-$no_default}"
924913f849SAndriy Voskoboinyk
9397a4c9f0SDevin Teske	#
944913f849SAndriy Voskoboinyk	# Parse available countries/regdomains
9597a4c9f0SDevin Teske	#
961cac9fc2SDevin Teske	input=$( ifconfig $WLAN_IFACE list countries | sed -e 's/DEBUG//gi' )
971cac9fc2SDevin Teske	regdomains=$( echo $input | sed -e 's/.*domains://' | tr ' ' '\n' |
98138ab67aSDevin Teske		sort | tr '\n' ' ' )
99edcf3303SDevin Teske	countries=$( echo $input | awk '{
100edcf3303SDevin Teske		sub(/Country codes:/, "")
101edcf3303SDevin Teske		sub(/Regulatory.*/, "")
1024913f849SAndriy Voskoboinyk		for (i = 1; i <= NF; i++) {
1034913f849SAndriy Voskoboinyk			printf "%s", $i
1040e638f57SDevin Teske			if ($i ~ /[[:lower:]]/)
1057bcf4508SDevin Teske				printf $(i+1) ~ /[[:lower:]]/ ? "\\\\\\ " : "\n"
1064913f849SAndriy Voskoboinyk			else
1074913f849SAndriy Voskoboinyk				printf " "
1084913f849SAndriy Voskoboinyk		}
109138ab67aSDevin Teske	}' | sort -k 2 | tr '\n' ' ' )
1104913f849SAndriy Voskoboinyk
11158ce2edcSDevin Teske	f_dialog_title "Regdomain selection"
11258ce2edcSDevin Teske	f_dialog_menu_size height width rows "$DIALOG_TITLE" \
1136ea6e3faSDevin Teske		"$DIALOG_BACKTITLE" "Select your regdomain." "" $regdomains
114ea2e60b0SDevin Teske	regdomain=$( sh -c "$DIALOG \
11558ce2edcSDevin Teske		--title \"$DIALOG_TITLE\" \
1167797a597SDevin Teske		--backtitle \"$DIALOG_BACKTITLE\" \
1174913f849SAndriy Voskoboinyk		--cancel-label \"Skip\" \
11871ef4d58SDevin Teske		--default-item \"$default_regdomain\" \
1194913f849SAndriy Voskoboinyk		--no-items \
1204913f849SAndriy Voskoboinyk		--stdout \
1214913f849SAndriy Voskoboinyk		--menu \"Select your regdomain.\" \
12276b07bd9SDevin Teske		$height $width $rows $regdomains"
12376b07bd9SDevin Teske	)
1244913f849SAndriy Voskoboinyk
12558ce2edcSDevin Teske	f_dialog_title "Country selection"
12658ce2edcSDevin Teske	f_dialog_menu_size height width rows "$DIALOG_TITLE" \
1276ea6e3faSDevin Teske		"$DIALOG_BACKTITLE" "Select your country." "" $countries
128ea2e60b0SDevin Teske	country=$( sh -c "$DIALOG \
12958ce2edcSDevin Teske		--title \"$DIALOG_TITLE\" \
1307797a597SDevin Teske		--backtitle \"$DIALOG_BACKTITLE\" \
1314913f849SAndriy Voskoboinyk		--cancel-label \"Skip\" \
13271ef4d58SDevin Teske		--default-item \"$default_country\" \
1334913f849SAndriy Voskoboinyk		--stdout \
1344913f849SAndriy Voskoboinyk		--menu \"Select your country.\" \
13576b07bd9SDevin Teske		$height $width $rows $countries"
13676b07bd9SDevin Teske	)
1374913f849SAndriy Voskoboinyk
1384913f849SAndriy Voskoboinyk	country_set "$regdomain" "$country"
1394913f849SAndriy Voskoboinyk}
1404913f849SAndriy Voskoboinyk
141f18789d7SDevin Teske############################################################ MAIN
142f18789d7SDevin Teske
1434fa8c81cSDevin Teske: > "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
1448d5182d6SDevin Teskechmod 0600 "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
145f18789d7SDevin Teske
146b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" << EOF
147b5938e7dSDevin Teskectrl_interface=/var/run/wpa_supplicant
148b5938e7dSDevin Teskeeapol_version=2
149b5938e7dSDevin Teskeap_scan=1
150b5938e7dSDevin Teskefast_reauth=1
151b5938e7dSDevin Teske
152b5938e7dSDevin TeskeEOF
153f18789d7SDevin Teske
15497a4c9f0SDevin Teske#
155f18789d7SDevin Teske# Try to reach wpa_supplicant. If it isn't running and we can modify the
156f18789d7SDevin Teske# existing system, start it. Otherwise, fail.
15797a4c9f0SDevin Teske#
15838a99423SDevin Teske(wpa_cli ping >/dev/null 2>/dev/null || ([ "$BSDINSTALL_CONFIGCURRENT" ] &&
1598d5182d6SDevin Teske	wpa_supplicant -B -i $1 -c "$BSDINSTALL_TMPETC/wpa_supplicant.conf")) ||
160ea2e60b0SDevin Teske	($DIALOG --backtitle "$DIALOG_BACKTITLE" --title "Error" --msgbox \
161f18789d7SDevin Teske	"Could not start wpa_supplicant!" 0 0; exit 1) || exit 1
162f18789d7SDevin Teske
163f18789d7SDevin Teske# See if we succeeded
164f18789d7SDevin Teskewpa_cli ping >/dev/null 2>/dev/null
16538a99423SDevin Teskeif [ $? -ne 0 -a ! "$BSDINSTALL_CONFIGCURRENT" ]; then
166ea2e60b0SDevin Teske	$DIALOG \
1672abc4c24SDevin Teske		--title "Error" \
1687797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
1692abc4c24SDevin Teske		--msgbox "Wireless cannot be configured without making changes to the local system!" \
1702abc4c24SDevin Teske		0 0
171f18789d7SDevin Teske	exit 1
172f18789d7SDevin Teskefi
173f18789d7SDevin Teske
17497a4c9f0SDevin Teske#
1754913f849SAndriy Voskoboinyk# There is no way to check country/regdomain without (possible)
1764913f849SAndriy Voskoboinyk# interface state modification
17797a4c9f0SDevin Teske#
17838a99423SDevin Teskeif [ "$BSDINSTALL_CONFIGCURRENT" ]; then
1794913f849SAndriy Voskoboinyk	# Get current country/regdomain for selected interface
1809ca8b7beSDevin Teske	WLAN_IFACE=$( wpa_cli ifname | tail -1 )
1819ca8b7beSDevin Teske	INPUT=$( ifconfig $WLAN_IFACE list regdomain | head -1 )
182138ab67aSDevin Teske	DEF_REGDOMAIN=$( echo $INPUT | cut -w -f 2 )
183138ab67aSDevin Teske	DEF_COUNTRY=$( echo $INPUT | cut -w -f 4 )
184c62801e2SDevin Teske	[ "$DEF_REGDOMAIN" = 0 ] && DEF_REGDOMAIN="<not selected>"
1850b04945dSDevin Teske	[ "$DEF_COUNTRY" = 0 ] && DEF_COUNTRY="<not selected>"
18658ce2edcSDevin Teske	f_dialog_title "Regdomain/country"
187ea2e60b0SDevin Teske	$DIALOG \
18858ce2edcSDevin Teske		--title "$DIALOG_TITLE" \
1897797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
1902abc4c24SDevin Teske		--yesno "Change regdomain/country (now $DEF_REGDOMAIN/$DEF_COUNTRY)?" \
1912abc4c24SDevin Teske		0 0
1924913f849SAndriy Voskoboinyk	if [ $? -eq 0 ]; then
1934913f849SAndriy Voskoboinyk		while :
1944913f849SAndriy Voskoboinyk		do
1954913f849SAndriy Voskoboinyk			dialog_country_select "$DEF_REGDOMAIN" "$DEF_COUNTRY"
1964913f849SAndriy Voskoboinyk			if [ $? -eq $SUCCESS ]; then
1974913f849SAndriy Voskoboinyk				break
1984913f849SAndriy Voskoboinyk			fi
1994913f849SAndriy Voskoboinyk		done
2004913f849SAndriy Voskoboinyk	fi
2014913f849SAndriy Voskoboinykfi
2024913f849SAndriy Voskoboinyk
20376b07bd9SDevin Teskewhile :; do
2043220bdd8SDevin Teske	SCANSSID=0
205bc4a673fSDevin Teske	output=$( wpa_cli scan 2>&1 )
206bc4a673fSDevin Teske	f_dprintf "%s" "$output"
20758ce2edcSDevin Teske	f_dialog_title "Scanning"
208ea2e60b0SDevin Teske	$DIALOG \
20958ce2edcSDevin Teske		--title "$DIALOG_TITLE" \
2107797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
2114913f849SAndriy Voskoboinyk		--ok-label "Skip" \
2122118f387SNathan Whitehorn		--pause "Waiting 5 seconds to scan for wireless networks..." \
2132118f387SNathan Whitehorn		9 40 5 || exit 1
2142118f387SNathan Whitehorn
215138ab67aSDevin Teske	SCAN_RESULTS=$( wpa_cli scan_results )
2162abc4c24SDevin Teske	NETWORKS=$( echo "$SCAN_RESULTS" | awk -F '\t' '
2172abc4c24SDevin Teske		/..:..:..:..:..:../ {
2182abc4c24SDevin Teske			if (length($5) > 0)
2198bcf5646SDevin Teske				printf("\"%s\"\t%s\n", $5, $4)
2202abc4c24SDevin Teske		}
2212abc4c24SDevin Teske	' | sort | uniq )
2222118f387SNathan Whitehorn
22338a99423SDevin Teske	if [ ! "$NETWORKS" ]; then
22458ce2edcSDevin Teske		f_dialog_title "Error"
225ea2e60b0SDevin Teske		$DIALOG \
22658ce2edcSDevin Teske			--title "$DIALOG_TITLE" \
2277797a597SDevin Teske			--backtitle "$DIALOG_BACKTITLE" \
2282abc4c24SDevin Teske			--yesno "No wireless networks were found. Rescan?" \
2292abc4c24SDevin Teske			0 0 && continue
2302118f387SNathan Whitehorn		exit 1
2312118f387SNathan Whitehorn	fi
2322118f387SNathan Whitehorn
23358ce2edcSDevin Teske	f_dialog_title "Network Selection"
234ea2e60b0SDevin Teske	NETWORK=$( sh -c "$DIALOG \
23558ce2edcSDevin Teske		--title \"$DIALOG_TITLE\" \
2367797a597SDevin Teske		--backtitle \"$DIALOG_BACKTITLE\" \
2372abc4c24SDevin Teske		--extra-button \
2382abc4c24SDevin Teske		--extra-label \"Rescan\" \
2392abc4c24SDevin Teske		--menu \"Select a wireless network to connect to.\" \
2402abc4c24SDevin Teske		0 0 0 \
2412abc4c24SDevin Teske		$( echo $NETWORKS | tr '\n' ' ' )" \
242*877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2432abc4c24SDevin Teske	)
2442118f387SNathan Whitehorn	case $? in
2455357f8f7SDevin Teske	$DIALOG_OK)
2464913f849SAndriy Voskoboinyk		break
2472118f387SNathan Whitehorn		;;
2485357f8f7SDevin Teske	$DIALOG_CANCEL)
2493220bdd8SDevin Teske		# here we ask if the user wants to select the network manually
2503220bdd8SDevin Teske		f_dialog_title "Network Selection"
2513220bdd8SDevin Teske		f_dialog_yesno "Do you want to select the network manually?" || exit 1
2523220bdd8SDevin Teske		f_dialog_input NETWORK "Enter SSID" || exit 1
253ea2e60b0SDevin Teske		ENCRYPTION=$( $DIALOG \
2542abc4c24SDevin Teske			--title "$DIALOG_TITLE" \
2557797a597SDevin Teske			--backtitle "$DIALOG_BACKTITLE" \
2562abc4c24SDevin Teske			--menu "Select encryption type" \
2572abc4c24SDevin Teske			0 0 0 \
2582abc4c24SDevin Teske			"1 WPA/WPA2 PSK" "" \
2592abc4c24SDevin Teske			"2 WPA/WPA2 EAP" "" \
2602abc4c24SDevin Teske			"3 WEP" "" \
2612abc4c24SDevin Teske			"0 None" "" \
262*877ea047SDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2632abc4c24SDevin Teske		) || exit 1
2643220bdd8SDevin Teske		SCANSSID=1
2653220bdd8SDevin Teske		f_dialog_title_restore
2663220bdd8SDevin Teske		break
2672118f387SNathan Whitehorn		;;
2685357f8f7SDevin Teske	$DIALOG_EXTRA) # Rescan
2692118f387SNathan Whitehorn		;;
2702118f387SNathan Whitehorn	esac
2714913f849SAndriy Voskoboinykdone
2722118f387SNathan Whitehorn
2732abc4c24SDevin Teske[ "$ENCRYPTION" ] || ENCRYPTION=$( echo "$NETWORKS" |
2748bcf5646SDevin Teske	awk -F '\t' "/^\"$NETWORK\"\t/ { printf(\"%s\n\", \\\$2 ) }" )
2752118f387SNathan Whitehorn
2762118f387SNathan Whitehornif echo $ENCRYPTION | grep -q 'PSK'; then
277ea2e60b0SDevin Teske	PASS=$( $DIALOG \
2782abc4c24SDevin Teske		--title "WPA Setup" \
2797797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
2807797a597SDevin Teske		--insecure \
2812abc4c24SDevin Teske		--mixedform "" \
2822abc4c24SDevin Teske		0 0 0 \
2832118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
284a4de89deSChristian Brueffer		"Password" 2 0 "" 2 12 15 63 1 \
285*877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
286bef42d18SDevin Teske	) || exec "$0" "$@"
287b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
288b5938e7dSDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
289b5938e7dSDevin Teske	network={
290b5938e7dSDevin Teske		ssid="$NETWORK"
2913220bdd8SDevin Teske		scan_ssid=$SCANSSID
292b5938e7dSDevin Teske		psk="$PASS"
2932118f387SNathan Whitehorn		priority=5
294b5938e7dSDevin Teske	}
295b5938e7dSDevin Teske	EOF
296093b9154SGavin Atkinsonelif echo $ENCRYPTION | grep -q EAP; then
297ea2e60b0SDevin Teske	USERPASS=$( $DIALOG \
2982abc4c24SDevin Teske		--title "WPA-Enterprise Setup" \
2997797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
3007797a597SDevin Teske		--insecure \
3012abc4c24SDevin Teske		--mixedform "" 0 0 0 \
302093b9154SGavin Atkinson		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
303093b9154SGavin Atkinson		"Username" 2 0 "" 2 12 25 63 0 \
304093b9154SGavin Atkinson		"Password" 3 0 "" 3 12 25 63 1 \
305*877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
306bef42d18SDevin Teske	) || exec "$0" "$@"
307b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
308b5938e7dSDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
309b5938e7dSDevin Teske	network={
310b5938e7dSDevin Teske		ssid="$NETWORK"
3113220bdd8SDevin Teske		scan_ssid=$SCANSSID
312b5938e7dSDevin Teske		key_mgmt=WPA-EAP$(
313093b9154SGavin Atkinson		echo "$USERPASS" | awk '
3148bcf5646SDevin Teske			NR == 1 { printf "\n\t\tidentity=\"%s\"", $1 }
3158bcf5646SDevin Teske			NR == 2 { printf "\n\t\tpassword=\"%s\"", $1 }
3160b8f01feSDevin Teske		' )
317b5938e7dSDevin Teske		priority=5
318b5938e7dSDevin Teske	}
319b5938e7dSDevin Teske	EOF
3202118f387SNathan Whitehornelif echo $ENCRYPTION | grep -q WEP; then
321ea2e60b0SDevin Teske	WEPKEY=$( $DIALOG \
3222abc4c24SDevin Teske		--title "WEP Setup" \
3237797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE" \
3247797a597SDevin Teske		--insecure \
3252abc4c24SDevin Teske		--mixedform "" 0 0 0 \
3262118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
3272118f387SNathan Whitehorn		"WEP Key 0" 2 0 "" 2 12 15 0 1 \
328*877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
329bef42d18SDevin Teske	) || exec "$0" "$@"
330b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
331b5938e7dSDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
332b5938e7dSDevin Teske	network={
333b5938e7dSDevin Teske		ssid="$NETWORK"
3343220bdd8SDevin Teske		scan_ssid=$SCANSSID
3352118f387SNathan Whitehorn		key_mgmt=NONE
336b5938e7dSDevin Teske		wep_key0="$WEPKEY"
3372118f387SNathan Whitehorn		wep_tx_keyidx=0
3382118f387SNathan Whitehorn		priority=5
339b5938e7dSDevin Teske	}
340b5938e7dSDevin Teske	EOF
3412118f387SNathan Whitehornelse # Open
342b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
343b5938e7dSDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
344b5938e7dSDevin Teske	network={
345b5938e7dSDevin Teske		ssid="$NETWORK"
3463220bdd8SDevin Teske		scan_ssid=$SCANSSID
3472118f387SNathan Whitehorn		key_mgmt=NONE
3482118f387SNathan Whitehorn		priority=5
349b5938e7dSDevin Teske	}
350b5938e7dSDevin Teske	EOF
3512118f387SNathan Whitehornfi
3522118f387SNathan Whitehorn
3532118f387SNathan Whitehorn# Connect to any open networks policy
354b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" << EOF
355b5938e7dSDevin Teskenetwork={
356ebffa060SGavin Atkinson	priority=0
3572118f387SNathan Whitehorn	key_mgmt=NONE
358b5938e7dSDevin Teske}
359b5938e7dSDevin TeskeEOF
3602118f387SNathan Whitehorn
3612118f387SNathan Whitehorn# Bring up new network
362bc4a673fSDevin Teskeif [ "$BSDINSTALL_CONFIGCURRENT" ]; then
363bc4a673fSDevin Teske	output=$( wpa_cli reconfigure 2>&1 )
364bc4a673fSDevin Teske	f_dprintf "%s" "$output"
365bc4a673fSDevin Teskefi
3662118f387SNathan Whitehorn
3670a835493SDevin Teskeexit $SUCCESS
368bc4a673fSDevin Teske
369bc4a673fSDevin Teske################################################################################
370bc4a673fSDevin Teske# END
371bc4a673fSDevin Teske################################################################################
372