#!/bin/bash
# lastact: arturo@2023-06-05
# desc: Creación de un anillo de claves en texto plano (plain text)

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

# 0) Comprobamos que el usuario que ejecuta el script es el root:
MENSAJE="Necesitas permisos de root para poder gestionar los anillos de claves de los usuarios del sistema"
vx-check_user_root "${MENSAJE}"

# 1) Preparamos la auditoria del script:
LOG="$(basename "${0}").log"
vx-log_xsession -o "${LOG}"

# 2) Preparamos la ayuda:
# Help-Begin: Descripción de la ayuda de la función:
AYUDA='Ayuda: Debe pasarse como parámetros:
    # 1) "add|del": indicamos si queremos añadir un anillo de claves en texto plano o eliminar su default
    # 2) "nombre-usuario": Como segundo parámetro, de forma opcional, se puede pasar el usuario afectado. En caso de no indicar valor se afectará al usuario gráfico.'
EJEMPLOS=("${0} \"del\"")
EJEMPLOS+=("${0} \"add\" \"docente\"")
EJEMPLOS+=("${0} \"del\" \"estudiante\"")
if vx-check_need_help "${1}" || [[ -z "${1}" ]]; then
    vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && exit 0
fi
# Help-End

function vx_keyring_add() {
    # USUARIO="${1}"
    [[ ! -d "${RINGDIR}" ]] &&
        sudo -u "${USUARIO}" mkdir -p "${RINGDIR}" &&
        chmod 0700 "${RINGDIR}"
    RINGDEFAULT="${RINGDIR}/default"
    [[ ! -f "${RINGDEFAULT}" ]] &&
        sudo -u "${USUARIO}" touch "${RINGDEFAULT}"
    cat >"${RINGDEFAULT}" <<EOF
vitalinux
EOF
    chmod 644 "${RINGDIR}/default" #&& chown "${USUARIO}" "${RINGDIR}"/default
    RINGVITALINUX="${RINGDIR}/vitalinux.keyring"
    if [[ ! -f "${RINGVITALINUX}" ]] ; then
        sudo -u "${USUARIO}" touch "${RINGVITALINUX}"
    cat >"${RINGVITALINUX}" <<EOF
[keyring]
display-name=vitalinux
ctime=1589221826
mtime=0
lock-on-idle=false
lock-after=false
EOF
    chmod 600 "${RINGVITALINUX}" #&& chown "${USUARIO}" "${RINGDIR}"/vitalinux.keyring
    fi
    echo "#> $(date): Se ha creado un anillo de claves en texto plano para $USUARIO"
}

function vx_keyring_del() {
    FICH="${RINGDIR}/default"
    [[ -f "${FICH}" ]] &&
        rm -f "${FICH}" &&
        echo "#> Eliminamos el fichero default del anillo de claves en texto plano: ${FICH}"
}

# Como primer parámetro recibimo la acción a realizar, como segundo el usuario al que queremos afectar:
getent passwd "${2}" >/dev/null 2>&1 &&
    USUARIO="${2}" ||
    USUARIO="$(vx-usuario-grafico)"
RINGDIR="$(vx-home-usuario-grafico "${USUARIO}")/.local/share/keyrings"

case "${1}" in
"del")
    vx_keyring_del
    ;;

"add")
    vx_keyring_add
    ;;

*)
    # Ayuda:
    vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && exit 1
    ;;
esac

exit 0
