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
5349748e0aSDevin Teske	iface_up=$( ifconfig -lu | grep -w "$WLAN_IFACE" )
5449748e0aSDevin Teske	[ "$iface_up" ] && ifconfig "$WLAN_IFACE" down
559a46c67aSDevin Teske	f_eval_catch -dk error_str wlanconfig ifconfig "ifconfig %s %s" \
569a46c67aSDevin Teske		"$WLAN_IFACE" "$ifconfig_args"
579a46c67aSDevin Teske	error_str="${error_str#ifconfig: }"
584913f849SAndriy Voskoboinyk	# Restart wpa_supplicant(8) (should not fail).
5994f5aec6SDevin Teske	[ "$iface_up" ] && 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
63ea2e60b0SDevin Teske		$DIALOG \
64d124dfc4SDevin Teske			--title "$msg_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)" \
706e038cc2SDevin Teske			0 0 || return $SUCCESS # Skip
714913f849SAndriy Voskoboinyk		return $FAILURE # Restart
724913f849SAndriy Voskoboinyk	else
73b5938e7dSDevin Teske		awk 'sub(/^\t\t/,"")||1' \
74b5938e7dSDevin Teske			> "$BSDINSTALL_TMPETC/rc.conf.net.wlan" <<-EOF
75b5938e7dSDevin Teske		create_args_$WLAN_IFACE="$ifconfig_args"
76b5938e7dSDevin Teske		EOF
774913f849SAndriy Voskoboinyk	fi
784913f849SAndriy Voskoboinyk
794913f849SAndriy Voskoboinyk	return $SUCCESS
804913f849SAndriy Voskoboinyk}
814913f849SAndriy Voskoboinyk
824913f849SAndriy Voskoboinykdialog_country_select()
834913f849SAndriy Voskoboinyk{
841c612112SDevin Teske	local input regdomains countries regdomain country prompt
8548e9fce2SDevin Teske	local no_default="<not selected>"
8671ef4d58SDevin Teske	local default_regdomain="${1:-$no_default}"
8771ef4d58SDevin Teske	local default_country="${2:-$no_default}"
884913f849SAndriy Voskoboinyk
8997a4c9f0SDevin Teske	#
904913f849SAndriy Voskoboinyk	# Parse available countries/regdomains
9197a4c9f0SDevin Teske	#
9249748e0aSDevin Teske	input=$( ifconfig "$WLAN_IFACE" list countries | sed -e 's/DEBUG//gi' )
9395ee591eSDevin Teske	regdomains=$( echo "$input" | awk '
9495ee591eSDevin Teske		sub(/.*domains:/, ""), /[^[:alnum:][[:space:]]/ {
9595ee591eSDevin Teske			n = split($0, domains)
9695ee591eSDevin Teske			for (i = 1; i <= n; i++)
9795ee591eSDevin Teske				printf "'\''%s'\'' '\'\''", domains[i]
9895ee591eSDevin Teske		}
99d401d36cSDevin Teske	' | sort )
100e7f2eb12SDevin Teske	countries=$( echo "$input" | awk '
101e7f2eb12SDevin Teske		sub(/Country codes:/, ""), sub(/Regulatory.*/, "") {
102e7f2eb12SDevin Teske			while (match($0, /[[:upper:]][[:upper:][:digit:]] /)) {
103e7f2eb12SDevin Teske				country = substr($0, RSTART)
104e7f2eb12SDevin Teske				sub(/ [[:upper:]][[:upper:][:digit:]].*/, "", country)
105e7f2eb12SDevin Teske				code = substr(country, 1, 2)
106e7f2eb12SDevin Teske				desc = substr(country, 4)
107e7f2eb12SDevin Teske				sub(/[[:space:]]*$/, "", desc)
108e7f2eb12SDevin Teske				printf "'\''%s'\'' '\''%s'\''\n", code, desc
109e7f2eb12SDevin Teske				$0 = substr($0, RSTART + RLENGTH)
1104913f849SAndriy Voskoboinyk			}
111e7f2eb12SDevin Teske		}
112e7f2eb12SDevin Teske	' | sort )
1134913f849SAndriy Voskoboinyk
11458ce2edcSDevin Teske	f_dialog_title "Regdomain selection"
1151c612112SDevin Teske	prompt="Select your regdomain."
11695ee591eSDevin Teske	eval f_dialog_menu_size height width rows \
11795ee591eSDevin Teske		\"\$DIALOG_TITLE\" \"\$DIALOG_BACKTITLE\" \
11895ee591eSDevin Teske		\"\$prompt\" \"\" $regdomains
11995ee591eSDevin Teske	regdomain=$( eval $DIALOG \
12095ee591eSDevin Teske		--title \"\$DIALOG_TITLE\"             \
12195ee591eSDevin Teske		--backtitle \"\$DIALOG_BACKTITLE\"     \
12295ee591eSDevin Teske		--cancel-label \"\$msg_skip\"          \
12395ee591eSDevin Teske		--default-item \"\$default_regdomain\" \
12495ee591eSDevin Teske		--menu \"\$prompt\"                    \
12595ee591eSDevin Teske		$height $width $rows                   \
12695ee591eSDevin Teske		$regdomains                            \
12795ee591eSDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
12876b07bd9SDevin Teske	)
129f52733d4SDevin Teske	f_dialog_data_sanitize regdomain
1304913f849SAndriy Voskoboinyk
13158ce2edcSDevin Teske	f_dialog_title "Country selection"
1321c612112SDevin Teske	prompt="Select your country."
133e7f2eb12SDevin Teske	eval f_dialog_menu_size height width rows \
134e7f2eb12SDevin Teske		\"\$DIALOG_TITLE\" \"\$DIALOG_BACKTITLE\" \
1351c612112SDevin Teske		\"\$prompt\" \"\" $countries
136e7f2eb12SDevin Teske	country=$( eval $DIALOG \
137e7f2eb12SDevin Teske		--title \"\$DIALOG_TITLE\"           \
138e7f2eb12SDevin Teske		--backtitle \"\$DIALOG_BACKTITLE\"   \
139e7f2eb12SDevin Teske		--cancel-label \"\$msg_skip\"        \
140e2577019SDevin Teske		--default-item \"\$default_country\" \
1411c612112SDevin Teske		--menu \"\$prompt\"                  \
142e7f2eb12SDevin Teske		$height $width $rows                 \
143e7f2eb12SDevin Teske		$countries                           \
144e7f2eb12SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
14576b07bd9SDevin Teske	)
146f52733d4SDevin Teske	f_dialog_data_sanitize country
1474913f849SAndriy Voskoboinyk
1484913f849SAndriy Voskoboinyk	country_set "$regdomain" "$country"
1494913f849SAndriy Voskoboinyk}
1504913f849SAndriy Voskoboinyk
151f18789d7SDevin Teske############################################################ MAIN
152f18789d7SDevin Teske
1534fa8c81cSDevin Teske: > "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
1548d5182d6SDevin Teskechmod 0600 "$BSDINSTALL_TMPETC/wpa_supplicant.conf"
155f18789d7SDevin Teske
156b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" << EOF
157b5938e7dSDevin Teskectrl_interface=/var/run/wpa_supplicant
158b5938e7dSDevin Teskeeapol_version=2
159b5938e7dSDevin Teskeap_scan=1
160b5938e7dSDevin Teskefast_reauth=1
161b5938e7dSDevin Teske
162b5938e7dSDevin TeskeEOF
163f18789d7SDevin Teske
16497a4c9f0SDevin Teske#
165f18789d7SDevin Teske# Try to reach wpa_supplicant. If it isn't running and we can modify the
166f18789d7SDevin Teske# existing system, start it. Otherwise, fail.
16797a4c9f0SDevin Teske#
1689a46c67aSDevin Teskeif ! f_eval_catch -d wlanconfig wpa_cli "wpa_cli ping"; then
1690724c87cSDevin Teske	if [ ! "$BSDINSTALL_CONFIGCURRENT" ]; then
1701d92999cSDevin Teske		f_show_err "Wireless cannot be configured without %s" \
1711d92999cSDevin Teske		           "making changes to the local system!"
1720724c87cSDevin Teske		exit 1
1730724c87cSDevin Teske	fi
1749a46c67aSDevin Teske	f_eval_catch wlanconfig wpa_supplicant \
1759a46c67aSDevin Teske		'wpa_supplicant -B -i "%s" -c "%s/wpa_supplicant.conf"' \
1769a46c67aSDevin Teske		"$1" "$BSDINSTALL_TMPETC" || exit 1
177f18789d7SDevin Teske
1786ef8ca67SDevin Teske	# See if we succeeded
1799a46c67aSDevin Teske	f_eval_catch wlanconfig wpa_cli "wpa_cli ping" || exit 1
1806b77f63eSDevin Teskefi
1816b77f63eSDevin Teske
18297a4c9f0SDevin Teske#
1834913f849SAndriy Voskoboinyk# There is no way to check country/regdomain without (possible)
1844913f849SAndriy Voskoboinyk# interface state modification
18597a4c9f0SDevin Teske#
18638a99423SDevin Teskeif [ "$BSDINSTALL_CONFIGCURRENT" ]; then
1874913f849SAndriy Voskoboinyk	# Get current country/regdomain for selected interface
188a7cc5680SDevin Teske	WLAN_IFACE=$( wpa_cli ifname | tail -n 1 )
189a7cc5680SDevin Teske	INPUT=$( ifconfig "$WLAN_IFACE" list regdomain | head -n 1 )
19066ef7d94SDevin Teske	DEF_REGDOMAIN=$( echo "$INPUT" | cut -w -f 2 )
19166ef7d94SDevin Teske	DEF_COUNTRY=$( echo "$INPUT" | cut -w -f 4 )
192c62801e2SDevin Teske	[ "$DEF_REGDOMAIN" = 0 ] && DEF_REGDOMAIN="<not selected>"
1930b04945dSDevin Teske	[ "$DEF_COUNTRY" = 0 ] && DEF_COUNTRY="<not selected>"
19458ce2edcSDevin Teske	f_dialog_title "Regdomain/country"
195b46ca7ceSDevin Teske	if f_yesno "Change regdomain/country ($DEF_REGDOMAIN/$DEF_COUNTRY)?"
196a9d33421SDevin Teske	then
197afcce2f5SDevin Teske		while ! dialog_country_select "$DEF_REGDOMAIN" "$DEF_COUNTRY"
198afcce2f5SDevin Teske		do :; done
1994913f849SAndriy Voskoboinyk	fi
2004913f849SAndriy Voskoboinykfi
2014913f849SAndriy Voskoboinyk
20276b07bd9SDevin Teskewhile :; do
2033220bdd8SDevin Teske	SCANSSID=0
2049a46c67aSDevin Teske	f_eval_catch -d wlanconfig wpa_cli "wpa_cli scan"
20558ce2edcSDevin Teske	f_dialog_title "Scanning"
2067e1166deSDevin Teske	f_dialog_pause "Waiting 5 seconds to scan for wireless networks..." 5 ||
2077e1166deSDevin Teske		exit 1
2082118f387SNathan Whitehorn
2099a46c67aSDevin Teske	f_eval_catch -dk SCAN_RESULTS wlanconfig wpa_cli "wpa_cli scan_results"
2102abc4c24SDevin Teske	NETWORKS=$( echo "$SCAN_RESULTS" | awk -F '\t' '
211be094a32SDevin Teske		/..:..:..:..:..:../ && $5 { printf "\"%s\"\t\"%s\"\n", $5, $4 }
2122abc4c24SDevin Teske	' | sort | uniq )
2132118f387SNathan Whitehorn
21438a99423SDevin Teske	if [ ! "$NETWORKS" ]; then
215d124dfc4SDevin Teske		f_dialog_title "$msg_error"
216d79a1355SDevin Teske		f_yesno "No wireless networks were found. Rescan?" && continue
2172118f387SNathan Whitehorn		exit 1
2182118f387SNathan Whitehorn	fi
2192118f387SNathan Whitehorn
22058ce2edcSDevin Teske	f_dialog_title "Network Selection"
221d5fddc4dSDevin Teske	prompt="Select a wireless network to connect to."
222b9f60abaSDevin Teske	f_dialog_menu_size height width rows "$DIALOG_TITLE" \
223b9f60abaSDevin Teske		"$DIALOG_BACKTITLE" "$prompt" "" $menu_list
224d5fddc4dSDevin Teske	NETWORK=$( eval $DIALOG \
225d5fddc4dSDevin Teske		--title \"\$DIALOG_TITLE\"         \
226d5fddc4dSDevin Teske		--backtitle \"\$DIALOG_BACKTITLE\" \
2272abc4c24SDevin Teske		--extra-button                     \
2282abc4c24SDevin Teske		--extra-label \"Rescan\"           \
229d5fddc4dSDevin Teske		--menu \"\$prompt\"                \
230d5fddc4dSDevin Teske		$height $width $rows               \
231f3a8471eSDevin Teske		$NETWORKS                          \
232877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2332abc4c24SDevin Teske	)
234f52733d4SDevin Teske	retval=$?
235f52733d4SDevin Teske	f_dialog_data_sanitize NETWORK
236f52733d4SDevin Teske	case $retval in
23710458583SDevin Teske	$DIALOG_OK) break ;;
2385357f8f7SDevin Teske	$DIALOG_CANCEL)
23935af83c1SDevin Teske		# Ask if the user wants to select network manually
2403220bdd8SDevin Teske		f_dialog_title "Network Selection"
241a5119576SDevin Teske		f_yesno "Do you want to select the network manually?" || exit 1
2423220bdd8SDevin Teske		f_dialog_input NETWORK "Enter SSID" || exit 1
243d5fddc4dSDevin Teske		prompt="Select encryption type"
244d5fddc4dSDevin Teske		menu_list="
245d5fddc4dSDevin Teske			'1 WPA/WPA2 PSK' ''
246d5fddc4dSDevin Teske			'2 WPA/WPA2 EAP' ''
247d5fddc4dSDevin Teske			'3 WEP' ''
248d5fddc4dSDevin Teske			'0 None' ''
249d5fddc4dSDevin Teske		" # END-QUOTE
250d5fddc4dSDevin Teske		eval f_dialog_menu_size height width rows \"\$DIALOG_TITLE\" \
251d5fddc4dSDevin Teske			\"\$DIALOG_BACKTITLE\" \"\$prompt\" \"\" $menu_list
252d5fddc4dSDevin Teske		ENCRYPTION=$( eval $DIALOG \
253d5fddc4dSDevin Teske			--title \"\$DIALOG_TITLE\"         \
254d5fddc4dSDevin Teske			--backtitle \"\$DIALOG_BACKTITLE\" \
255d5fddc4dSDevin Teske			--menu \"\$prompt\"                \
256d5fddc4dSDevin Teske			$height $width $rows               \
257d5fddc4dSDevin Teske			$menu_list                         \
258877ea047SDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2592abc4c24SDevin Teske		) || exit 1
2603220bdd8SDevin Teske		SCANSSID=1
2613220bdd8SDevin Teske		break
2622118f387SNathan Whitehorn		;;
2635357f8f7SDevin Teske	$DIALOG_EXTRA) # Rescan
2642118f387SNathan Whitehorn		;;
2652118f387SNathan Whitehorn	esac
2664913f849SAndriy Voskoboinykdone
2672118f387SNathan Whitehorn
2682abc4c24SDevin Teske[ "$ENCRYPTION" ] || ENCRYPTION=$( echo "$NETWORKS" |
26901a2404cSDevin Teske	awk -F '\t' "/^\"$NETWORK\"\t/ { print \$2 }" )
2702118f387SNathan Whitehorn
2717599c854SDevin Teskeif echo "$ENCRYPTION" | grep -q PSK; then
272ea2e60b0SDevin Teske	PASS=$( $DIALOG \
2732abc4c24SDevin Teske		--title "WPA Setup"              \
2747797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
2757797a597SDevin Teske		--insecure                       \
2762abc4c24SDevin Teske		--mixedform ""                   \
2772abc4c24SDevin Teske		0 0 0                            \
2782118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
279a4de89deSChristian Brueffer		"Password" 2 0 "" 2 12 15 63 1   \
280877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
281bef42d18SDevin Teske	) || exec "$0" "$@"
282b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
283*850b25abSEd Maste		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
284b5938e7dSDevin Teskenetwork={
285b5938e7dSDevin Teske	ssid="$NETWORK"
2863220bdd8SDevin Teske	scan_ssid=$SCANSSID
287b5938e7dSDevin Teske	psk="$PASS"
2882118f387SNathan Whitehorn	priority=5
289b5938e7dSDevin Teske}
290b5938e7dSDevin TeskeEOF
2911095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q EAP; then
292ea2e60b0SDevin Teske	USERPASS=$( $DIALOG \
2932abc4c24SDevin Teske		--title "WPA-Enterprise Setup"   \
2947797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
2957797a597SDevin Teske		--insecure                       \
29610458583SDevin Teske		--mixedform ""                   \
29710458583SDevin Teske		0 0 0                            \
298093b9154SGavin Atkinson		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
299093b9154SGavin Atkinson		"Username" 2 0 "" 2 12 25 63 0   \
300093b9154SGavin Atkinson		"Password" 3 0 "" 3 12 25 63 1   \
301877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
302bef42d18SDevin Teske	) || exec "$0" "$@"
303b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
304*850b25abSEd Maste		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
305b5938e7dSDevin Teskenetwork={
306b5938e7dSDevin Teske	ssid="$NETWORK"
3073220bdd8SDevin Teske	scan_ssid=$SCANSSID
308b5938e7dSDevin Teske	key_mgmt=WPA-EAP$(
309093b9154SGavin Atkinson	echo "$USERPASS" | awk '
3108bcf5646SDevin Teske		NR == 1 { printf "\n\t\tidentity=\"%s\"", $1 }
3118bcf5646SDevin Teske		NR == 2 { printf "\n\t\tpassword=\"%s\"", $1 }
3120b8f01feSDevin Teske	' )
313b5938e7dSDevin Teske	priority=5
314b5938e7dSDevin Teske}
315b5938e7dSDevin TeskeEOF
3161095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q WEP; then
317ea2e60b0SDevin Teske	WEPKEY=$( $DIALOG \
3182abc4c24SDevin Teske		--title "WEP Setup"              \
3197797a597SDevin Teske		--backtitle "$DIALOG_BACKTITLE"  \
3207797a597SDevin Teske		--insecure                       \
32110458583SDevin Teske		--mixedform ""                   \
32210458583SDevin Teske		0 0 0                            \
3232118f387SNathan Whitehorn		"SSID" 1 0 "$NETWORK" 1 12 0 0 2 \
3242118f387SNathan Whitehorn		"WEP Key 0" 2 0 "" 2 12 15 0 1   \
325877ea047SDevin Teske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
326bef42d18SDevin Teske	) || exec "$0" "$@"
327b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
328*850b25abSEd Maste		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
329b5938e7dSDevin Teskenetwork={
330b5938e7dSDevin Teske	ssid="$NETWORK"
3313220bdd8SDevin Teske	scan_ssid=$SCANSSID
3322118f387SNathan Whitehorn	key_mgmt=NONE
333b5938e7dSDevin Teske	wep_key0="$WEPKEY"
3342118f387SNathan Whitehorn	wep_tx_keyidx=0
3352118f387SNathan Whitehorn	priority=5
336b5938e7dSDevin Teske}
337b5938e7dSDevin TeskeEOF
3382118f387SNathan Whitehornelse # Open
339b5938e7dSDevin Teske	awk 'sub(/^\t/,"")||1' \
340*850b25abSEd Maste		>> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF
341b5938e7dSDevin Teskenetwork={
342b5938e7dSDevin Teske	ssid="$NETWORK"
3433220bdd8SDevin Teske	scan_ssid=$SCANSSID
3442118f387SNathan Whitehorn	key_mgmt=NONE
3452118f387SNathan Whitehorn	priority=5
346b5938e7dSDevin Teske}
347b5938e7dSDevin TeskeEOF
3482118f387SNathan Whitehornfi
3492118f387SNathan Whitehorn
3502118f387SNathan Whitehorn# Connect to any open networks policy
351b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" << EOF
352b5938e7dSDevin Teskenetwork={
353ebffa060SGavin Atkinson	priority=0
3542118f387SNathan Whitehorn	key_mgmt=NONE
355b5938e7dSDevin Teske}
356b5938e7dSDevin TeskeEOF
3572118f387SNathan Whitehorn
3582118f387SNathan Whitehorn# Bring up new network
35919dbb0baSDevin Teske[ "$BSDINSTALL_CONFIGCURRENT" ] &&
3609a46c67aSDevin Teske	f_eval_catch -d wlanconfig wpa_cli "wpa_cli reconfigure"
3612118f387SNathan Whitehorn
3620a835493SDevin Teskeexit $SUCCESS
363bc4a673fSDevin Teske
364bc4a673fSDevin Teske################################################################################
365bc4a673fSDevin Teske# END
366bc4a673fSDevin Teske################################################################################
367