#!/bin/bash
# Prepare this node for having a new configuration installed. Remove the
# existing key, logs, configuration and certificate.
# © 2013, Multapplied Networks, Inc.

options=':qnd'
while getopts $options option ; do
    case $option in
        q  )    quiet=1 ;;  # Silence all output
        n  )    noconfirm=1 ;;  # Don't ask for confirmation
        d  )    staydown=1 ;;  # Don't start bonding afterwards
        \? )    echo "Unknown option"; exit 1 ;;
    esac
done

if [[ ! ${noconfirm} -eq 1 ]] ; then
    echo "You are about to reset the bonder to the default configuration."
    read -p "Are you sure? This cannot be undone. (y/N) " confirm
    case ${confirm} in
        [Yy]* ) ;;
        [Nn]* ) exit ;;
        *     ) exit ;;
    esac
fi

if [[ ${quiet} -ne 1 ]] ; then
    echo "Deconfiguring bonding..."
fi

systemctl stop \
    bonding.service \
    journalreporter.service \
    salt-minion.service

default-salt-minion -n -q

sed -i '/key.*/d' /etc/bonding/bonding.conf &> /dev/null
rm -f /var/lib/bonding/configuration.json*
rm -f /var/lib/bonding/config-send.json
rm -f /var/log/bonding/*
rm -f /var/lib/bonding/ca/*
rm -f /var/lib/bonding/influxmux-queue.pickle
rm -f /var/lib/bonding/openvpn/tls-auth.pem
rm -f /var/lib/bonding/qos/*
rm -f /var/lib/bonding/network-configured
rm -f /etc/bonding/nftables/filter-input-90-troubleshooting.nft
rm -f /etc/salt/minion_id
rm -f /etc/salt/pki/minion/*
rm -f /var/lib/salt/pki/minion/*
rm -f /var/lib/bonding/wireguard*
rm -f /etc/modules-load.d/bonding-aggregator.conf

/usr/sbin/bonding-setup --default-bonder --non-interactive

if [[ ! ${staydown} -eq 1 ]] ; then
    echo "Restarting bonding now"
    systemctl start bonding salt-minion
fi

if [[ ${quiet} -ne 1 ]] ; then
    echo "Deconfiguration complete."
fi
