12118f387SNathan Whitehorn#!/bin/sh 22118f387SNathan Whitehorn#- 32118f387SNathan Whitehorn# Copyright (c) 2011 Nathan Whitehorn 4*63939df8SDevin 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# 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 63*63939df8SDevin 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 72*63939df8SDevin 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) 102*63939df8SDevin Teske sub(/ [[:upper:]][[:upper:][:digit:]].*/, "", 103*63939df8SDevin 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 2162118f387SNathan Whitehorn exit 1 2172118f387SNathan Whitehorn fi 2182118f387SNathan Whitehorn 21958ce2edcSDevin Teske f_dialog_title "Network Selection" 220d5fddc4dSDevin Teske prompt="Select a wireless network to connect to." 221b9f60abaSDevin Teske f_dialog_menu_size height width rows "$DIALOG_TITLE" \ 222b9f60abaSDevin Teske "$DIALOG_BACKTITLE" "$prompt" "" $menu_list 223d5fddc4dSDevin Teske NETWORK=$( eval $DIALOG \ 224d5fddc4dSDevin Teske --title \"\$DIALOG_TITLE\" \ 225d5fddc4dSDevin Teske --backtitle \"\$DIALOG_BACKTITLE\" \ 2262abc4c24SDevin Teske --extra-button \ 2272abc4c24SDevin Teske --extra-label \"Rescan\" \ 228d5fddc4dSDevin Teske --menu \"\$prompt\" \ 229d5fddc4dSDevin Teske $height $width $rows \ 230f3a8471eSDevin Teske $NETWORKS \ 231877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 2322abc4c24SDevin Teske ) 233f52733d4SDevin Teske retval=$? 234f52733d4SDevin Teske f_dialog_data_sanitize NETWORK 235f52733d4SDevin Teske case $retval in 23610458583SDevin Teske $DIALOG_OK) break ;; 2375357f8f7SDevin Teske $DIALOG_CANCEL) 23835af83c1SDevin Teske # Ask if the user wants to select network manually 2393220bdd8SDevin Teske f_dialog_title "Network Selection" 240a5119576SDevin Teske f_yesno "Do you want to select the network manually?" || exit 1 2413220bdd8SDevin Teske f_dialog_input NETWORK "Enter SSID" || exit 1 242d5fddc4dSDevin Teske prompt="Select encryption type" 243d5fddc4dSDevin Teske menu_list=" 244d5fddc4dSDevin Teske '1 WPA/WPA2 PSK' '' 245d5fddc4dSDevin Teske '2 WPA/WPA2 EAP' '' 246d5fddc4dSDevin Teske '3 WEP' '' 247d5fddc4dSDevin Teske '0 None' '' 248d5fddc4dSDevin Teske " # END-QUOTE 249d5fddc4dSDevin Teske eval f_dialog_menu_size height width rows \"\$DIALOG_TITLE\" \ 250d5fddc4dSDevin Teske \"\$DIALOG_BACKTITLE\" \"\$prompt\" \"\" $menu_list 251d5fddc4dSDevin Teske ENCRYPTION=$( eval $DIALOG \ 252d5fddc4dSDevin Teske --title \"\$DIALOG_TITLE\" \ 253d5fddc4dSDevin Teske --backtitle \"\$DIALOG_BACKTITLE\" \ 254d5fddc4dSDevin Teske --menu \"\$prompt\" \ 255d5fddc4dSDevin Teske $height $width $rows \ 256d5fddc4dSDevin Teske $menu_list \ 257877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 2582abc4c24SDevin Teske ) || exit 1 2593220bdd8SDevin Teske SCANSSID=1 2603220bdd8SDevin Teske break 2612118f387SNathan Whitehorn ;; 2625357f8f7SDevin Teske $DIALOG_EXTRA) # Rescan 2632118f387SNathan Whitehorn ;; 2642118f387SNathan Whitehorn esac 2654913f849SAndriy Voskoboinykdone 2662118f387SNathan Whitehorn 2672abc4c24SDevin Teske[ "$ENCRYPTION" ] || ENCRYPTION=$( echo "$NETWORKS" | 26801a2404cSDevin Teske awk -F '\t' "/^\"$NETWORK\"\t/ { print \$2 }" ) 2692118f387SNathan Whitehorn 2707599c854SDevin Teskeif echo "$ENCRYPTION" | grep -q PSK; then 271ea2e60b0SDevin Teske PASS=$( $DIALOG \ 2722abc4c24SDevin Teske --title "WPA Setup" \ 2737797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 2747797a597SDevin Teske --insecure \ 2752abc4c24SDevin Teske --mixedform "" \ 2762abc4c24SDevin Teske 0 0 0 \ 2772118f387SNathan Whitehorn "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 278a4de89deSChristian Brueffer "Password" 2 0 "" 2 12 15 63 1 \ 279877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 280bef42d18SDevin Teske ) || exec "$0" "$@" 281*63939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 282*63939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 283b5938e7dSDevin Teske network={ 284*63939df8SDevin Teske \ ssid="$NETWORK" 285*63939df8SDevin Teske \ scan_ssid=$SCANSSID 286*63939df8SDevin Teske \ psk="$PASS" 287*63939df8SDevin Teske \ priority=5 288b5938e7dSDevin Teske } 289b5938e7dSDevin Teske EOF 2901095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q EAP; then 291ea2e60b0SDevin Teske USERPASS=$( $DIALOG \ 2922abc4c24SDevin Teske --title "WPA-Enterprise Setup" \ 2937797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 2947797a597SDevin Teske --insecure \ 29510458583SDevin Teske --mixedform "" \ 29610458583SDevin Teske 0 0 0 \ 297093b9154SGavin Atkinson "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 298093b9154SGavin Atkinson "Username" 2 0 "" 2 12 25 63 0 \ 299093b9154SGavin Atkinson "Password" 3 0 "" 3 12 25 63 1 \ 300877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 301bef42d18SDevin Teske ) || exec "$0" "$@" 302*63939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 303*63939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 304b5938e7dSDevin Teske network={ 305*63939df8SDevin Teske \ ssid="$NETWORK" 306*63939df8SDevin Teske \ scan_ssid=$SCANSSID 307*63939df8SDevin Teske \ key_mgmt=WPA-EAP$( 308093b9154SGavin Atkinson echo "$USERPASS" | awk ' 309*63939df8SDevin Teske NR == 1 { printf "\n\tidentity=\"%s\"", $1 } 310*63939df8SDevin Teske NR == 2 { printf "\n\tpassword=\"%s\"", $1 } 3110b8f01feSDevin Teske ' ) 312*63939df8SDevin Teske \ priority=5 313b5938e7dSDevin Teske } 314b5938e7dSDevin Teske EOF 3151095816eSDevin Teskeelif echo "$ENCRYPTION" | grep -q WEP; then 316ea2e60b0SDevin Teske WEPKEY=$( $DIALOG \ 3172abc4c24SDevin Teske --title "WEP Setup" \ 3187797a597SDevin Teske --backtitle "$DIALOG_BACKTITLE" \ 3197797a597SDevin Teske --insecure \ 32010458583SDevin Teske --mixedform "" \ 32110458583SDevin Teske 0 0 0 \ 3222118f387SNathan Whitehorn "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ 3232118f387SNathan Whitehorn "WEP Key 0" 2 0 "" 2 12 15 0 1 \ 324877ea047SDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 325bef42d18SDevin Teske ) || exec "$0" "$@" 326*63939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 327*63939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 328b5938e7dSDevin Teske network={ 329*63939df8SDevin Teske \ ssid="$NETWORK" 330*63939df8SDevin Teske \ scan_ssid=$SCANSSID 331*63939df8SDevin Teske \ key_mgmt=NONE 332*63939df8SDevin Teske \ wep_key0="$WEPKEY" 333*63939df8SDevin Teske \ wep_tx_keyidx=0 334*63939df8SDevin Teske \ priority=5 335b5938e7dSDevin Teske } 336b5938e7dSDevin Teske EOF 3372118f387SNathan Whitehornelse # Open 338*63939df8SDevin Teske awk 'sub(/^\\/,"")||1' \ 339*63939df8SDevin Teske >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<-EOF 340b5938e7dSDevin Teske network={ 341*63939df8SDevin Teske \ ssid="$NETWORK" 342*63939df8SDevin Teske \ scan_ssid=$SCANSSID 343*63939df8SDevin Teske \ key_mgmt=NONE 344*63939df8SDevin Teske \ priority=5 345b5938e7dSDevin Teske } 346b5938e7dSDevin Teske EOF 3472118f387SNathan Whitehornfi 3482118f387SNathan Whitehorn 3492118f387SNathan Whitehorn# Connect to any open networks policy 350b5938e7dSDevin Teskecat >> "$BSDINSTALL_TMPETC/wpa_supplicant.conf" <<EOF 351b5938e7dSDevin Teskenetwork={ 352ebffa060SGavin Atkinson priority=0 3532118f387SNathan Whitehorn key_mgmt=NONE 354b5938e7dSDevin Teske} 355b5938e7dSDevin TeskeEOF 3562118f387SNathan Whitehorn 3572118f387SNathan Whitehorn# Bring up new network 35819dbb0baSDevin Teske[ "$BSDINSTALL_CONFIGCURRENT" ] && 3599a46c67aSDevin Teske f_eval_catch -d wlanconfig wpa_cli "wpa_cli reconfigure" 3602118f387SNathan Whitehorn 3610a835493SDevin Teskeexit $SUCCESS 362bc4a673fSDevin Teske 363bc4a673fSDevin Teske################################################################################ 364bc4a673fSDevin Teske# END 365bc4a673fSDevin Teske################################################################################ 366