71 lines
1.4 KiB
Bash
Executable File
71 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Source config
|
|
. ../config.txt
|
|
|
|
check_config () {
|
|
if ! iw list | grep -q "* AP"; then
|
|
echo "AP mode not supported!"
|
|
echo "Please attach a WiFi card that supports AP mode."
|
|
exit 1
|
|
fi
|
|
|
|
echo -n "Checking for network interface $WLAN... "
|
|
if [ -e /sys/class/net/$WLAN ]; then
|
|
echo "Found."
|
|
else
|
|
echo "Not found!"
|
|
echo -n "Please edit WLAN in config.txt to one of: "
|
|
ls -m /sys/class/net
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
setup () {
|
|
wpa_supplicant_pid=$(pidof wpa_supplicant)
|
|
if [ -n "$wpa_supplicant_pid" ]; then
|
|
echo "Attempting to stop wpa_supplicant"
|
|
sudo kill $wpa_supplicant_pid
|
|
fi
|
|
|
|
if test -d /etc/NetworkManager; then
|
|
echo "Stopping NetworkManager..."
|
|
sudo service network-manager stop
|
|
fi
|
|
|
|
echo "Configuring AP interface..."
|
|
sudo ifconfig $WLAN down
|
|
sudo ifconfig $WLAN up $GATEWAY netmask 255.255.255.0
|
|
sudo ip route add 255.255.255.255 dev $WLAN
|
|
|
|
echo "Starting DNSMASQ server..."
|
|
sudo dnsmasq \
|
|
--no-resolv \
|
|
--interface=$WLAN \
|
|
--bind-interfaces \
|
|
--listen-address=$GATEWAY \
|
|
--dhcp-range=10.42.42.10,10.42.42.40,12h \
|
|
--address=/#/$GATEWAY
|
|
|
|
echo "Starting AP on $WLAN..."
|
|
sudo hostapd hostapd.conf -i $WLAN
|
|
}
|
|
|
|
cleanup () {
|
|
sudo pkill hostapd
|
|
echo "AP closed"
|
|
|
|
echo "Stopping DNSMASQ server..."
|
|
sudo pkill dnsmasq
|
|
|
|
if test -d /etc/NetworkManager; then
|
|
echo "Restarting NetworkManager..."
|
|
sudo service network-manager restart
|
|
fi
|
|
}
|
|
|
|
check_config
|
|
trap cleanup EXIT
|
|
setup
|
|
|