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). 585399052cSBjoern A. Zeeb [ "$iface_up" ] && ifconfig "$WLAN_IFACE" up && \ 595399052cSBjoern 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++) 955a1e2927SBjoern A. Zeeb printf "'\''%s'\'' '\'\''\n", 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 150*0f15f535SMark Johnstondialog_network_select() 151*0f15f535SMark Johnston{ 152*0f15f535SMark Johnston local ssid flags height width rows prompt 153*0f15f535SMark Johnston 154*0f15f535SMark Johnston # Avoid using eval on untrusted data. 155*0f15f535SMark Johnston set -- 156*0f15f535SMark Johnston while IFS=$'\t' read -r ssid flags; do 157*0f15f535SMark Johnston [ -n "$ssid" ] || continue 158*0f15f535SMark Johnston set -- "$@" "$ssid" "$flags" 159*0f15f535SMark Johnston done <<EOF 160*0f15f535SMark Johnston$NETWORKS 161*0f15f535SMark JohnstonEOF 162*0f15f535SMark Johnston 163*0f15f535SMark Johnston f_dialog_title "Network Selection" 164*0f15f535SMark Johnston prompt="Select a wireless network to connect to." 165*0f15f535SMark Johnston f_dialog_menu_size height width rows \ 166*0f15f535SMark Johnston "$DIALOG_TITLE" "$DIALOG_BACKTITLE" "$prompt" "" "$@" 167*0f15f535SMark Johnston $DIALOG \ 168*0f15f535SMark Johnston --title "$DIALOG_TITLE" \ 169*0f15f535SMark Johnston --backtitle "$DIALOG_BACKTITLE" \ 170*0f15f535SMark Johnston --extra-button \ 171*0f15f535SMark Johnston --extra-label "Rescan" \ 172*0f15f535SMark Johnston --menu "$prompt" \ 173*0f15f535SMark Johnston $height $width $rows \ 174*0f15f535SMark Johnston "$@" \ 175*0f15f535SMark Johnston 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 176*0f15f535SMark Johnston} 177*0f15f535SMark Johnston 178f18789d7SDevin Teske############################################################ MAIN 179f18789d7SDevin Teske 1804fa8c81cSDevin Teske: > "$BSDINSTALL_TMPETC/wpa_supplicant.conf" 1818d5182d6SDevin Teskechmod 0600 "$BSDINSTALL_TMPETC/wpa_supplicant.conf" 182f18789d7SDevin Teske 183b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF 184b5938e7dSDevin Teskectrl_interface=/var/run/wpa_supplicant 185b5938e7dSDevin Teskeeapol_version=2 186b5938e7dSDevin Teskeap_scan=1 187b5938e7dSDevin Teskefast_reauth=1 188b5938e7dSDevin Teske 189b5938e7dSDevin TeskeEOF 190f18789d7SDevin Teske 19197a4c9f0SDevin Teske# 192f18789d7SDevin Teske# Try to reach wpa_supplicant. If it isn't running and we can modify the 193f18789d7SDevin Teske# existing system, start it. Otherwise, fail. 19497a4c9f0SDevin Teske# 1959a46c67aSDevin Teskeif ! f_eval_catch -d wlanconfig wpa_cli "wpa_cli ping"; then 1960724c87cSDevin Teske if [ ! "$BSDINSTALL_CONFIGCURRENT" ]; then 1971d92999cSDevin Teske f_show_err "Wireless cannot be configured without %s" \ 1981d92999cSDevin Teske "making changes to the local system!" 1990724c87cSDevin Teske exit 1 2000724c87cSDevin Teske fi 2019a46c67aSDevin Teske f_eval_catch wlanconfig wpa_supplicant \ 2029a46c67aSDevin Teske 'wpa_supplicant -B -i "%s" -c "%s/wpa_supplicant.conf"' \ 2039a46c67aSDevin Teske "$1" "$BSDINSTALL_TMPETC" || exit 1 204f18789d7SDevin Teske 2056ef8ca67SDevin Teske # See if we succeeded 2069a46c67aSDevin Teske f_eval_catch wlanconfig wpa_cli "wpa_cli ping" || exit 1 2076b77f63eSDevin Teskefi 2086b77f63eSDevin Teske 20997a4c9f0SDevin Teske# 2104913f849SAndriy Voskoboinyk# There is no way to check country/regdomain without (possible) 2114913f849SAndriy Voskoboinyk# interface state modification 21297a4c9f0SDevin Teske# 21338a99423SDevin Teskeif [ "$BSDINSTALL_CONFIGCURRENT" ]; then 2144913f849SAndriy Voskoboinyk # Get current country/regdomain for selected interface 215a7cc5680SDevin Teske WLAN_IFACE=$( wpa_cli ifname | tail -n 1 ) 216a7cc5680SDevin Teske INPUT=$( ifconfig "$WLAN_IFACE" list regdomain | head -n 1 ) 21766ef7d94SDevin Teske DEF_REGDOMAIN=$( echo "$INPUT" | cut -w -f 2 ) 21866ef7d94SDevin Teske DEF_COUNTRY=$( echo "$INPUT" | cut -w -f 4 ) 219c62801e2SDevin Teske [ "$DEF_REGDOMAIN" = 0 ] && DEF_REGDOMAIN="<not selected>" 2200b04945dSDevin Teske [ "$DEF_COUNTRY" = 0 ] && DEF_COUNTRY="<not selected>" 22158ce2edcSDevin Teske f_dialog_title "Regdomain/country" 222b46ca7ceSDevin Teske if f_yesno "Change regdomain/country ($DEF_REGDOMAIN/$DEF_COUNTRY)?" 223a9d33421SDevin Teske then 224afcce2f5SDevin Teske while ! dialog_country_select "$DEF_REGDOMAIN" "$DEF_COUNTRY" 225afcce2f5SDevin Teske do :; done 2264913f849SAndriy Voskoboinyk fi 2274913f849SAndriy Voskoboinykfi 2284913f849SAndriy Voskoboinyk 22976b07bd9SDevin Teskewhile :; do 2303220bdd8SDevin Teske SCANSSID=0 231153e73d7SBjoern A. Zeeb # While wpa_supplicant may IFF_UP the interface, we do not want to rely 232153e73d7SBjoern A. Zeeb # in this. In case the script is run manually (outside the installer, 233153e73d7SBjoern A. Zeeb # e.g., for testing) wpa_supplicant may be running and the wlanN 234153e73d7SBjoern A. Zeeb # interface may be down (especially if dialog_country_select is not 235153e73d7SBjoern A. Zeeb # run successfully either) and scanning will not work. 236153e73d7SBjoern A. Zeeb f_eval_catch -d wlanconfig ifconfig "ifconfig $WLAN_IFACE up" 2379a46c67aSDevin Teske f_eval_catch -d wlanconfig wpa_cli "wpa_cli scan" 23858ce2edcSDevin Teske f_dialog_title "Scanning" 2397e1166deSDevin Teske f_dialog_pause "Waiting 5 seconds to scan for wireless networks..." 5 || 2407e1166deSDevin Teske exit 1 2412118f387SNathan Whitehorn 2429a46c67aSDevin Teske f_eval_catch -dk SCAN_RESULTS wlanconfig wpa_cli "wpa_cli scan_results" 2432abc4c24SDevin Teske NETWORKS=$( echo "$SCAN_RESULTS" | awk -F '\t' ' 244*0f15f535SMark Johnston /..:..:..:..:..:../ && $5 { print $5 "\t" $4 } 2452abc4c24SDevin Teske ' | sort | uniq ) 2462118f387SNathan Whitehorn 24738a99423SDevin Teske if [ ! "$NETWORKS" ]; then 248d124dfc4SDevin Teske f_dialog_title "$msg_error" 249d79a1355SDevin Teske f_yesno "No wireless networks were found. Rescan?" && continue 250912df915SAlfonso S. Siciliano else 251*0f15f535SMark Johnston NETWORK=$( dialog_network_select ) 252912df915SAlfonso S. Siciliano fi 253f52733d4SDevin Teske retval=$? 254f52733d4SDevin Teske f_dialog_data_sanitize NETWORK 255f52733d4SDevin Teske case $retval in 25610458583SDevin Teske $DIALOG_OK) break ;; 2575357f8f7SDevin Teske $DIALOG_CANCEL) 25835af83c1SDevin Teske # Ask if the user wants to select network manually 2593220bdd8SDevin Teske f_dialog_title "Network Selection" 260a5119576SDevin Teske f_yesno "Do you want to select the network manually?" || exit 1 2613220bdd8SDevin Teske f_dialog_input NETWORK "Enter SSID" || exit 1 262d5fddc4dSDevin Teske prompt="Select encryption type" 263d5fddc4dSDevin Teske menu_list=" 264d5fddc4dSDevin Teske '1 WPA/WPA2 PSK' '' 265d5fddc4dSDevin Teske '2 WPA/WPA2 EAP' '' 266d5fddc4dSDevin Teske '3 WEP' '' 267d5fddc4dSDevin Teske '0 None' '' 268d5fddc4dSDevin Teske " # END-QUOTE 269d5fddc4dSDevin Teske eval f_dialog_menu_size height width rows \"\$DIALOG_TITLE\" \ 270d5fddc4dSDevin Teske \"\$DIALOG_BACKTITLE\" \"\$prompt\" \"\" $menu_list 271d5fddc4dSDevin Teske ENCRYPTION=$( eval $DIALOG \ 272d5fddc4dSDevin Teske --title \"\$DIALOG_TITLE\" \ 273d5fddc4dSDevin Teske --backtitle \"\$DIALOG_BACKTITLE\" \ 274d5fddc4dSDevin Teske --menu \"\$prompt\" \ 275d5fddc4dSDevin Teske $height $width $rows \ 276d5fddc4dSDevin Teske $menu_list \ 277877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 2782abc4c24SDevin Teske ) || exit 1 2793220bdd8SDevin Teske SCANSSID=1 2803220bdd8SDevin Teske break 2812118f387SNathan Whitehorn ;; 2825357f8f7SDevin Teske $DIALOG_EXTRA) # Rescan 2832118f387SNathan Whitehorn ;; 2842118f387SNathan Whitehorn esac 2854913f849SAndriy Voskoboinykdone 2862118f387SNathan Whitehorn 2872abc4c24SDevin Teske[ "$ENCRYPTION" ] || ENCRYPTION=$( echo "$NETWORKS" | 288*0f15f535SMark Johnston awk -F '\t' "/^$NETWORK\t/ { print \$2 }" ) 2892118f387SNathan Whitehorn 2907599c854SDevin Teskeif echo "$ENCRYPTION" | grep -q PSK; then 291ea2e60b0SDevin Teske PASS=$( $DIALOG \ 2922abc4c24SDevin Teske --title "WPA Setup" \ 2937797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 2947797a597SDevin Teske --insecure \ 2952abc4c24SDevin Teske --mixedform "" \ 2962abc4c24SDevin Teske 0 0 0 \ 2972118f387SNathan Whitehorn "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 298a4de89deSChristian Brueffer "Password" 2 0 "" 2 12 15 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 \ psk="$PASS" 30763939df8SDevin Teske \ priority=5 308b5938e7dSDevin Teske } 309b5938e7dSDevin Teske EOF 3101095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q EAP; then 311ea2e60b0SDevin Teske USERPASS=$( $DIALOG \ 3122abc4c24SDevin Teske --title "WPA-Enterprise Setup" \ 3137797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 3147797a597SDevin Teske --insecure \ 31510458583SDevin Teske --mixedform "" \ 31610458583SDevin Teske 0 0 0 \ 317093b9154SGavin Atkinson "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 318093b9154SGavin Atkinson "Username" 2 0 "" 2 12 25 63 0 \ 319093b9154SGavin Atkinson "Password" 3 0 "" 3 12 25 63 1 \ 320877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 321bef42d18SDevin Teske ) || exec "$0" "$@" 32263939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 32363939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 324b5938e7dSDevin Teske network={ 32563939df8SDevin Teske \ ssid="$NETWORK" 32663939df8SDevin Teske \ scan_ssid=$SCANSSID 32763939df8SDevin Teske \ key_mgmt=WPA-EAP$( 328093b9154SGavin Atkinson echo "$USERPASS" | awk ' 32963939df8SDevin Teske NR == 1 { printf "\n\tidentity=\"%s\"", $1 } 33063939df8SDevin Teske NR == 2 { printf "\n\tpassword=\"%s\"", $1 } 3310b8f01feSDevin Teske ' ) 33263939df8SDevin Teske \ priority=5 333b5938e7dSDevin Teske } 334b5938e7dSDevin Teske EOF 3351095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q WEP; then 336ea2e60b0SDevin Teske WEPKEY=$( $DIALOG \ 3372abc4c24SDevin Teske --title "WEP Setup" \ 3387797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 3397797a597SDevin Teske --insecure \ 34010458583SDevin Teske --mixedform "" \ 34110458583SDevin Teske 0 0 0 \ 3422118f387SNathan Whitehorn "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 3432118f387SNathan Whitehorn "WEP Key 0" 2 0 "" 2 12 15 0 1 \ 344877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 345bef42d18SDevin Teske ) || exec "$0" "$@" 34663939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 34763939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 348b5938e7dSDevin Teske network={ 34963939df8SDevin Teske \ ssid="$NETWORK" 35063939df8SDevin Teske \ scan_ssid=$SCANSSID 35163939df8SDevin Teske \ key_mgmt=NONE 35263939df8SDevin Teske \ wep_key0="$WEPKEY" 35363939df8SDevin Teske \ wep_tx_keyidx=0 35463939df8SDevin Teske \ priority=5 355b5938e7dSDevin Teske } 356b5938e7dSDevin Teske EOF 3572118f387SNathan Whitehornelse # Open 35863939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 35963939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 360b5938e7dSDevin Teske network={ 36163939df8SDevin Teske \ ssid="$NETWORK" 36263939df8SDevin Teske \ scan_ssid=$SCANSSID 36363939df8SDevin Teske \ key_mgmt=NONE 36463939df8SDevin Teske \ priority=5 365b5938e7dSDevin Teske } 366b5938e7dSDevin Teske EOF 3672118f387SNathan Whitehornfi 3682118f387SNathan Whitehorn 3692118f387SNathan Whitehorn# Connect to any open networks policy 370b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF 371b5938e7dSDevin Teskenetwork={ 372ebffa060SGavin Atkinson priority=0 3732118f387SNathan Whitehorn key_mgmt=NONE 374b5938e7dSDevin Teske} 375b5938e7dSDevin TeskeEOF 3762118f387SNathan Whitehorn 3772118f387SNathan Whitehorn# Bring up new network 37819dbb0baSDevin Teske[ "$BSDINSTALL_CONFIGCURRENT" ] && 3799a46c67aSDevin Teske f_eval_catch -d wlanconfig wpa_cli "wpa_cli reconfigure" 3802118f387SNathan Whitehorn 3810a835493SDevin Teskeexit $SUCCESS 382bc4a673fSDevin Teske 383bc4a673fSDevin Teske################################################################################ 384bc4a673fSDevin Teske# END 385bc4a673fSDevin Teske################################################################################ 386