#!/bin/bash
# lastact: nacho@2021-11-30;arturo@2020-11-23;arturo@2020-11-9
# desc: Resetear Passwords de usuarios

FICHINI="/etc/default/vx-dga-variables/vx-centro.conf.ini"
SECCION="ResetearPasswords"

# 0) En primer lugar comprobamos que existe el archivo INI y la sección ${SECCION}
# En caso de no existir creamos ambas cosas: fichero, sección y directivas correspondientes
# [${SECCION}]
# fechaini = 2020-11-23
# fechaset = null
# usuarios = 2btotic,1btotic,4esotic,aula_esp

function crear_fichini() {
    if ! crudini --get "${FICHINI}" "${SECCION}" > /dev/null 2>&1 ; then
        crudini --set "${FICHINI}" "${SECCION}" && \
        echo "=> Se ha creado la sección: ${SECCION}"
    else
        echo "=> Ya existe la sección: ${SECCION}"
    fi
    for PARAM in "fechaini=2021-09-15" \
    "fechaset=null" \
    "usuarios=2btotic,1btotic,4esotic,aula_esp" ; do
        CLAVE="${PARAM/=*/}"
        VALOR="${PARAM/*=/}"
        if ! VARLORINI="$(crudini --get "${FICHINI}" "${SECCION}" "${CLAVE}" 2> /dev/null)" ; then
            crudini --set "${FICHINI}" "${SECCION}" "${CLAVE}" "${VALOR}" && \
            echo "=> Se ha insertado ${CLAVE}:${VALOR}"
        else
            echo "=> Ya existen ${CLAVE}:${VARLORINI}"
        fi
    done
}

[[ ! -f "${FICHINI}" ]] && \
echo "=> No existe el archivo de variables de configuración de centro: ${FICHINI}" && \
echo "=> Vamos a crear: ${FICHINI}" && touch "${FICHINI}"
crear_fichini

# Hacemos cáculos con fechas como unix-timestamps (segundos desde 1.1.1970 0:0:0):
TODAY="$(date +%Y-%m-%d)"
TODAYMS="$(date -d "${TODAY}" "+%s")"
FECHAINI=$(crudini --get "${FICHINI}" "ResetearPasswords" "fechaini")
FECHAINIMS="$(date -d "${FECHAINI}" "+%s")"
[[ ${TODAYMS} -lt ${FECHAINIMS} ]] && \
echo "=> No ha llegado el día de ejecutar la acción resetear passwords: ${TODAY} < ${FECHAINI}" && \
exit 0

# Comprobamos si ya se ha realizado la acción comprobando fechaset:
FECHASET=$(crudini --get "${FICHINI}" "ResetearPasswords" "fechaset")
[[ "${FECHASET}" != "null" ]] && \
echo "=> Ya se ejecutó la acción de resetear passwords: ${FECHASET}" && \
exit 0

# Obtenemos la lista de usuarios afectados por el Reset Password:
LISTAUSU=( $(crudini --get "${FICHINI}" "ResetearPasswords" "usuarios" | tr -s "," " ") )
for USU in "${LISTAUSU[@]}" UsuTech{1..25} ; do
    vx-funcs-users vx-modificar_password "${USU}" "alumno" && \
    echo "=> Se ha impuesto la password de ${USU}:alumno"
    getent passwd "${USU}" &> /dev/null && \
    chage -d 0 "${USU}" && \
    echo "=> Se ha reseteado la password: ${USU}"
done

# Asignamos fechaset para indicar que se ha ejecutado la acción:
crudini --set "${FICHINI}" "ResetearPasswords" "fechaset" "${TODAY}" && \
echo "=> Se han reseteado las passwords correctamente: ${LISTAUSU[*]}" && \
exit 0