#!/bin/bash

set -e

# shellcheck disable=SC1091,SC1090
. /etc/eole/gposcript.conf

# shellcheck disable=SC1091,SC1090
. /etc/eole/samba4-vars.conf

# shellcheck disable=SC1091,SC1090
. /usr/lib/eole/samba4.sh

if [ "${AD_SERVER_ROLE}" != "controleur de domaine" ]
then
    echo "Pas de GPO sur les serveurs membres"
    exit 0
fi

if [ "${AD_ADDITIONAL_DC}" != "non" ]
then
    echo "Cette commande ne doit pas être éxecutée sur les Dc Secondaires."
    exit 0
fi

GPO_ADMIN="gpo-${AD_HOST_NAME}"
GPO_ADMIN_DN="${GPO_ADMIN}@${AD_REALM^^}"
GPO_ADMIN_PWD_FILE=$(get_passwordfile_for_account "${GPO_ADMIN}")
GPO_ADMIN_KEYTAB_FILE=$(get_keytabfile_for_account "${GPO_ADMIN}")

if ! kinit "${GPO_ADMIN_DN}" -k -t "${GPO_ADMIN_KEYTAB_FILE}"
then
    echo "Impossible de créer une session kerberos."
    exit 1
fi

CDU=0
if [ "$GPOSCRIPT" -eq 0 ]; then
    echo "Import scripts and Registry.xml files in GPO (Krb)"

    # l'utilisation de l'argument -H ldap://${AD_HOST_NAME}.${AD_REALM} force l'usage de ce DC pour toutes les opérations. Sinon sur un cluster, 
    # chaque opération peut être envoyée sur n'importe quel DC...
    if ! gpo-tool importation import_eole_script --container "$BASEDN" -k 1 -H "ldap://${AD_HOST_NAME}.${AD_REALM}" -d 1 < <(cat ${GPO_ADMIN_PWD_FILE})
    then
        echo "Update 'eole_script' Erreur"
        CDU=1
    else
        echo "Update OK"
    fi
else
    if ! gpo-tool importation delete_by_name eole_script -k 1 -H "ldap://${AD_HOST_NAME}.${AD_REALM}" -d 1 < <(cat ${GPO_ADMIN_PWD_FILE})
    then
        echo "Delete 'eole_script' Erreur"
        # j'ignore si elle a déjà été supprimée !
    else
        echo "Delete 'eole_script' OK"
    fi
fi

# destroy kerberos ticket
kdestroy || true

exit $CDU