2018-08-03 12:56:15 -06:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# ================================================================
|
|
|
|
# Configuration Section
|
|
|
|
# ================================================================
|
|
|
|
APServiceConfigDirectory=$FLUXIONWorkspacePath
|
|
|
|
# ================================================================
|
|
|
|
|
|
|
|
#if [ "$APServiceVersion" ]; then return 0; fi
|
|
|
|
#readonly APServiceVersion="1.0"
|
|
|
|
|
|
|
|
function ap_service_stop() {
|
|
|
|
if [ "$APServicePID" ]; then
|
|
|
|
kill $APServicePID &> $FLUXIONOutputDevice
|
|
|
|
fi
|
|
|
|
|
|
|
|
APServicePID=""
|
|
|
|
}
|
|
|
|
|
|
|
|
function ap_service_reset() {
|
|
|
|
ap_service_stop
|
|
|
|
|
|
|
|
# Reset MAC address to original.
|
|
|
|
ip link set $APServiceInterface down
|
|
|
|
sleep 0.25
|
|
|
|
|
|
|
|
macchanger -p $APServiceInterface &> $FLUXIONOutputDevice
|
|
|
|
sleep 0.25
|
|
|
|
|
|
|
|
ip link set $APServiceInterface up
|
|
|
|
sleep 0.25
|
|
|
|
|
|
|
|
APServiceAccessInterface=""
|
|
|
|
|
|
|
|
APServiceChannel=""
|
|
|
|
APServiceMAC=""
|
|
|
|
APServiceSSID=""
|
|
|
|
APServiceInterfaceAddress=""
|
|
|
|
APServiceInterface=""
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function ap_service_route() {
|
|
|
|
echo "APService: No custom routes for hostapd" > $FLUXIONOutputDevice
|
|
|
|
}
|
|
|
|
|
|
|
|
function ap_service_prep() {
|
|
|
|
if [ ${#@} -lt 5 ]; then return 1; fi
|
|
|
|
|
|
|
|
APServiceInterface=$1
|
|
|
|
APServiceInterfaceAddress=$2
|
|
|
|
APServiceSSID=$3
|
|
|
|
APServiceMAC=$4
|
|
|
|
APServiceChannel=$5
|
|
|
|
|
|
|
|
ap_service_stop
|
2023-01-26 07:42:32 -07:00
|
|
|
|
2018-08-03 12:56:15 -06:00
|
|
|
# Prepare the hostapd config file.
|
|
|
|
echo "\
|
|
|
|
interface=$APServiceInterface
|
|
|
|
driver=nl80211
|
|
|
|
ssid=$APServiceSSID
|
2023-01-26 07:42:32 -07:00
|
|
|
channel=$APServiceChannel" \
|
2018-08-03 12:56:15 -06:00
|
|
|
> "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf"
|
|
|
|
|
|
|
|
# Spoof virtual interface MAC address.
|
|
|
|
ip link set $APServiceInterface down
|
|
|
|
sleep 0.5
|
|
|
|
|
|
|
|
macchanger --mac=$APServiceMAC $APServiceInterface &> $FLUXIONOutputDevice
|
|
|
|
sleep 0.5
|
|
|
|
|
|
|
|
ip link set $APServiceInterface up
|
|
|
|
sleep 0.5
|
|
|
|
|
|
|
|
# HostAPD sets the virtual interface mode
|
|
|
|
# to master, which is supported by dhcpd.
|
|
|
|
APServiceAccessInterface=$APServiceInterface
|
|
|
|
}
|
|
|
|
|
|
|
|
function ap_service_start() {
|
|
|
|
ap_service_stop
|
|
|
|
|
|
|
|
xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" \
|
|
|
|
-title "FLUXION AP Service [hostapd]" -e \
|
|
|
|
hostapd "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf" &
|
|
|
|
local parentPID=$!
|
|
|
|
|
|
|
|
# Wait till hostapd has started and its virtual interface is ready.
|
|
|
|
while [ ! "$APServicePID" ]; do
|
|
|
|
sleep 1
|
|
|
|
APServicePID=$(pgrep -P $parentPID)
|
|
|
|
done
|
|
|
|
|
|
|
|
ap_service_route
|
|
|
|
}
|
|
|
|
|
|
|
|
# FLUXSCRIPT END
|