#!/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"
PARAMETROS=("fechaini=2021-09-15"
    "fechafin=null"
    "fechaset=null"
    "usuarios=2btotic,1btotic,4esotic,aula_esp")
COMANDO=""

# 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 "${PARAMETROS[@]}"; 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}" "${SECCION}" "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}" "${SECCION}" "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}" "${SECCION}" "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}" "${SECCION}" "fechaset" "${TODAY}" &&
    echo "=> Se han reseteado las passwords correctamente: ${LISTAUSU[*]}" &&
    exit 0
