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

if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ]; then
  echo "Usage: $0 <device name> <SSID> <frequency>"
  exit 1
fi

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


grep -v ^aaa. /tmp/orig.cfg | grep -v ^airview.status= | grep -v ^bridge.1. | grep -v ^discovery.cdp.status= | \
grep -v ^ebtables.sys.arpnat. | grep -v ^ebtables.sys.fw | grep -v ^gui.language= | grep -v ^httpd. | \
grep -v ^gui.network.advanced.status= | grep -v ^igmpproxy.status= | grep -v ^iptables. | grep -v ^ntpclient. | \
grep -v ^pppoe-relay.status= | grep -v ^pwdog. | grep -v ^radio. | grep -v ^resolv. | grep -v ^snmp. | \
grep -v ^syslog.remote. | grep -v ^system.airosx.prov.status= | grep -v ^system.autosend_crash_reports= | \
grep -v ^users.1. | grep -v ^wireless.1.ampdu | grep -v ^wireless.1.l2_isolation= | grep -v ^wireless.1.mac_acl. | \
grep -v ^wireless.1.mcast.enhance= | grep -v ^wireless.1.rate. | grep -v ^wireless.1.ssid= | \
grep -v ^wireless.1.wds.status= | grep -v ^wpasupplicant.device.1.status= | \
grep -v ^wpasupplicant.profile.1.network.1.psk= | grep -v ^wpasupplicant.profile.1.network.1.ssid= | \
grep -v ^wpasupplicant.profile.1.network.2. | grep -v ^wpasupplicant.status= > /tmp/new.cfg

cat >> /tmp/new.cfg <<EOF
aaa.1.devname=ath0
aaa.1.radius.acct.1.port=1813
aaa.1.radius.acct.1.status=disabled
aaa.1.radius.auth.1.port=1812
aaa.1.radius.auth.1.status=disabled
aaa.1.ssid=$2
aaa.1.status=enabled
aaa.1.wpa.1.pairwise=CCMP
aaa.1.wpa.key.1.mgmt=WPA-PSK
aaa.1.wpa.mode=2
aaa.1.wpa.psk=bEk12!aSh97?
aaa.status=enabled
airview.status=enabled
bridge.1.devname=br0
bridge.1.port.1.devname=eth0
bridge.1.port.1.status=enabled
bridge.1.port.2.devname=ath0
bridge.1.port.2.status=enabled
bridge.1.status=enabled
bridge.1.stp.status=disabled
discovery.cdp.status=enabled
ebtables.sys.fw6.status=disabled
ebtables.sys.fw.status=disabled
gui.language=en_US
gui.network.advanced.status=disabled
httpd.https.port=443
httpd.https.status=enabled
httpd.port=80
httpd.session.timeout=900
httpd.status=enabled
igmpproxy.status=disabled
iptables.status=disabled
iptables.sys.portfw.status=disabled
iptables.sys.status=enabled
ntpclient.1.server=94.101.148.180, 80.88.198.180
ntpclient.1.status=enabled
ntpclient.status=enabled
pppoe-relay.status=disabled
pwdog.delay=300
pwdog.period=300
pwdog.retry=3
pwdog.status=disabled
radio.1.ack.auto=enabled
radio.1.ackdistance=600
radio.1.acktimeout=35
radio.1.antenna.gain=16
radio.1.antenna.id=1
radio.1.atpc.sta.status=enabled
radio.1.atpc.status=disabled
radio.1.atpc.threshold=36
radio.1.cable.loss=0
radio.1.center.1.freq=$3
radio.1.chanbw=20
radio.1.cmsbias=0
radio.1.countrycode=826
radio.1.cwm.enable=0
radio.1.cwm.mode=1
radio.1.devname=ath0
radio.1.dfs.status=enabled
radio.1.ff_cap_rep=0
radio.1.freq=$3
radio.1.ieee_mode=11acvht20
radio.1.low_txpower_mode=disabled
radio.1.mode=master
radio.1.obey=enabled
radio.1.polling_11ac_11n_compat=1
radio.1.polling=enabled
radio.1.polling_ff_dur=0
radio.1.polling_ff_flex=1
radio.1.polling_ff_sta_rx_rssi_th=0
radio.1.pollingnoack=0
radio.1.pollingpri=2
radio.1.ptpmode=0
radio.1.rc_mode=0
radio.1.reg_obey=disabled
radio.1.rx_sensitivity=-96
radio.1.scanbw.status=disabled
radio.1.scan_list.channels=5500,5520,5540,5560,5580,5680,5700,5720,5745,5765,5785,5805,5825
radio.1.scan_list.status=enabled
radio.1.status=enabled
radio.1.txpower=-4
radio.countrycode=826
radio.status=enabled
resolv.host.1.name=$1
resolv.host.1.status=enabled
resolv.nameserver.1.ip=80.88.201.254
resolv.nameserver.1.status=enabled
resolv.nameserver.2.ip=94.101.144.0
resolv.nameserver.2.status=enabled
resolv.nameserver.status=enabled
snmp.community=monitor
snmp.contact=vfast
snmp.location=$1
snmp.status=enabled
syslog.remote.port=514
syslog.remote.status=disabled
system.airosx.prov.status=enabled
system.autosend_crash_reports=disabled
users.1.name=admin
users.1.password=\$1\$t.SmcF9K\$.lVuvh5VS9y9DEajR5xJ00
users.1.status=enabled
wireless.1.ampdu.frames=32
wireless.1.ampdu.status=enabled
wireless.1.l2_isolation=disabled
wireless.1.mac_acl.policy=allow
wireless.1.mac_acl.status=disabled
wireless.1.mcast.enhance=1
wireless.1.rate.auto=enabled
wireless.1.rate.mcs=-1
wireless.1.ssid=$2
wireless.1.wds.status=enabled
wpasupplicant.device.1.status=disabled
wpasupplicant.profile.1.network.1.psk=bEk12!aSh97?
wpasupplicant.profile.1.network.1.ssid=$2
wpasupplicant.profile.1.network.2.key_mgmt.1.name=NONE
wpasupplicant.profile.1.network.2.priority=2
wpasupplicant.profile.1.network.2.status=disabled
wpasupplicant.status=disabled
EOF

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
