#!/bin/bash
INTERFACE=mullvad        # Set to name of VPN interface
shopt -s nullglob

# Test whether gateway is connected to the outer world via VPN
ping -q -I $INTERFACE 8.8.8.8 -c 4 -i 1 -W 5 >/dev/null 2>&1

if test $? -eq 0; then
    NEW_STATE=server
else
    NEW_STATE=off
fi

# Iterate through network interfaces in sys file system
for MESH in /sys/class/net/*/mesh; do
# Check whether gateway modus needs to be changed
OLD_STATE="$(cat $MESH/gw_mode)"
[ "$OLD_STATE" == "$NEW_STATE" ] && continue
    echo $NEW_STATE > $MESH/gw_mode
    echo 54MBit/54MBit > $MESH/gw_bandwidth
    logger "batman gateway mode changed to $NEW_STATE"

    # Check whether gateway modus has been deactivated
    if [ "$NEW_STATE" == "off" ]; then
        # Shutdown DHCP server to prevent renewal of leases
        /usr/sbin/service isc-dhcp-server stop
    fi

    # Check whether gateway modus has been activated
    if [ "$NEW_STATE" == "server" ]; then
        # Restart DHCP server
        /usr/sbin/service isc-dhcp-server start
    fi
    exit 0
done

if [ "$NEW_STATE" == "server" ]; then
    /usr/sbin/service isc-dhcp-server status 2>&1> /dev/null
    if [[ $? -ne 0 ]]
    then
        /usr/sbin/service isc-dhcp-server restart
    fi
fi
if [ "$NEW_STATE" == "off" ]; then
    /usr/sbin/service isc-dhcp-server status 2>&1> /dev/null
    if [[ $? -eq 0 ]]
    then
        /usr/sbin/service isc-dhcp-server stop
    fi
fi