#!/bin/bash
#
# Configure snmpd
. /usr/libexec/ovirt-functions

trap '__st=$?; stop_log; exit $__st' 0
trap 'exit $?' 1 2 13 15

warn() { printf '%s\n' "$*" >&2; }

if ! is_local_storage_configured; then
    warn "Local storage must be configured prior to configuring SNMP."
    exit 99
fi

enable_snmpd() {
    local password=$1
    local CONF=/var/lib/net-snmp/snmpd.conf
    ovirt_store_config /etc/sysconfig/snmpd /var/lib/net-snmp/ >/dev/null

    service snmpd stop
    # reset snmpd options to defaults, image has "-v" to prevent snmpd start
    sed -c -ie '/^OPTIONS/d' /etc/sysconfig/snmpd
    if [ -e $CONF ]; then
         sed -c -ie '/^createUser root/d' $CONF
    fi
    echo "createUser root SHA $password AES" >> $CONF
    service snmpd start
}

disable_snmpd() {
    service snmpd stop > /dev/null
    while umount /etc/sysconfig/snmpd; do : ; done 2> /dev/null
    remove_config /etc/sysconfig/snmpd > /dev/null
}

if [[ "$1" == "AUTO" ]]; then
    if [ -n "${OVIRT_SNMP_PASSWORD}" ]; then
        enable_snmpd $OVIRT_SNMP_PASSWORD
    fi
else
    ask_yes_or_no "Enable SNMP agent ([Y]es/[N]o/[A]bort)?" true true
    case $? in
        0)
            while true; do
                printf "\n"
                read -p "Enter password for SNMPv3 USM 'root' user: " -esr
                password1="$REPLY"
                result=$(echo $password1 | cracklib-check | sed -r 's/^.*: //')
                if [ ! "$reply" = "OK" ]; then
                    printf "Error:  $reply"
                    continue
                fi
                printf "\n"
                read -p "Confirm password: " -esr
                password="$REPLY"
                if [ "$password1" = "$password" ]; then break; fi
            done
            printf "\n"
            enable_snmpd $password ;;
        1) disable_snmpd ;;
        2) ;;
    esac
    printf "\n"
fi
