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