diff --git a/installers/servicestart.sh b/installers/servicestart.sh old mode 100644 new mode 100755 index d829d138..50b6a828 --- a/installers/servicestart.sh +++ b/installers/servicestart.sh @@ -1,39 +1,61 @@ #!/bin/bash +# When wireless client AP mode is enabled, this script handles starting +# up network services in a specific order and timing to avoid race conditions. -# When wireless client AP mode is enabled, this script handles starting up network services in a specific order and timing to avoid race conditions. -# Todo: update /etc/rc.local script with /bin/bash /etc/raspap/hostapd/servicestart.sh to enable at system startup +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +NAME=raspap +DESC="Service control for RaspAP" + +positional=() +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -i|--interface) + interface="$2" + shift # past argument + shift # past value + ;; + -s|--seconds) + seconds="$2" + shift # past argument + shift # past value + ;; +esac +done +set -- "${positional[@]}" echo "Stopping network services..." systemctl stop hostapd.service systemctl stop dnsmasq.service systemctl stop dhcpcd.service -echo "Removing uap0 interface..." -iw dev uap0 del +if [ "${interface}" = "uap0" ]; then + echo "Removing uap0 interface..." + iw dev uap0 del -echo "Adding uap0 interface..." -iw dev wlan0 interface add uap0 type __ap + echo "Adding uap0 interface..." + iw dev wlan0 interface add uap0 type __ap -# Add iptables rules (todo: persist to /etc/rc.local as with default rules) -echo "IPV4 forwarding: setting..." -sysctl net.ipv4.ip_forward=1 -echo "Editing IP tables..." -iptables -t nat -A POSTROUTING -s 192.168.50.0/24 ! -d 192.168.50.0/24 -j MASQUERADE - -# Bring up uap0 interface -ifconfig uap0 up + # Bring up uap0 interface + ifconfig uap0 up +else + echo "Removing uap0 interface..." + iw dev uap0 del +fi # Start services, mitigating race conditions echo "Starting hostapd service..." systemctl start hostapd.service -sleep 5 +sleep "${seconds}" echo "Starting dhcpcd service..." systemctl start dhcpcd.service -sleep 5 +sleep "${seconds}" echo "Starting dnsmasq service..." systemctl start dnsmasq.service -echo "servicestart DONE" +echo "RaspAP servicestart DONE"