#!/bin/bash
################################################################
## Procédure d'information PSIN
################################################################


################################################################
# utilisation des librairies Eole
################################################################
if [ -f /usr/lib/eole/ihm.sh ]
then
 . /usr/lib/eole/ihm.sh
else
 echo "fichier de fonctions Eole non trouvé"
 ecritLog $script "ERR" "EOLE" "fichier /usr/lib/eole/ihm.sh non trouvé"
 exit 1
fi

################################################################
# Déclaration des variables
################################################################

scripts=/root/scripts
fichierEnvoi=mailTemp
fichierEnvoye=mailEnvoye
fichierErreur=supervision.err

sujet1="Nouveau serveur en exploitation et supervision PSIN"
sujet2="Modification d'un serveur en supervision PSIN"
sujet3="Suppression d'un serveur en supervision PSIN"
sujet4="Nouveau serveur en exploitation et supervision PSIN - Attention : serveur geomatique"
sujet5="Nouveau serveur geomatique à ajouter aux dérogations VPN"

## utilisation de variables du dictionnaire

etab=$(CreoleGet numero_etab)
serveur=$(CreoleGet nom_machine)
eole_release=$(CreoleGet eole_release)
module_type=$(CreoleGet module_type)
adresseIP=$(CreoleGet adresse_ip_eth0)
variante=$(CreoleGet variante_type)

smtpServeur=$(CreoleGet smtp_relais)
emetteurEmail=$(CreoleGet smtp_sender)
destinataireEmail=$(CreoleGet psin_email)
destinataireEmail2=$(CreoleGet pne_email)
destinataireEmail3=$(CreoleGet dsgc_email)

activer_proxy_client=$(CreoleGet activer_proxy_client "non")
proxy_client_adresse=$(CreoleGet proxy_client_adresse "127.0.0.1")
proxy_client_port=$(CreoleGet proxy_client_porti 8080)

activer_supervision_psin=$(CreoleGet activer_supervision_psin)


################################################################
# Fonction de vérification de l'envoi du mail
test_envoi()
{
	if [ $envoiMail != 0 ]
	then
        echo $(date) >> $scripts/$fichierErreur
		echo "probleme de mail" >> $scripts/$fichierErreur
		EchoRouge "Erreur d'envoi de mail au Psin !"
		if [ ! -f "$scripts/$fichierEnvoi.err" ]
		then
			mv $scripts/$fichierEnvoi $scripts/$fichierEnvoi.err
		fi
		EchoRouge "Si le problème persiste au prochain reconfigure, merci d'alerter le Psin."
	else
		EchoVert "Mail d'information Psin envoye"
		EchoVert "Votre demande sera prise en compte dans les 2 jours."
		EchoVert "Merci de contacter le Psin dans le cas contraire."
		if [ "$activer_supervision_psin" == "non" ]
		then
            rm -f $scripts/$fichierEnvoi
            rm -f $scripts/$fichierEnvoye
        else
			mv $scripts/$fichierEnvoi $scripts/$fichierEnvoye
		fi
	fi
}

################################################################
# utilisation éventuelle d'un proxy déclaré
if [ "$activer_proxy_client" == "oui" ];then
        export http_proxy=${http_proxy=http://$proxy_client_adresse:$proxy_client_port}
fi
################################################################

################################################################
# procedure de bypass pour les machines en test ou pre prod
# en même temps :
# test si la machine a déjà été supervisée et ne l'est plus
# =>> dans ce cas on efface le fichier mailEnvoye
# et on envoie un mail au PSIN

if [ "$activer_supervision_psin" == "non" ]
   then
       if [ -f $scripts/$fichierEnvoye ]
       then
           # création du message et envoi au PSIN
           echo "RNE : $etab" > $scripts/$fichierEnvoi
           echo "Nom du serveur : $serveur" >> $scripts/$fichierEnvoi
           echo "Adresse IP : $adresseIP" >> $scripts/$fichierEnvoi
           enregistrement_zephir -c >> $scripts/$fichierEnvoi
           echo " " >> $scripts/$fichierEnvoi
           echo "----------------- Supervision PSIN -----------------" >> $scripts/$scriptsSA/$fichierEnvoi
           echo "Merci d'arreter la Supervision PSIN sur ce serveur" >> $scripts/$scriptsSA/$fichierEnvoi
           echo " " >> $scripts/$scriptsSA/$fichierEnvoi
           echo "-----------------------------------------------" >> $scripts/$scriptsSA/$fichierEnvoi
           echo " " >> $scripts/$scriptsSA/$fichierEnvoi
           message=$scripts/$fichierEnvoi
           envoiMail=$($scripts/cnxsmtp "$smtpServeur" "$sujet3" "$emetteurEmail" "$destinataireEmail" "$message")
	       envoiMail=$?
           EchoOrange "***  $sujet3  ***"
           test_envoi
       fi
   exit 0
fi
################################################################

################################################################
# utilisation des librairies PNE
################################################################
if [ -x /root/scripts/services_modules.sh ]
then
. /root/scripts/services_modules.sh
else
	echo 'Erreur : Fonctions de modules non trouvées'
	exit 1
fi
################################################################

################################################################
## lancement de l'enregistrement
################################################################

###################################
## contruction du mail

#echo $(date) > $scripts/$fichierEnvoi

# exécution des services communs aux modules /  variantes
services_commun

# gestion des modules
case "$module_type" in
eCDL)
	services_ecdl
	;;

eSBL)
	services_esbl
	;;

seth)
	services_seth
	;;

amon)
	services_essl
	;;

zephir)
	services_zephir
	;;
eolebase)
	services_eolebase
	;;
esac


## fin de la construction du mail
###################################


## test si l'envoi n'a pas encore été fait
if [ ! -f $scripts/$fichierEnvoye ]
then

	################################################################
	## envoi du message
	################################################################
	message="$scripts/$fichierEnvoi"
	if [ "${variante_type}" == "geomatique" ]
	then
		# info PSIN
		envoiMail=$($scripts/cnxsmtp "$smtpServeur" "${sujet4}" "$emetteurEmail" "$destinataireEmail" "$message")
		envoiMail=$?
        	EchoOrange "***  $sujet4  ***"
        	test_envoi

		# info DSGC
		envoiMail=$($scripts/cnxsmtp "$smtpServeur" "${sujet5}" "$emetteurEmail" "$destinataireEmail3" "$message")
		envoiMail=$?
        	EchoOrange "***  $sujet5  ***"
        	test_envoi
	else
		envoiMail=$($scripts/cnxsmtp "$smtpServeur" "${sujet1}" "$emetteurEmail" "$destinataireEmail" "$message")
		envoiMail=$?
        	EchoOrange "***  $sujet1  ***"
        	test_envoi
	fi

	# on sort en 0 pour ne pas bloquer le reconfigure pour un mail
	exit 0
	################################################################
else
    ## on est dans le cas ou le mail a déjà été envoyé et que la supervision est activée
    ## donc on vérifie que quelque chose a changé ou pas sur le serveur
	message="$scripts/$fichierEnvoi"
	diffconf=$(diff $scripts/$fichierEnvoye $scripts/$scriptsSA/$fichierEnvoi)
	verification=$?

	if [ $verification != 0 ]
	then
	# différence de fichier => réexpedition
        # sans ajout dans le fichier mailEnvoye
        cp $scripts/$fichierEnvoi $scripts/ficMailTemp
        messageTemp="$scripts/ficMailTemp"
        echo "$diffconf" > $scripts/diffconfTemp
        sed -i '1d' $scripts/diffconfTemp
        sed -i '1i\\nModification(s) effectuee(s) :' $scripts/diffconfTemp
        sed -i 's/</Ancienne valeur :/g' $scripts/diffconfTemp
        sed -i 's/>/NOUVELLE VALEUR :/g' $scripts/diffconfTemp
        release=$(grep -R $eole_release /root/scripts/mailEnvoye)
        verifrelease=$?
	    if [ $verifrelease != 0 ]
        then
            echo "ATTENTION!!! Le serveur a migré vers la version $eole_release" >> $scripts/diffconfTemp
        fi
        cat $scripts/diffconfTemp >> $messageTemp
        rm -f $scripts/diffconfTemp
        envoiMail=$($scripts/cnxsmtp "$smtpServeur" "$sujet2" "$emetteurEmail" "$destinataireEmail" "$messageTemp")
        envoiMail=$?
        EchoOrange "***  $sujet2  ***"
        test_envoi
        rm -f $scripts/ficMailTemp
	fi
    rm -f $scripts/$fichierEnvoi
    exit 0
fi
