Consolidation of wifi functions

This commit is contained in:
Bob Mottram 2016-10-21 10:24:07 +01:00
parent 657110355f
commit 0c569eff66
3 changed files with 344 additions and 356 deletions

View File

@ -32,33 +32,7 @@ PROJECT_NAME='freedombone'
COMPLETION_FILE=/root/${PROJECT_NAME}-completed.txt
HOTSPOT_PASSPHRASE='mesh'
function count_wlan {
# counts the number of wlan devices
ctr=0
for i in $(seq 0 1 10); do
if grep -q "wlan${i}" /proc/net/dev; then
ctr=$((ctr + 1))
fi
done
echo $ctr
}
function update_wifi_adaptors {
IFACE=
IFACE_SECONDARY=
for i in $(seq 10 -1 0); do
if grep -q "wlan${i}" /proc/net/dev; then
if [ ! $IFACE ]; then
IFACE="wlan${i}"
else
IFACE_SECONDARY="wlan${i}"
return
fi
fi
done
}
source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-wifi
if [[ $1 == "start" ]]; then
# install avahi

View File

@ -131,4 +131,346 @@ function install_atheros_wifi {
mark_completed $FUNCNAME
}
function update_wifi_adaptors {
IFACE=
IFACE_SECONDARY=
for i in $(seq 10 -1 0); do
if grep -q "wlan${i}" /proc/net/dev; then
if [ ! $IFACE ]; then
IFACE="wlan${i}"
else
IFACE_SECONDARY="wlan${i}"
return
fi
fi
done
}
function wifi_get_psk {
ssid=$1
passphrase=$2
psk=$(wpa_passphrase "$ssid" "$passphrase" | grep 'psk=' | sed -n 2p | awk -F '=' '{print $2}')
echo $psk
}
function hotspot_off {
if [ ! -f /etc/hostapd/hostapd.conf ]; then
return
fi
systemctl stop hostapd
rm /etc/hostapd/hostapd.conf
if [ -f /etc/network/interfaces_original ]; then
cp /etc/network/interfaces_original /etc/network/interfaces
else
echo '# interfaces(5) file used by ifup(8) and ifdown(8)' > /etc/network/interfaces
echo '# Include files from /etc/network/interfaces.d:' >> /etc/network/interfaces
echo 'source-directory /etc/network/interfaces.d' >> /etc/network/interfaces
fi
systemctl restart network-manager
ifdown $WIFI_INTERFACE
}
function hotspot_on {
if [ ! -f /etc/default/hostapd ]; then
echo $'/etc/default/hostapd was not found'
exit 67241
fi
if [ ${#WIFI_PASSPHRASE} -lt 8 ]; then
echo $'Wifi hotspot passphrase is too short'
exit 25719
fi
sed -i 's|#DAEMON_CONF=.*|DAEMON_CONF="/etc/hostapd/hostapd.conf"|g' /etc/default/hostapd
echo '### Wireless network name ###' > /etc/hostapd/hostapd.conf
echo "interface=$WIFI_INTERFACE" >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '### Set your bridge name ###' >> /etc/hostapd/hostapd.conf
echo 'bridge=br0' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo 'driver=nl80211' >> /etc/hostapd/hostapd.conf
echo "country_code=UK" >> /etc/hostapd/hostapd.conf
echo "ssid=$WIFI_SSID" >> /etc/hostapd/hostapd.conf
echo 'hw_mode=g' >> /etc/hostapd/hostapd.conf
echo 'channel=6' >> /etc/hostapd/hostapd.conf
echo 'wpa=2' >> /etc/hostapd/hostapd.conf
echo "wpa_passphrase=$WIFI_PASSPHRASE" >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Key management algorithms ##' >> /etc/hostapd/hostapd.conf
echo 'wpa_key_mgmt=WPA-PSK' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Set cipher suites (encryption algorithms) ##' >> /etc/hostapd/hostapd.conf
echo '## TKIP = Temporal Key Integrity Protocol' >> /etc/hostapd/hostapd.conf
echo '## CCMP = AES in Counter mode with CBC-MAC' >> /etc/hostapd/hostapd.conf
echo 'wpa_pairwise=TKIP' >> /etc/hostapd/hostapd.conf
echo 'rsn_pairwise=CCMP' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Shared Key Authentication ##'
echo 'auth_algs=1' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Accept all MAC address ###' >> /etc/hostapd/hostapd.conf
echo 'macaddr_acl=0' >> /etc/hostapd/hostapd.conf
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo br0' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "# wireless $WIFI_INTERFACE" >> /etc/network/interfaces
echo "allow-hotplug $WIFI_INTERFACE" >> /etc/network/interfaces
echo "iface $WIFI_INTERFACE inet manual" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo '# eth0 connected to the ISP router' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet manual' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo '# Setup bridge' >> /etc/network/interfaces
echo 'iface br0 inet static' >> /etc/network/interfaces
echo " bridge_ports $WIFI_INTERFACE eth0" >> /etc/network/interfaces
systemctl restart network-manager
ifup $WIFI_INTERFACE
systemctl restart hostapd
}
function wifi_wpa2_psk {
ssid=$1
passphrase=$2
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
wpa_passphrase "$ssid" "$passphrase" > $WIFI_CONFIG
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function wifi_none {
ssid=$1
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
echo 'network={' > $WIFI_CONFIG
echo " ssid=\"${ssid}\"" >> $WIFI_CONFIG
echo ' key_mgmt=NONE' >> $WIFI_CONFIG
echo '}' >> $WIFI_CONFIG
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function networks_from_file {
if [ ! -f $WIFI_NETWORKS_FILE ]; then
exit 4
fi
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
# remove wpa_supplicant.conf if it exists
if [ -f $WIFI_CONFIG ]; then
rm -f $WIFI_CONFIG
fi
ctr=0
while read -r line
do
if [ ${#line} -gt 1 ]; then
if [[ "$line" != '#'* ]]; then
if [ $ctr -eq 0 ]; then
WIFI_SSID="$line"
fi
if [ $ctr -eq 1 ]; then
WIFI_TYPE="$line"
if [[ $WIFI_TYPE == $'none' || $WIFI_TYPE == $'open' ]]; then
echo 'network={' >> $WIFI_CONFIG
echo " ssid=\"${WIFI_SSID}\"" >> $WIFI_CONFIG
echo ' key_mgmt=NONE' >> $WIFI_CONFIG
echo '}' >> $WIFI_CONFIG
ctr=0
continue
fi
fi
if [ $ctr -eq 2 ]; then
WIFI_PASSPHRASE="$line"
wpa_passphrase "$WIFI_SSID" "$WIFI_PASSPHRASE" >> $WIFI_CONFIG
ctr=0
continue
fi
ctr=$((ctr + 1))
fi
fi
done < $WIFI_NETWORKS_FILE
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function create_networks_interactive {
update_wifi_adaptors
if [ ! $IFACE ]; then
# Don't try to configure wifi if there are no adaptors
return
fi
if [ -f $WIFI_NETWORKS_FILE ]; then
rm $WIFI_NETWORKS_FILE
fi
echo $'# Add wifi networks as follows:' > $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
echo $'# MySSID' >> $WIFI_NETWORKS_FILE
echo $'# wpa2-psk' >> $WIFI_NETWORKS_FILE
echo $'# myWifiPassphrase' >> $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
echo $'# AnotherSSID' >> $WIFI_NETWORKS_FILE
echo $'# none' >> $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
wifi_ctr=0
wifi_networks_done=
while [ ! $wifi_networks_done ]
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
dialog --backtitle $"Freedombone Configuration" \
--title $"Wifi Settings ${wifi_ctr}" \
--form $"\nIf you wish to use wifi and have a Free Software compatible adapter (eg. Atheros) rather than wired ethernet then enter the details below, otherwise just select Ok:" 15 55 4 \
$"SSID:" 1 1 "$WIFI_SSID" 1 16 30 30 \
$"Type:" 2 1 "$WIFI_TYPE" 2 16 10 10 \
$"Passphrase:" 3 1 "$WIFI_PASSPHRASE" 3 16 30 30 \
2> $data
sel=$?
case $sel in
1) return;;
255) return;;
esac
WIFI_SSID=$(cat $data | sed -n 1p)
WIFI_TYPE=$(cat $data | sed -n 2p)
WIFI_PASSPHRASE=$(cat $data | sed -n 3p)
# if these fields are empty then there are no more wifi networks
if [ ${#WIFI_SSID} -lt 2 ]; then
wifi_networks_done='yes'
continue
fi
if [ ${#WIFI_TYPE} -lt 2 ]; then
wifi_networks_done='yes'
continue
fi
# update the wifi networks file
echo '' >> $WIFI_NETWORKS_FILE
echo "$WIFI_SSID" >> $WIFI_NETWORKS_FILE
echo "$WIFI_TYPE" >> $WIFI_NETWORKS_FILE
if [ ${#WIFI_PASSPHRASE} -gt 1 ]; then
echo "$WIFI_PASSPHRASE" >> $WIFI_NETWORKS_FILE
fi
if [ ${#WIFI_SSID} -gt 1 ]; then
if [ ${#WIFI_TYPE} -gt 1 ]; then
if [[ "${WIFI_TYPE}" == $'none' || "${WIFI_TYPE}" == $'open' ]]; then
return
else
if [ ${#WIFI_PASSPHRASE} -gt 1 ]; then
return
fi
fi
fi
fi
# clear values
WIFI_SSID=
WIFI_PASSPHRASE=
wifi_ctr=$((wifi_ctr + 1))
done
}
function disable_wifi {
if [[ ${1} == 'yes' || ${1} == 'y' ]]; then
hotspot_off
echo '# interfaces(5) file used by ifup(8) and ifdown(8)' > /etc/network/interfaces
echo '# Include files from /etc/network/interfaces.d:' >> /etc/network/interfaces
echo 'source-directory /etc/network/interfaces.d' >> /etc/network/interfaces
systemctl restart network-manager
ifdown ${WIFI_INTERFACE}
else
networks_from_file
fi
}
function count_wlan {
# counts the number of wlan devices
ctr=0
for i in $(seq 0 1 10); do
if grep -q "wlan${i}" /proc/net/dev; then
ctr=$((ctr + 1))
fi
done
echo $ctr
}
# NOTE: deliberately no exit 0

View File

@ -50,335 +50,7 @@ WIFI_DISABLE=
IFACE=
IFACE_SECONDARY=
function update_wifi_adaptors {
IFACE=
IFACE_SECONDARY=
for i in $(seq 10 -1 0); do
if grep -q "wlan${i}" /proc/net/dev; then
if [ ! $IFACE ]; then
IFACE="wlan${i}"
else
IFACE_SECONDARY="wlan${i}"
return
fi
fi
done
}
function wifi_get_psk {
ssid=$1
passphrase=$2
psk=$(wpa_passphrase "$ssid" "$passphrase" | grep 'psk=' | sed -n 2p | awk -F '=' '{print $2}')
echo $psk
}
function hotspot_off {
if [ ! -f /etc/hostapd/hostapd.conf ]; then
return
fi
systemctl stop hostapd
rm /etc/hostapd/hostapd.conf
if [ -f /etc/network/interfaces_original ]; then
cp /etc/network/interfaces_original /etc/network/interfaces
else
echo '# interfaces(5) file used by ifup(8) and ifdown(8)' > /etc/network/interfaces
echo '# Include files from /etc/network/interfaces.d:' >> /etc/network/interfaces
echo 'source-directory /etc/network/interfaces.d' >> /etc/network/interfaces
fi
systemctl restart network-manager
ifdown $WIFI_INTERFACE
}
function hotspot_on {
if [ ! -f /etc/default/hostapd ]; then
echo $'/etc/default/hostapd was not found'
exit 67241
fi
if [ ${#WIFI_PASSPHRASE} -lt 8 ]; then
echo $'Wifi hotspot passphrase is too short'
exit 25719
fi
sed -i 's|#DAEMON_CONF=.*|DAEMON_CONF="/etc/hostapd/hostapd.conf"|g' /etc/default/hostapd
echo '### Wireless network name ###' > /etc/hostapd/hostapd.conf
echo "interface=$WIFI_INTERFACE" >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '### Set your bridge name ###' >> /etc/hostapd/hostapd.conf
echo 'bridge=br0' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo 'driver=nl80211' >> /etc/hostapd/hostapd.conf
echo "country_code=UK" >> /etc/hostapd/hostapd.conf
echo "ssid=$WIFI_SSID" >> /etc/hostapd/hostapd.conf
echo 'hw_mode=g' >> /etc/hostapd/hostapd.conf
echo 'channel=6' >> /etc/hostapd/hostapd.conf
echo 'wpa=2' >> /etc/hostapd/hostapd.conf
echo "wpa_passphrase=$WIFI_PASSPHRASE" >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Key management algorithms ##' >> /etc/hostapd/hostapd.conf
echo 'wpa_key_mgmt=WPA-PSK' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Set cipher suites (encryption algorithms) ##' >> /etc/hostapd/hostapd.conf
echo '## TKIP = Temporal Key Integrity Protocol' >> /etc/hostapd/hostapd.conf
echo '## CCMP = AES in Counter mode with CBC-MAC' >> /etc/hostapd/hostapd.conf
echo 'wpa_pairwise=TKIP' >> /etc/hostapd/hostapd.conf
echo 'rsn_pairwise=CCMP' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Shared Key Authentication ##'
echo 'auth_algs=1' >> /etc/hostapd/hostapd.conf
echo '' >> /etc/hostapd/hostapd.conf
echo '## Accept all MAC address ###' >> /etc/hostapd/hostapd.conf
echo 'macaddr_acl=0' >> /etc/hostapd/hostapd.conf
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo br0' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "# wireless $WIFI_INTERFACE" >> /etc/network/interfaces
echo "allow-hotplug $WIFI_INTERFACE" >> /etc/network/interfaces
echo "iface $WIFI_INTERFACE inet manual" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo '# eth0 connected to the ISP router' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet manual' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo '# Setup bridge' >> /etc/network/interfaces
echo 'iface br0 inet static' >> /etc/network/interfaces
echo " bridge_ports $WIFI_INTERFACE eth0" >> /etc/network/interfaces
systemctl restart network-manager
ifup $WIFI_INTERFACE
systemctl restart hostapd
}
function wifi_wpa2_psk {
ssid=$1
passphrase=$2
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
wpa_passphrase "$ssid" "$passphrase" > $WIFI_CONFIG
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function wifi_none {
ssid=$1
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
echo 'network={' > $WIFI_CONFIG
echo " ssid=\"${ssid}\"" >> $WIFI_CONFIG
echo ' key_mgmt=NONE' >> $WIFI_CONFIG
echo '}' >> $WIFI_CONFIG
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function networks_from_file {
if [ ! -f $WIFI_NETWORKS_FILE ]; then
exit 4
fi
if [ ! -f /etc/network/interfaces_original ]; then
if ! grep -q "# wifi enabled" /etc/network/interfaces; then
cp /etc/network/interfaces /etc/network/interfaces_original
fi
fi
echo '# wifi enabled' > /etc/network/interfaces
echo 'auto lo' >> /etc/network/interfaces
echo 'iface lo inet loopback' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'allow-hotplug eth0' >> /etc/network/interfaces
echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo "allow-hotplug ${WIFI_INTERFACE}" >> /etc/network/interfaces
echo "iface ${WIFI_INTERFACE} inet manual" >> /etc/network/interfaces
echo " wpa-roam $WIFI_CONFIG" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'iface default inet dhcp' >> /etc/network/interfaces
# remove wpa_supplicant.conf if it exists
if [ -f $WIFI_CONFIG ]; then
rm -f $WIFI_CONFIG
fi
ctr=0
while read -r line
do
if [ ${#line} -gt 1 ]; then
if [[ "$line" != '#'* ]]; then
if [ $ctr -eq 0 ]; then
WIFI_SSID="$line"
fi
if [ $ctr -eq 1 ]; then
WIFI_TYPE="$line"
if [[ $WIFI_TYPE == $'none' || $WIFI_TYPE == $'open' ]]; then
echo 'network={' >> $WIFI_CONFIG
echo " ssid=\"${WIFI_SSID}\"" >> $WIFI_CONFIG
echo ' key_mgmt=NONE' >> $WIFI_CONFIG
echo '}' >> $WIFI_CONFIG
ctr=0
continue
fi
fi
if [ $ctr -eq 2 ]; then
WIFI_PASSPHRASE="$line"
wpa_passphrase "$WIFI_SSID" "$WIFI_PASSPHRASE" >> $WIFI_CONFIG
ctr=0
continue
fi
ctr=$((ctr + 1))
fi
fi
done < $WIFI_NETWORKS_FILE
systemctl restart network-manager
ifup ${WIFI_INTERFACE}
}
function create_networks_interactive {
update_wifi_adaptors
if [ ! $IFACE ]; then
# Don't try to configure wifi if there are no adaptors
return
fi
if [ -f $WIFI_NETWORKS_FILE ]; then
rm $WIFI_NETWORKS_FILE
fi
echo $'# Add wifi networks as follows:' > $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
echo $'# MySSID' >> $WIFI_NETWORKS_FILE
echo $'# wpa2-psk' >> $WIFI_NETWORKS_FILE
echo $'# myWifiPassphrase' >> $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
echo $'# AnotherSSID' >> $WIFI_NETWORKS_FILE
echo $'# none' >> $WIFI_NETWORKS_FILE
echo '#' >> $WIFI_NETWORKS_FILE
wifi_ctr=0
wifi_networks_done=
while [ ! $wifi_networks_done ]
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
dialog --backtitle $"Freedombone Configuration" \
--title $"Wifi Settings ${wifi_ctr}" \
--form $"\nIf you wish to use wifi and have a Free Software compatible adapter (eg. Atheros) rather than wired ethernet then enter the details below, otherwise just select Ok:" 15 55 4 \
$"SSID:" 1 1 "$WIFI_SSID" 1 16 30 30 \
$"Type:" 2 1 "$WIFI_TYPE" 2 16 10 10 \
$"Passphrase:" 3 1 "$WIFI_PASSPHRASE" 3 16 30 30 \
2> $data
sel=$?
case $sel in
1) return;;
255) return;;
esac
WIFI_SSID=$(cat $data | sed -n 1p)
WIFI_TYPE=$(cat $data | sed -n 2p)
WIFI_PASSPHRASE=$(cat $data | sed -n 3p)
# if these fields are empty then there are no more wifi networks
if [ ${#WIFI_SSID} -lt 2 ]; then
wifi_networks_done='yes'
continue
fi
if [ ${#WIFI_TYPE} -lt 2 ]; then
wifi_networks_done='yes'
continue
fi
# update the wifi networks file
echo '' >> $WIFI_NETWORKS_FILE
echo "$WIFI_SSID" >> $WIFI_NETWORKS_FILE
echo "$WIFI_TYPE" >> $WIFI_NETWORKS_FILE
if [ ${#WIFI_PASSPHRASE} -gt 1 ]; then
echo "$WIFI_PASSPHRASE" >> $WIFI_NETWORKS_FILE
fi
if [ ${#WIFI_SSID} -gt 1 ]; then
if [ ${#WIFI_TYPE} -gt 1 ]; then
if [[ "${WIFI_TYPE}" == $'none' || "${WIFI_TYPE}" == $'open' ]]; then
return
else
if [ ${#WIFI_PASSPHRASE} -gt 1 ]; then
return
fi
fi
fi
fi
# clear values
WIFI_SSID=
WIFI_PASSPHRASE=
wifi_ctr=$((wifi_ctr + 1))
done
}
function disable_wifi {
if [[ ${1} == 'yes' || ${1} == 'y' ]]; then
hotspot_off
echo '# interfaces(5) file used by ifup(8) and ifdown(8)' > /etc/network/interfaces
echo '# Include files from /etc/network/interfaces.d:' >> /etc/network/interfaces
echo 'source-directory /etc/network/interfaces.d' >> /etc/network/interfaces
systemctl restart network-manager
ifdown ${WIFI_INTERFACE}
else
networks_from_file
fi
}
source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-wifi
function show_help {
echo ''