wifi executor: add support for insecure wifi networks

This commit is contained in:
Ariadne Conill 2020-12-02 19:27:28 -07:00
parent eeb40937fb
commit 4e3a4c6cb8

View file

@ -35,34 +35,52 @@ PIDFILE="/run/wpa_supplicant.$IFACE.pid"
[ -n "$IF_WIFI_CONFIG_PATH" -a -n "$IF_WIFI_PSK" ] && die "wifi-config-path cannot be used with wifi-psk" [ -n "$IF_WIFI_CONFIG_PATH" -a -n "$IF_WIFI_PSK" ] && die "wifi-config-path cannot be used with wifi-psk"
# Set IF_WIFI_CONFIG_PATH to the default path if not already set. # Set IF_WIFI_CONFIG_PATH to the default path if not already set.
[ -z "$IF_WIFI_CONFIG_PATH" ] && IF_WIFI_CONFIG_PATH="/run/wpa_supplicant.$IFACE.conf" WIFI_CONFIG_PATH="$IF_WIFI_CONFIG_PATH"
[ -z "$WIFI_CONFIG_PATH" ] && WIFI_CONFIG_PATH="/run/wpa_supplicant.$IFACE.conf"
# Supplicant options. # Supplicant options.
WPA_SUPPLICANT_OPTS="-qq -B -i$IFACE -c$IF_WIFI_CONFIG_PATH -P$PIDFILE" WPA_SUPPLICANT_OPTS="-qq -B -i$IFACE -c$WIFI_CONFIG_PATH -P$PIDFILE"
# Given $IF_WIFI_SSID and $IF_WIFI_PSK, generate a config file at $IF_WIFI_CONFIG_PATH. # Given $IF_WIFI_SSID and $IF_WIFI_PSK, generate a config file at $WIFI_CONFIG_PATH.
generate_config() { generate_config() {
[ -z "$IF_WIFI_SSID" ] && die "wifi-ssid not set" [ -z "$IF_WIFI_SSID" ] && die "wifi-ssid not set"
[ -z "$IF_WIFI_PSK" ] && die "wifi-psk not set" [ -z "$IF_WIFI_PSK" ] && die "wifi-psk not set"
# We use a pipeline here to avoid leaking PSK into the process name. # We use a pipeline here to avoid leaking PSK into the process name.
(echo $IF_WIFI_PSK | /sbin/wpa_passphrase $IF_WIFI_SSID) >$IF_WIFI_CONFIG_PATH (echo $IF_WIFI_PSK | /sbin/wpa_passphrase $IF_WIFI_SSID) >$WIFI_CONFIG_PATH
[ ! -e "$IF_WIFI_CONFIG_PATH" ] && die "failed to write temporary config: $IF_WIFI_CONFIG_PATH" [ ! -e "$WIFI_CONFIG_PATH" ] && die "failed to write temporary config: $WIFI_CONFIG_PATH"
}
# Should we use the supplicant?
use_supplicant() {
[ -n "$IF_WIFI_CONFIG_PATH" ] && return 0
[ -n "$IF_WIFI_PSK" ] && return 0
return 1
} }
# Start a supplicant process for $IFACE. # Start a supplicant process for $IFACE.
start() { start() {
# If there is no config file located at $IF_WIFI_CONFIG_PATH, generate one. if use_supplicant; then
[ ! -e "$IF_WIFI_CONFIG_PATH" ] && generate_config # If there is no config file located at $WIFI_CONFIG_PATH, generate one.
[ ! -e "$WIFI_CONFIG_PATH" ] && generate_config
/sbin/wpa_supplicant $WPA_SUPPLICANT_OPTS /sbin/wpa_supplicant $WPA_SUPPLICANT_OPTS
else
/usr/sbin/iwconfig $IFACE essid -- "$IF_WIFI_SSID" ap any
fi
} }
# Stop the supplicant process for $IFACE. # Stop the supplicant process for $IFACE.
stop() { stop() {
if use_supplicant; then
kill -9 $(cat $PIDFILE) 2>/dev/null kill -9 $(cat $PIDFILE) 2>/dev/null
[ -z "$IF_WIFI_CONFIG_PATH" ] && rm $WIFI_CONFIG_PATH
rm $PIDFILE rm $PIDFILE
else
/usr/sbin/iwconfig $IFACE essid any
fi
} }
[ -z "$VERBOSE" ] || set -x [ -z "$VERBOSE" ] || set -x