#!/bin/bash
# Ultima modificación: [arturo@2020-4-1]
# Proyecto Software Libre DGA

EJECUTOR="$(whoami)"

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 1) Preparamos la auditoria del servicio:
LOG="vx-regenerar-entorno-escritorio.log"
vx-log_xsession -o "${LOG}"

# Regeneramos el entorno de escritorio de los usuarios:
# 2.1) Si no se pasan parámetros y lo llama el usuario root se regeneran todos los usuarios gráficos
# 2.2) Si no se pasan parámetros y no lo llama el usuario root se regenera la del usuario gráfico actual
# 2.3) Si se le pasan ususarios como parámetros se regeneran únicamente los de esos usuarios
# if [[ ! -z "${1}" && "${EJECUTOR}" == "root" ]] ; then
#     LISTA_USUARIOS=("${@}")
#     elif [[ "${EJECUTOR}" == "root" ]] ; then
#     LISTA_USUARIOS=($(vx-usuarios-graficos))
# else
#     LISTA_USUARIOS=("${EJECUTOR}")
# fi

# Los parámetros recibidos para determinar la lista de usuarios afectados puede ser:
# 1) -ug => devolvería el usuario gráfico actual
# 2) -u usu1,usu2,usu3,... => devolvería la lista de que usuarios indicados son reales
# 3) -g grupo1,grupo2,... => devolvería la lista de que usuarios forman parte de esos grupos
# 4) usu1 usu2 usu3 ... => devolvería la lista de usuarios indicados que son reales
# 5.1) [sin parámetros] => vx-obtener_lista_usuarios devolvería la lista de todos los usuarios gráficos si el ejecutor es root, o el usuario que ejecuta si no es root
# 5.2) [sin parámetros] => Para evitar la lista completa de todos los usuarios, si el ejecutor es root hacemos uso de vx-funcs-users vx-lista-usuarios-iniciado-sesion
# [[ "${EJECUTOR}" == "root" && -z "${1}" ]] && \
# LISTA_USUARIOS=($(vx-funcs-users vx-lista-usuarios-iniciado-sesion)) || \
# LISTA_USUARIOS=($(vx-funcs-users vx-obtener_lista_usuarios "${@}"))
declare -a LISTA_USUARIOS
# Comprobamos si esta instalado el paquete vx-dga-l-congelar-escritorio, el cual guarda en /tmp/vx-lista-usuarios-iniciado-sesion los usuarios que han iniciado sesión gráfica:
FICH_LISTA_USUARIOS_INICIO_SESION="/tmp/vx-lista-usuarios-iniciado-sesion"
[[ "${EJECUTOR}" == "root" && -z "${1}" && -f "${FICH_LISTA_USUARIOS_INICIO_SESION}" ]] &&
    LISTA_USUARIOS=($(cat "${FICH_LISTA_USUARIOS_INICIO_SESION}"))
((${#LISTA_USUARIOS[@]} == 0)) && LISTA_USUARIOS=($(vx-funcs-users vx-obtener_lista_usuarios "${@}"))

TEXTO="Regeneración Entornos de Escritorio: ${LISTA_USUARIOS[*]}"
vx-echo_log_titulo1 "SRV-CONGELACION-ESCRITORIO" "${TEXTO}"

# 0) Comenzamos regenerando el contenido del Escritorio
for USUARIO in "${LISTA_USUARIOS[@]}"; do
    # Comprobamos que el usuario existe y cual es su HOME:
    # vx-funcs-users vx-check_exit_users "${USU}" && \
    # HOMEUSUARIO="$(vx-home-usuario-grafico "${USUARIO}")" || \
    # continue
    HOMEUSUARIO="$(vx-home-usuario-grafico "${USUARIO}")"

    # 1) Reseteamos los ficheros del Escritorio/Desktop del usuario:
    vx-rsync-desktop-reset "${USUARIO}"

    # 2) Seguimos con la regeneración de los archivos de configuración del Entorno de Escritorio
    vx-resetear-entorno-escritorio-cli "${USUARIO}"
    # vx-eliminar-ficheros-conf-personales "${USUARIO}"
    vx-colorear_echo "azul" "## Fin Sincronización Escritorio: ${USUARIO} ##"
done

# 4) Regeneramos el tipo de sesión gráfica por defecto: Lubuntu
sudo vx-regenerar-xsession &&
    vx-colorear_echo "verde" "=> Se ha regenerado la Xsession" ||
    vx-colorear_echo "rojo" "=> Problemas para regenerar la Xsession"

# Mensaje de terminación:
vx-colorear_echo "azul" "=> Terminada regeneración Entornos de Escritorio: ${LISTA_USUARIOS[*]}"
vx-colorear_echo "azul" "=> Comprobar que todo esta Ok!!"

exit 0
