xref: /freebsd/usr.sbin/bsdinstall/scripts/wlanconfig (revision 5399052c63a7a3d2f54615d31bfd092ab887a600)
12118f387SNathan Whitehorn#!/bin/sh
22118f387SNathan Whitehorn#-
32118f387SNathan Whitehorn# Copyright (c) 2011 Nathan Whitehorn
463939df8SDevin Teske# Copyright (c) 2013-2020 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#
28bc4a673fSDevin Teske#
29bc4a673fSDevin Teske############################################################ INCLUDES
30bc4a673fSDevin Teske
31bc4a673fSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig"
32bc4a673fSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1
334913f849SAndriy Voskoboinykf_include $BSDCFG_SHARE/dialog.subr
34cc42ef53SBrad Davisf_dialog_backtitle "$OSNAME Installer"
35bc4a673fSDevin Teske
36f18789d7SDevin Teske############################################################ FUNCTIONS
372118f387SNathan Whitehorn
384913f849SAndriy Voskoboinykcountry_set()
394913f849SAndriy Voskoboinyk{
40bede0708SDevin Teske	local error_str iface_up ifconfig_args=
414913f849SAndriy Voskoboinyk
4297a4c9f0SDevin Teske	#
434913f849SAndriy Voskoboinyk	# Setup what was selected
4497a4c9f0SDevin Teske	# NB: Do not change order of arguments (or regdomain will be ignored)
4597a4c9f0SDevin Teske	#
46114a587eSDevin Teske	[ "$2" ] && ifconfig_args="$ifconfig_args country $2"
47114a587eSDevin Teske	[ "$1" ] && ifconfig_args="$ifconfig_args regdomain $1"
48114a587eSDevin Teske	[ "$ifconfig_args" ] || return $SUCCESS # Nothing to do
49114a587eSDevin Teske	ifconfig_args="${ifconfig_args# }"
504913f849SAndriy Voskoboinyk
514913f849SAndriy Voskoboinyk	# Regdomain/country cannot be applied while interface is running
5249748e0aSDevin Teske	iface_up=$( ifconfig -lu | grep -w "$WLAN_IFACE" )
5349748e0aSDevin Teske	[ "$iface_up" ] && ifconfig "$WLAN_IFACE" down
549a46c67aSDevin Teske	f_eval_catch -dk error_str wlanconfig ifconfig "ifconfig %s %s" \
559a46c67aSDevin Teske		"$WLAN_IFACE" "$ifconfig_args"
569a46c67aSDevin Teske	error_str="${error_str#ifconfig: }"
574913f849SAndriy Voskoboinyk	# Restart wpa_supplicant(8) (should not fail).
58*5399052cSBjoern A. Zeeb	[ "$iface_up" ] && ifconfig "$WLAN_IFACE" up && \
59*5399052cSBjoern A. Zeeb	    f_eval_catch -d wlanconfig wpa_supplicant \
6094f5aec6SDevin Teske		'wpa_supplicant -B -i "%s" -c "%s/wpa_supplicant.conf"' \
6194f5aec6SDevin Teske		"$WLAN_IFACE" "$BSDINSTALL_TMPETC"
6238a99423SDevin Teske	if [ "$error_str" ]; then
6363939df8SDevin Teske		$DIALOG --title "$msg_error" \
647797a597SDevin Teske			--backtitle "$DIALOG_BACKTITLE" \
652abc4c24SDevin Teske			--yes-label Change \
662abc4c24SDevin Teske			--no-label Ignore \
672abc4c24SDevin Teske			--yesno \
682abc4c24SDevin Teske			"Error while applying chosen settings ($error_str)" \
696e038cc2SDevin Teske			0 0 || return $SUCCESS # Skip
704913f849SAndriy Voskoboinyk		return $FAILURE # Restart
714913f849SAndriy Voskoboinyk	else
7263939df8SDevin Teske		cat > "$BSDINSTALL_TMPETC/rc.conf.net.wlan" <<-EOF
73b5938e7dSDevin Teske		create_args_$WLAN_IFACE="$ifconfig_args"
74b5938e7dSDevin Teske		EOF
754913f849SAndriy Voskoboinyk	fi
764913f849SAndriy Voskoboinyk
774913f849SAndriy Voskoboinyk	return $SUCCESS
784913f849SAndriy Voskoboinyk}
794913f849SAndriy Voskoboinyk
804913f849SAndriy Voskoboinykdialog_country_select()
814913f849SAndriy Voskoboinyk{
821c612112SDevin Teske	local input regdomains countries regdomain country prompt
8348e9fce2SDevin Teske	local no_default="<not selected>"
8471ef4d58SDevin Teske	local default_regdomain="${1:-$no_default}"
8571ef4d58SDevin Teske	local default_country="${2:-$no_default}"
864913f849SAndriy Voskoboinyk
8797a4c9f0SDevin Teske	#
884913f849SAndriy Voskoboinyk	# Parse available countries/regdomains
8997a4c9f0SDevin Teske	#
9049748e0aSDevin Teske	input=$( ifconfig "$WLAN_IFACE" list countries | sed -e 's/DEBUG//gi' )
9195ee591eSDevin Teske	regdomains=$( echo "$input" | awk '
9295ee591eSDevin Teske		sub(/.*domains:/, ""), /[^[:alnum:][[:space:]]/ {
9395ee591eSDevin Teske			n = split($0, domains)
9495ee591eSDevin Teske			for (i = 1; i <= n; i++)
9595ee591eSDevin Teske				printf "'\''%s'\'' '\'\''", domains[i]
9695ee591eSDevin Teske		}
97d401d36cSDevin Teske	' | sort )
98e7f2eb12SDevin Teske	countries=$( echo "$input" | awk '
99e7f2eb12SDevin Teske		sub(/Country codes:/, ""), sub(/Regulatory.*/, "") {
100e7f2eb12SDevin Teske			while (match($0, /[[:upper:]][[:upper:][:digit:]] /)) {
101e7f2eb12SDevin Teske				country = substr($0, RSTART)
10263939df8SDevin Teske				sub(/ [[:upper:]][[:upper:][:digit:]].*/, "",
10363939df8SDevin Teske					country)
104e7f2eb12SDevin Teske				code = substr(country, 1, 2)
105e7f2eb12SDevin Teske				desc = substr(country, 4)
106e7f2eb12SDevin Teske				sub(/[[:space:]]*$/, "", desc)
107e7f2eb12SDevin Teske				printf "'\''%s'\'' '\''%s'\''\n", code, desc
108e7f2eb12SDevin Teske				$0 = substr($0, RSTART + RLENGTH)
1094913f849SAndriy Voskoboinyk			}
110e7f2eb12SDevin Teske		}
111e7f2eb12SDevin Teske	' | sort )
1124913f849SAndriy Voskoboinyk
11358ce2edcSDevin Teske	f_dialog_title "Regdomain selection"
1141c612112SDevin Teske	prompt="Select your regdomain."
11595ee591eSDevin Teske	eval f_dialog_menu_size height width rows \
11695ee591eSDevin Teske		\"\$DIALOG_TITLE\" \"\$DIALOG_BACKTITLE\" \
11795ee591eSDevin Teske		\"\$prompt\" \"\" $regdomains
11895ee591eSDevin Teske	regdomain=$( eval $DIALOG \
11995ee591eSDevin Teske		--title \"\$DIALOG_TITLE\"             \
12095ee591eSDevin Teske		--backtitle \"\$DIALOG_BACKTITLE\"     \
12195ee591eSDevin Teske		--cancel-label \"\$msg_skip\"          \
12295ee591eSDevin Teske		--default-item \"\$default_regdomain\" \
12395ee591eSDevin Teske		--menu \"\$prompt\"                    \
12495ee591eSDevin Teske		$height $width $rows                   \
12595ee591eSDevin Teske		$regdomains                            \
12695ee591eSDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
12776b07bd9SDevin Teske	)
128f52733d4SDevin Teske	f_dialog_data_sanitize regdomain
1294913f849SAndriy Voskoboinyk
13058ce2edcSDevin Teske	f_dialog_title "Country selection"
1311c612112SDevin Teske	prompt="Select your country."
132e7f2eb12SDevin Teske	eval f_dialog_menu_size height width rows \
133e7f2eb12SDevin Teske		\"\$DIALOG_TITLE\" \"\$DIALOG_BACKTITLE\" \
1341c612112SDevin Teske		\"\$prompt\" \"\" $countries
135e7f2eb12SDevin Teske	country=$( eval $DIALOG \
136e7f2eb12SDevin Teske		--title \"\$DIALOG_TITLE\"           \
137e7f2eb12SDevin Teske		--backtitle \"\$DIALOG_BACKTITLE\"   \
138e7f2eb12SDevin Teske		--cancel-label \"\$msg_skip\"        \
139e2577019SDevin Teske		--default-item \"\$default_country\" \
1401c612112SDevin Teske		--menu \"\$prompt\"                  \
141e7f2eb12SDevin Teske		$height $width $rows                 \
142e7f2eb12SDevin Teske		$countries                           \
143e7f2eb12SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
14476b07bd9SDevin Teske	)
145f52733d4SDevin Teske	f_dialog_data_sanitize country
1464913f849SAndriy Voskoboinyk
1474913f849SAndriy Voskoboinyk	country_set "$regdomain" "$country"
1484913f849SAndriy Voskoboinyk}
1494913f849SAndriy Voskoboinyk
150f18789d7SDevin Teske############################################################ MAIN
151f18789d7SDevin Teske
1524fa8c81cSDevin Teske: > "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
1538d5182d6SDevin Teskechmod 0600 "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
154f18789d7SDevin Teske
155b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
156b5938e7dSDevin Teskectrl_interface=/var/run/wpa_supplicant
157b5938e7dSDevin Teskeeapol_version=2
158b5938e7dSDevin Teskeap_scan=1
159b5938e7dSDevin Teskefast_reauth=1
160b5938e7dSDevin Teske
161b5938e7dSDevin TeskeEOF
162f18789d7SDevin Teske
16397a4c9f0SDevin Teske#
164f18789d7SDevin Teske# Try to reach wpa_supplicant. If it isn't running and we can modify the
165f18789d7SDevin Teske# existing system, start it. Otherwise, fail.
16697a4c9f0SDevin Teske#
1679a46c67aSDevin Teskeif ! f_eval_catch -d wlanconfig wpa_cli "wpa_cli ping"; then
1680724c87cSDevin Teske	if [ ! "$BSDINSTALL_CONFIGCURRENT" ]; then
1691d92999cSDevin Teske		f_show_err "Wireless cannot be configured without %s" \
1701d92999cSDevin Teske		           "making changes to the local system!"
1710724c87cSDevin Teske		exit 1
1720724c87cSDevin Teske	fi
1739a46c67aSDevin Teske	f_eval_catch wlanconfig wpa_supplicant \
1749a46c67aSDevin Teske		'wpa_supplicant -B -i "%s" -c "%s/wpa_supplicant.conf"' \
1759a46c67aSDevin Teske		"$1" "$BSDINSTALL_TMPETC" || exit 1
176f18789d7SDevin Teske
1776ef8ca67SDevin Teske	# See if we succeeded
1789a46c67aSDevin Teske	f_eval_catch wlanconfig wpa_cli "wpa_cli ping" || exit 1
1796b77f63eSDevin Teskefi
1806b77f63eSDevin Teske
18197a4c9f0SDevin Teske#
1824913f849SAndriy Voskoboinyk# There is no way to check country/regdomain without (possible)
1834913f849SAndriy Voskoboinyk# interface state modification
18497a4c9f0SDevin Teske#
18538a99423SDevin Teskeif [ "$BSDINSTALL_CONFIGCURRENT" ]; then
1864913f849SAndriy Voskoboinyk	# Get current country/regdomain for selected interface
187a7cc5680SDevin Teske	WLAN_IFACE=$( wpa_cli ifname | tail -n 1 )
188a7cc5680SDevin Teske	INPUT=$( ifconfig "$WLAN_IFACE" list regdomain | head -n 1 )
18966ef7d94SDevin Teske	DEF_REGDOMAIN=$( echo "$INPUT" | cut -w -f 2 )
19066ef7d94SDevin Teske	DEF_COUNTRY=$( echo "$INPUT" | cut -w -f 4 )
191c62801e2SDevin Teske	[ "$DEF_REGDOMAIN" = 0 ] && DEF_REGDOMAIN="<not selected>"
1920b04945dSDevin Teske	[ "$DEF_COUNTRY" = 0 ] && DEF_COUNTRY="<not selected>"
19358ce2edcSDevin Teske	f_dialog_title "Regdomain/country"
194b46ca7ceSDevin Teske	if f_yesno "Change regdomain/country ($DEF_REGDOMAIN/$DEF_COUNTRY)?"
195a9d33421SDevin Teske	then
196afcce2f5SDevin Teske		while ! dialog_country_select "$DEF_REGDOMAIN" "$DEF_COUNTRY"
197afcce2f5SDevin Teske		do :; done
1984913f849SAndriy Voskoboinyk	fi
1994913f849SAndriy Voskoboinykfi
2004913f849SAndriy Voskoboinyk
20176b07bd9SDevin Teskewhile :; do
2023220bdd8SDevin Teske	SCANSSID=0
2039a46c67aSDevin Teske	f_eval_catch -d wlanconfig wpa_cli "wpa_cli scan"
20458ce2edcSDevin Teske	f_dialog_title "Scanning"
2057e1166deSDevin Teske	f_dialog_pause "Waiting 5 seconds to scan for wireless networks..." 5 ||
2067e1166deSDevin Teske		exit 1
2072118f387SNathan Whitehorn
2089a46c67aSDevin Teske	f_eval_catch -dk SCAN_RESULTS wlanconfig wpa_cli "wpa_cli scan_results"
2092abc4c24SDevin Teske	NETWORKS=$( echo "$SCAN_RESULTS" | awk -F '\t' '
210be094a32SDevin Teske		/..:..:..:..:..:../ && $5 { printf "\"%s\"\t\"%s\"\n", $5, $4 }
2112abc4c24SDevin Teske	' | sort | uniq )
2122118f387SNathan Whitehorn
21338a99423SDevin Teske	if [ ! "$NETWORKS" ]; then
214d124dfc4SDevin Teske		f_dialog_title "$msg_error"
215d79a1355SDevin Teske		f_yesno "No wireless networks were found. Rescan?" && continue
216912df915SAlfonso S. Siciliano	else
21758ce2edcSDevin Teske		f_dialog_title "Network Selection"
218d5fddc4dSDevin Teske		prompt="Select a wireless network to connect to."
219b9f60abaSDevin Teske		f_dialog_menu_size height width rows "$DIALOG_TITLE" \
22055d29905SRenato Botelho			"$DIALOG_BACKTITLE" "$prompt" "" $NETWORKS
221d5fddc4dSDevin Teske		NETWORK=$( eval $DIALOG \
222d5fddc4dSDevin Teske			--title \"\$DIALOG_TITLE\"         \
223d5fddc4dSDevin Teske			--backtitle \"\$DIALOG_BACKTITLE\" \
2242abc4c24SDevin Teske			--extra-button                     \
2252abc4c24SDevin Teske			--extra-label \"Rescan\"           \
226d5fddc4dSDevin Teske			--menu \"\$prompt\"                \
227d5fddc4dSDevin Teske			$height $width $rows               \
228f3a8471eSDevin Teske			$NETWORKS                          \
229877ea047SDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2302abc4c24SDevin Teske		)
231912df915SAlfonso S. Siciliano	fi
232f52733d4SDevin Teske	retval=$?
233f52733d4SDevin Teske	f_dialog_data_sanitize NETWORK
234f52733d4SDevin Teske	case $retval in
23510458583SDevin Teske	$DIALOG_OK) break ;;
2365357f8f7SDevin Teske	$DIALOG_CANCEL)
23735af83c1SDevin Teske		# Ask if the user wants to select network manually
2383220bdd8SDevin Teske		f_dialog_title "Network Selection"
239a5119576SDevin Teske		f_yesno "Do you want to select the network manually?" || exit 1
2403220bdd8SDevin Teske		f_dialog_input NETWORK "Enter SSID" || exit 1
241d5fddc4dSDevin Teske		prompt="Select encryption type"
242d5fddc4dSDevin Teske		menu_list="
243d5fddc4dSDevin Teske			'1 WPA/WPA2 PSK' ''
244d5fddc4dSDevin Teske			'2 WPA/WPA2 EAP' ''
245d5fddc4dSDevin Teske			'3 WEP' ''
246d5fddc4dSDevin Teske			'0 None' ''
247d5fddc4dSDevin Teske		" # END-QUOTE
248d5fddc4dSDevin Teske		eval f_dialog_menu_size height width rows \"\$DIALOG_TITLE\" \
249d5fddc4dSDevin Teske			\"\$DIALOG_BACKTITLE\" \"\$prompt\" \"\" $menu_list
250d5fddc4dSDevin Teske		ENCRYPTION=$( eval $DIALOG \
251d5fddc4dSDevin Teske			--title \"\$DIALOG_TITLE\"         \
252d5fddc4dSDevin Teske			--backtitle \"\$DIALOG_BACKTITLE\" \
253d5fddc4dSDevin Teske			--menu \"\$prompt\"                \
254d5fddc4dSDevin Teske			$height $width $rows               \
255d5fddc4dSDevin Teske			$menu_list                         \
256877ea047SDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2572abc4c24SDevin Teske		) || exit 1
2583220bdd8SDevin Teske		SCANSSID=1
2593220bdd8SDevin Teske		break
2602118f387SNathan Whitehorn		;;
2615357f8f7SDevin Teske	$DIALOG_EXTRA) # Rescan
2622118f387SNathan Whitehorn		;;
2632118f387SNathan Whitehorn	esac
2644913f849SAndriy Voskoboinykdone
2652118f387SNathan Whitehorn
2662abc4c24SDevin Teske[ "$ENCRYPTION" ] || ENCRYPTION=$( echo "$NETWORKS" |
26701a2404cSDevin Teske	awk -F '\t' "/^\"$NETWORK\"\t/ { print \$2 }" )
2682118f387SNathan Whitehorn
2697599c854SDevin Teskeif echo "$ENCRYPTION" | grep -q PSK; then
270ea2e60b0SDevin Teske	PASS=$( $DIALOG \
2712abc4c24SDevin Teske		--title "WPA Setup"              \
2727797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
2737797a597SDevin Teske		--insecure                       \
2742abc4c24SDevin Teske		--mixedform ""                   \
2752abc4c24SDevin Teske		0 0 0                            \
2762118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
277a4de89deSChristian Brueffer		"Password" 2 0 "" 2 12 15 63 1   \
278877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
279bef42d18SDevin Teske	) || exec "$0" "$@"
28063939df8SDevin Teske	awk 'sub(/^\\/,"")||1' \
28163939df8SDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
282b5938e7dSDevin Teske	network={
28363939df8SDevin Teske	\	ssid="$NETWORK"
28463939df8SDevin Teske	\	scan_ssid=$SCANSSID
28563939df8SDevin Teske	\	psk="$PASS"
28663939df8SDevin Teske	\	priority=5
287b5938e7dSDevin Teske	}
288b5938e7dSDevin Teske	EOF
2891095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q EAP; then
290ea2e60b0SDevin Teske	USERPASS=$( $DIALOG \
2912abc4c24SDevin Teske		--title "WPA-Enterprise Setup"   \
2927797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
2937797a597SDevin Teske		--insecure                       \
29410458583SDevin Teske		--mixedform ""                   \
29510458583SDevin Teske		0 0 0                            \
296093b9154SGavin Atkinson		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
297093b9154SGavin Atkinson		"Username" 2 0 "" 2 12 25 63 0   \
298093b9154SGavin Atkinson		"Password" 3 0 "" 3 12 25 63 1   \
299877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
300bef42d18SDevin Teske	) || exec "$0" "$@"
30163939df8SDevin Teske	awk 'sub(/^\\/,"")||1' \
30263939df8SDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
303b5938e7dSDevin Teske	network={
30463939df8SDevin Teske	\	ssid="$NETWORK"
30563939df8SDevin Teske	\	scan_ssid=$SCANSSID
30663939df8SDevin Teske	\	key_mgmt=WPA-EAP$(
307093b9154SGavin Atkinson		echo "$USERPASS" | awk '
30863939df8SDevin Teske			NR == 1 { printf "\n\tidentity=\"%s\"", $1 }
30963939df8SDevin Teske			NR == 2 { printf "\n\tpassword=\"%s\"", $1 }
3100b8f01feSDevin Teske		' )
31163939df8SDevin Teske	\	priority=5
312b5938e7dSDevin Teske	}
313b5938e7dSDevin Teske	EOF
3141095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q WEP; then
315ea2e60b0SDevin Teske	WEPKEY=$( $DIALOG \
3162abc4c24SDevin Teske		--title "WEP Setup"              \
3177797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
3187797a597SDevin Teske		--insecure                       \
31910458583SDevin Teske		--mixedform ""                   \
32010458583SDevin Teske		0 0 0                            \
3212118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
3222118f387SNathan Whitehorn		"WEP Key 0" 2 0 "" 2 12 15 0 1   \
323877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
324bef42d18SDevin Teske	) || exec "$0" "$@"
32563939df8SDevin Teske	awk 'sub(/^\\/,"")||1' \
32663939df8SDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
327b5938e7dSDevin Teske	network={
32863939df8SDevin Teske	\	ssid="$NETWORK"
32963939df8SDevin Teske	\	scan_ssid=$SCANSSID
33063939df8SDevin Teske	\	key_mgmt=NONE
33163939df8SDevin Teske	\	wep_key0="$WEPKEY"
33263939df8SDevin Teske	\	wep_tx_keyidx=0
33363939df8SDevin Teske	\	priority=5
334b5938e7dSDevin Teske	}
335b5938e7dSDevin Teske	EOF
3362118f387SNathan Whitehornelse # Open
33763939df8SDevin Teske	awk 'sub(/^\\/,"")||1' \
33863939df8SDevin Teske		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF
339b5938e7dSDevin Teske	network={
34063939df8SDevin Teske	\	ssid="$NETWORK"
34163939df8SDevin Teske	\	scan_ssid=$SCANSSID
34263939df8SDevin Teske	\	key_mgmt=NONE
34363939df8SDevin Teske	\	priority=5
344b5938e7dSDevin Teske	}
345b5938e7dSDevin Teske	EOF
3462118f387SNathan Whitehornfi
3472118f387SNathan Whitehorn
3482118f387SNathan Whitehorn# Connect to any open networks policy
349b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
350b5938e7dSDevin Teskenetwork={
351ebffa060SGavin Atkinson	priority=0
3522118f387SNathan Whitehorn	key_mgmt=NONE
353b5938e7dSDevin Teske}
354b5938e7dSDevin TeskeEOF
3552118f387SNathan Whitehorn
3562118f387SNathan Whitehorn# Bring up new network
35719dbb0baSDevin Teske[ "$BSDINSTALL_CONFIGCURRENT" ] &&
3589a46c67aSDevin Teske	f_eval_catch -d wlanconfig wpa_cli "wpa_cli reconfigure"
3592118f387SNathan Whitehorn
3600a835493SDevin Teskeexit $SUCCESS
361bc4a673fSDevin Teske
362bc4a673fSDevin Teske################################################################################
363bc4a673fSDevin Teske# END
364bc4a673fSDevin Teske################################################################################
365