# -- post-install --
post_install() {
    # ------------------------- CONFIGURATION starts here -------------------------
    # location of the HC scripts
    HC_DIR="/opt/hc"
    # location of the HC configuration files
    HC_ETC_DIR="/etc/opt/hc"
    # location of the HC log/state files
    HC_VAR_DIR="/var/opt/hc"
    # location of check_health.sh
    HC_BIN="/opt/hc/bin/check_health.sh"
    PATH="$PATH:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin"
    # ------------------------- CONFIGURATION ends here ---------------------------
    echo "INFO: starting post-install script ..."
    # copy configuration files
    if [[ ! -f ${HC_ETC_DIR}/core/check_health.conf ]]
    then
        # copy main configuration file
        cp -p ${HC_ETC_DIR}/core/check_health.conf.dist ${HC_ETC_DIR}/core/check_health.conf >/dev/null
        (( $? == 0 )) || \
        {
            echo "ERROR: could not copy main config file in ${HC_ETC_DIR}/core"
            exit 1
        }
    fi
    if [[ ! -f ${HC_ETC_DIR}/check_host.conf ]]
    then
        # copy host check configuration file
        cp -p ${HC_ETC_DIR}/check_host.conf.dist ${HC_ETC_DIR}/check_host.conf >/dev/null
        (( $? == 0 )) || \
        {
            echo "ERROR: could not copy host check config file in ${HC_ETC_DIR}"
            exit 1
        }
    fi
    # refresh symbolic FPATH links for core includes & plugins
    if [[ -x ${HC_BIN} ]]
    then
        ${HC_BIN} --fix-symlinks || echo "WARN: updating symlinks failed"
    else
        echo "ERROR: could not locate or excute the HC main script (${HC_BIN})"
    fi
    # set SELinux contexts for logrotate
    SESTATUS_BIN=$(command -v sestatus 2>/dev/null)
    if [[ -n "${SESTATUS_BIN}" ]]
    then
        IS_ENFORCING=$(${SESTATUS_BIN} | grep -c "Current mode.*enforcing" 2>/dev/null)
        if (( IS_ENFORCING > 0 ))
        then
            SEMANAGE_BIN=$(command -v semanage 2>/dev/null)
            if [[ -n "${SEMANAGE_BIN}" ]]
            then
                ${SEMANAGE_BIN} fcontext -a -t var_log_t "${HC_VAR_DIR}(/check_health\.sh\.log.*)?"
                echo "INFO: SELinux fcontexts configured for log rotation"
                if [[ -d ${HC_VAR_DIR} ]]
                then
                    RESTORECON_BIN=$(command -v restorecon 2>/dev/null)
                    if [[ -n "${RESTORECON_BIN}" ]]
                    then
                        ${RESTORECON_BIN} -Frv ${HC_VAR_DIR}
                        echo "INFO: SELinux fcontexts set on ${HC_VAR_DIR} for log rotation"
                    else
                        echo "WARN: SELinux is set to 'enforcing' but could not found 'restorecon' to set fcontexts for log rotation"
                    fi
                fi
            else
                echo "WARN: SELinux is set to 'enforcing' but could not found 'semanage' to set fcontexts for log rotation"
            fi
        fi
    fi
    echo "INFO: finished post-install script"
}

# -- post-remove --
post_remove() {
    # ------------------------- CONFIGURATION starts here -------------------------
    # location of the HC scripts
    HC_DIR="/opt/hc"
    # location of the HC configuration files
    HC_ETC_DIR="/etc/opt/hc"
    # location of the HC log/state files
    HC_VAR_DIR="/var/opt/hc"
    # ------------------------- CONFIGURATION ends here ---------------------------
    echo "INFO: starting post-uninstall script ..."
    if [[ -d ${HC_DIR} ]]
    then
        rm -rf ${HC_DIR} 2>/dev/null
        (( $? == 0 )) || echo "WARN: failed to remove ${HC_DIR}"
    fi
    if [[ -d ${HC_ETC_DIR} ]]
    then
        rm -rf ${HC_ETC_DIR}/*.dist >/dev/null
        (( $? == 0 )) || echo "WARN: could not remove .dist files in directory ${HC_ETC_DIR}"
    fi
    if [[ -d ${HC_ETC_DIR}/core ]]
    then
        rm -rf ${HC_ETC_DIR}/core/*.dist >/dev/null
        (( $? == 0 )) || echo "WARN: could not remove .dist files in directory ${HC_ETC_DIR}/core"
    fi
    if [[ -d ${HC_ETC_DIR}/core/providers ]]
    then
        rm -rf ${HC_ETC_DIR}/core/providers/*.dist >/dev/null
        (( $? == 0 )) || echo "WARN: could not remove .dist files in directory ${HC_ETC_DIR}/core/providers"
    fi
    if [[ -d ${HC_VAR_DIR} ]]
    then
        rm -rf ${HC_VAR_DIR}/state/temporary 2>/dev/null
        (( $? == 0 )) || echo "WARN: failed to remove ${HC_VAR_DIR}/state/temporary"
    fi
    echo "INFO: finished post-uninstall script"
}
