#!/bin/sh

PID_FILE="/var/run/barionet-snmp-agent.pid"
CONF_FILE="barionet-snmp-agent.conf"

# Migrate configuration from old snmp UCI to the barionet UCI
migrate_config() {
    SECTION=$(uci -q get barionet.snmp)
    if [ $? -eq 0 ]; then
        # nothing to migrate
        return
    fi

    cp /barix/config/defaults/barionet /barix/config/current/

    traps_inputs=$(uci -q get snmp.traps.barionet_inputs)
    if [ "$traps_inputs" != "" ]; then
        uci -q set barionet.snmp.traps_inputs="${traps_inputs}"
        uci -q del snmp.traps.barionet_inputs
    fi

    traps_repeat=$(uci -q get snmp.traps.barionet_repeat)
    if [ "$traps_repeat" != "" ]; then
        uci -q set barionet.snmp.traps_repeat="${traps_repeat}"
        uci -q del snmp.traps.barionet_repeat
    fi

    traps_sendonboot=$(uci -q get snmp.traps.barionet_sendonboot)
    if [ "$traps_sendonboot" != "" ]; then
        uci -q set barionet.snmp.traps_sendonboot="${traps_sendonboot}"
        uci -q del snmp.traps.barionet_sendonboot
    fi

    uci -q commit barionet
}

start() {
    migrate_config

    SNMP_ENABLED=$(uci -q get snmp.main.enabled)
    if [[ "$SNMP_ENABLED" != "true" && "$SNMP_ENABLED" != "on" ]]; then
        # SNMP not enabled
        exit 0
    fi

    traps_inputs=$(uci -q get barionet.snmp.traps_inputs)
    if [ "$traps_inputs" != "" ]; then
        echo "trapbarionet inputs $traps_inputs" >> /tmp/${CONF_FILE}
    fi

    traps_repeat=$(uci -q get barionet.snmp.traps_repeat)
    if [ "$traps_repeat" != "" ]; then
        echo "trapbarionet repeat $traps_repeat" >> /tmp/${CONF_FILE}
    fi

    traps_sendonboot=$(uci -q get barionet.snmp.traps_sendonboot)
    if [ "$traps_sendonboot" == "true" ]; then
        echo "trapbarionet sendonboot" >> /tmp/${CONF_FILE}
    fi

    if [ -f /tmp/${CONF_FILE} ]; then
        mv /tmp/${CONF_FILE} /etc/snmp/
    fi

    barix-wd --pid-file="${PID_FILE}" --start --background -- /usr/bin/barionet-snmp-agent
}

stop() {
    barix-wd --stop --wait --pid-file="${PID_FILE}"
}

case "$1" in
    start)
        start
        ;;

    stop)
        stop
        ;;

    restart)
        stop
        start
        ;;

    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $?
