#!/bin/bash
. /usr/lib/eole/diagnose.sh

TestBaculaDaemon(){
    printf "Test de $1 :\n"
    if [ ! "$3" = "oui" ]; then
        Inactif "$1"
    else
        printf ".  %${len_pf}s => " "$1"
        pass=$(CreoleGet bacula.monitor.bacula_mon_password)
        /usr/lib/nagios/plugins/check_bacula -H localhost -D $2 -K "$pass" -M bacula-$(CreoleGet nom_machine)-mon > /dev/null 2>&1
        if [ $? -eq 0 ]; then
           EchoVert "Ok"
           printf ".  %${len_pf}s => " "fichier de configuration"
           bacula-$2 -t -c /etc/bacula/bacula-$2.conf > /dev/null 2>&1
           ret=$?
           if [ $ret -eq 0 ]
           then
               EchoVert "Ok"
           else
               EchoRouge "Erreur"
               return 1
           fi
           return 0
        else
           EchoRouge "Erreur"
           return 1
        fi
    fi
}
EchoGras "*** Sauvegarde"
TestBaculaDaemon "Bacula Director" dir "$(CreoleGet activer_bacula_dir)"
TestBaculaDaemon "Bacula Client" fd "$(CreoleGet activer_bacula_dir)"
TestBaculaDaemon "Bacula Storage" sd "$(CreoleGet activer_bacula_sd)"

if [ "$(CreoleGet activer_bacula_sd)" = 'oui' ];then
    if [ "$(CreoleGet bacula.support.support_type)" = 'none' ];then
        NoConfig "Montage du support"
    else
        printf ".  %${len_pf}s => " "Montage du support"
        /usr/share/eole/sbin/baculamount.py -t -f > /dev/null 2>&1
        if [ $? = 0 ]; then
            EchoVert "Ok"
        else
            EchoRouge "Erreur"
        fi
    fi
fi

if [ "$(CreoleGet activer_bacula_dir)" = "oui" ]; then
    # utilisation des fonctions de pyeole/bacula.py
    BACULA_RAPPORT_OK="1"
    BACULA_RAPPORT_ERR="-1"
    #BACULA_RAPPORT_UNKNOWN="0"
    printf "Statut des sauvegardes :\n"
    eval `/usr/bin/env python -c 'from pyeole.bacula import bacula_rapport_load; rap = bacula_rapport_load("cronpre"); print "RAP[0]=\"%s\";RAP[1]=\"%s\";" %(rap[0], rap[1])'`
    printf ". %${len_pf}s => " "préparation sauvegarde"
    if [ "${RAP[0]}" = $BACULA_RAPPORT_OK ]; then
        EchoVert "Ok : ${RAP[1]}"
    elif [ "${RAP[0]}" = $BACULA_RAPPORT_ERR ]; then
        EchoRouge "Erreur : ${RAP[1]}"
    else
        EchoOrange "Inconnu : ${RAP[1]}"
    fi
    eval `/usr/bin/env python -c 'from pyeole.bacula import bacula_rapport_load; rap = bacula_rapport_load("sauvegarde"); print "RAP[0]=\"%s\";RAP[1]=\"%s\";" %(rap[0], rap[1])'`
    printf ". %${len_pf}s => " "sauvegarde principale"
    if [ "${RAP[0]}" = $BACULA_RAPPORT_OK ]; then
        EchoVert "Ok : ${RAP[1]}"
    elif [ "${RAP[0]}" = $BACULA_RAPPORT_ERR ]; then
        EchoRouge "Erreur : ${RAP[1]}"
    else
        EchoOrange "Inconnu : ${RAP[1]}"
    fi
    eval `/usr/bin/env python -c 'from pyeole.bacula import bacula_rapport_load; rap = bacula_rapport_load("catalogue"); print "RAP[0]=\"%s\";RAP[1]=\"%s\";" %(rap[0], rap[1])'`
    printf ". %${len_pf}s => " "sauvegarde catalogue"
    if [ "${RAP[0]}" = $BACULA_RAPPORT_OK ]; then
        EchoVert "Ok : ${RAP[1]}"
    elif [ "${RAP[0]}" = $BACULA_RAPPORT_ERR ]; then
        EchoRouge "Erreur : ${RAP[1]}"
    else
        EchoOrange "Inconnu : ${RAP[1]}"
    fi
    eval `/usr/bin/env python -c 'from pyeole.bacula import bacula_rapport_load; rap = bacula_rapport_load("cronpost"); print "RAP[0]=\"%s\";RAP[1]=\"%s\";" %(rap[0], rap[1])'`
    printf ". %${len_pf}s => " "exécution cron par bacula"
    if [ "${RAP[0]}" = $BACULA_RAPPORT_OK ]; then
        EchoVert "Ok : ${RAP[1]}"
    elif [ "${RAP[0]}" = $BACULA_RAPPORT_ERR ]; then
        EchoRouge "Erreur : ${RAP[1]}"
    else
        EchoOrange "Inconnu : ${RAP[1]}"
    fi
echo
fi
exit 0
