#!/usr/bin/sh
#########################################################
# Orbital Net UBNT Radio Set LAN0 VLAN Script           #
# (c) 2024 Orbital Net Ltd                              #
# Author: Andrew Cassidy <andrew.cassidy@orbital.net>   #
#########################################################

sort < /tmp/running.cfg > /tmp/orig.cfg
md5sum /tmp/orig.cfg > /tmp/orig.sum

# Delete all vlan and bridge configuration
grep -v ^bridge.1.port /tmp/running.cfg | grep -v ^bridge.2 | grep -v ^ebtables.sys.vlan | grep -v ^ebtables.sys.arpnat | grep -v ^gui.network.advanced.status | grep -v ^netconf.4 | grep -v ^netconf.5 | grep -v ^vlan > /tmp/new.cfg
cat >> /tmp/new.cfg <<EOF
bridge.1.port.1.devname=ath0
bridge.1.port.1.status=enabled
gui.network.advanced.status=enabled
EOF

# Are we a one or two interface radio? If two interfaces, we leave 0 as normal, 1 bridged into vlan.
if ip link show eth1 2>/dev/null >/dev/null; then
  vlan_interface=eth1
else
  vlan_interface=eth0
fi

if [ "$1" = "" ]; then
  # If no vlan requests, create basic bridge
  echo bridge.1.port.2.devname=eth0 >> /tmp/new.cfg
  echo bridge.1.port.2.status=enabled >> /tmp/new.cfg

  if [ "$vlan_interface" = "eth1" ]; then
    echo bridge.1.port.3.devname=eth1 >> /tmp/new.cfg
    echo bridge.1.port.3.status=enabled >> /tmp/new.cfg
  fi

else
  if [ "$vlan_interface" = "eth1" ]; then
    echo bridge.1.port.2.devname=eth0 >> /tmp/new.cfg
    echo bridge.1.port.2.status=enabled >> /tmp/new.cfg
  fi

  # if vlan, create it, add wlan to bridge, create second bridge, add lan0 and wlan.vlan
  cat >> /tmp/new.cfg <<EOF
bridge.2.devname=br1
bridge.2.port.1.devname=ath0.$1
bridge.2.port.1.status=enabled
bridge.2.port.2.devname=$vlan_interface
bridge.2.port.2.status=enabled
bridge.2.status=enabled
bridge.2.stp.status=disabled
ebtables.sys.vlan.1.devname=ath0
ebtables.sys.vlan.1.id=$1
ebtables.sys.vlan.1.status=enabled
ebtables.sys.vlan.status=enabled
netconf.4.autoip.status=disabled
netconf.4.devname=ath0.$1
netconf.4.mtu=1500
netconf.4.status=enabled
netconf.5.autoip.status=disabled
netconf.5.devname=br1
netconf.5.mtu=1500
netconf.5.status=enabled
vlan.1.comment=PPPoE
vlan.1.devname=ath0
vlan.1.id=$1
vlan.1.status=enabled
vlan.status=enabled
EOF

fi

sort < /tmp/new.cfg > /tmp/orig.cfg
if md5sum -c /tmp/orig.sum; then
  echo "No changes made."
else
  echo "Changes made, reboot required."
  touch /tmp/reboot-required
  cat /tmp/orig.cfg > /tmp/running.cfg
  cfgmtd -f /tmp/running.cfg -w -p /etc/
fi
