#!/bin/bash

activer_ad=$(CreoleGet activer_ad)
if [ $activer_ad != 'oui' ];then
    exit 0
fi
. /usr/lib/eole/ihm.sh
ad_user=$(CreoleGet ad_user)
ad_domain=$(CreoleGet ad_domain)
ad_server=$(CreoleGet ad_server)
ad_address=$(CreoleGet ad_address)

sync=1
initkrb()
{
    DOMAIN=`echo $ad_domain | tr 'a-z' 'A-Z'`
    echo $1 | kinit $ad_user@$DOMAIN >/dev/null
    if [ "$?" == "0" ]; then
        net ads join -U $ad_user%$passwd -S $ad_server.$ad_domain
        if [ "$?" == "0" ]; then
            sync=0
        else
            echo "Ticket Kerberos valide, la jonction au serveur Samba a échoué"
            return 4
        fi
    else
        echo "Mauvais mot de passe administrateur du domaine"
        return 1
    fi
}

pwdfile=/root/.eolead
if [ "$1" == 'instance' ];then
    tcpcheck 3 $ad_address:88 > /dev/null
    if [ "$?" != "0" ]; then
        echo
        EchoRouge "Impossible de joindre le serveur Kerberos"
        echo
        exit 1
    fi
    for (( i=1; i<=3 ; i++ )); do
        echo
        EchoCyan "Intégration au domaine Active Directory"
        echo -n "Mot de passe de l'utilisateur $ad_user pour le domaine ${ad_domain^^} : "
        read -s passwd
        echo
        echo $passwd > $pwdfile
        initkrb $passwd
        case $? in
            0) break;;
            4) i=3;;
        esac
    done
    if [ $i -eq 4 ];then
        echo
        EchoRouge "Impossible d'effectuer l'intégration au domaine"
        echo
        exit 1
    fi
else
    tcpcheck 3 $ad_address:88 > /dev/null
    if [ "$?" != "0" ]; then
        EchoOrange "Serveur Kerberos impossible à joindre"
    elif [ -f $pwdfile ];then
        passwd=$(cat $pwdfile)
        klist &>/dev/null
        if [ $? -ne 0 ];then
            initkrb $passwd
            if [ $? -ne 0 ];then
                echo
                EchoRouge "Erreur de récupération du ticket Kerberos"
                echo "Il est nécessaire de relancer la procédure d'instanciation"
                echo
                exit 1
            fi
        fi
    else
        echo
        EchoRouge "Le mot de passe Active Directory n'est pas paramétré"
        echo "Il est nécessaire de relancer la procédure d'instanciation"
        echo
        exit 1
    fi
fi

# Mise à jour du mot de passe AD dans /etc/lsc/lsc.xml et smbldap_bind.conf
echo "Mise à jour du mot de passe dans les fichiers de configuration"
passwdrecode=$(echo $passwd | recode ascii..html)
sed "22c\      <password>$passwdrecode</password>" </etc/eole/lsc.xml >/etc/lsc/lsc.xml
sed -i "15c\adpassword = \"$passwd\";" /etc/smbldap-tools/smbldap_bind.conf

if [ $sync -eq 0 ];then
    echo
    EchoCyan "Synchronisation ldap"
    lsc -f /etc/lsc -s all -t1 | grep -v "perhaps the operation would have been completed$"
    echo
fi

exit 0
