#!/bin/bash

# Exportamos las variables para saber cual es la IPCache Actual
. /etc/default/vx-dga-variables/vx-dga-variables-general.conf

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


FICH_TMP="/tmp/vx-info-global-$(vx-usuario-grafico)"
echo "" >"${FICH_TMP}"

# CID:
CID=""
if [ -f "/tmp/.cid.html" ]; then
    CID="$(cat "/tmp/.cid.html" |
        grep -E "<h1>.*</h1>" |
        sed -e "s#\(<h1>\)\(.*\)\(</h1>\)#\2#g" |
        tr -d '[:space:]')"
fi
if ((${#CID} == 0)) && [ -f "/usr/bin/migasfree-cid" ]; then
    CID="$(migasfree-cid)"
fi

NOMBRE="${HOSTNAME}"
echo -e "Información asociada al equipo Vitalinux: CID (<b><tt><span foreground='blue'>${CID}</span></tt></b>) y HostName (<b><tt><span foreground='blue'>${NOMBRE}</span></tt></b>)" >>"${FICH_TMP}"
DISTRO=$(lsb_release -a 2>/dev/null | grep "Description:" | tr -s " " " " | cut -d":" -f2)
ARQUIDISTRO=$(getconf LONG_BIT)
echo -e "Versión Ubuntu: <b><tt><span foreground='blue'>${DISTRO} (${ARQUIDISTRO}-bits)</span></tt></b>" >>"${FICH_TMP}"

# Información de la versión de la ISO instalada:
FICHISODATE="/usr/share/vitalinux/vx-iso-date/vx-iso-date.conf"
if [[ -f "${FICHISODATE}" ]]; then
    VERSIONISO="$(crudini --get "${FICHISODATE}" "ISO" "DATEISO")"
    echo -e "Versión ISO instalada: <b><tt><span foreground='blue'>${VERSIONISO}</span></tt></b>" >>"${FICH_TMP}"
fi

KERNEL="$(uname -s) $(uname -r)"
echo -e "Kernel: <b><tt><span foreground='blue'>${KERNEL}</span></tt></b>" >>"${FICH_TMP}"
# Para saber las arquitecturas soportadas rescatamos la segunda línea de la salida de lscpu:
#ARQUIHARDWARE="$(lscpu | grep 'CPUs' | cut -d':' -f2)"
ARQUIHARDWARE="$(vx-trim "$(lscpu | awk 'NR==2' | cut -d':' -f2)")"
echo -e "Arquitecturas de Vitalinux soportadas por el Hardware: <b><tt><span foreground='blue'>${ARQUIHARDWARE}</span></tt></b>" >>"${FICH_TMP}"
# Averiguamos la versión de OpenGL (si hay entorno gráfico):
vx-detectar_gui &&
    VEROPENGL="$(glxinfo | grep "OpenGL version" | awk -F":" '{ print $2 }')" ||
    VEROPENGL="Sin Entorno Gráfico"
echo -e "Versión de OpenGL: <b><tt><span foreground='blue'>${VEROPENGL}</span></tt></b>" >>"${FICH_TMP}"

# Información sobre el tipo de BIOS del equipo, BIOS Legacy o UEFI, y el estado del Secure Boot:
[[ -d "/sys/firmware/efi" ]] && TIPOBIOS="BIOS UEFI" || TIPOBIOS="BIOS Legacy"
TEXTO="Tipo de BIOS y Secure Boot: <b><tt><span foreground='blue'>${TIPOBIOS}</span></tt></b>"
if [[ "${TIPOBIOS}" == "BIOS UEFI" ]] ; then
    vx-secure-boot-check-disable && \
        SECUREBOOT_ESTADO="Deshabilitado" || \
        SECUREBOOT_ESTADO="Habilitado"
    TEXTO+=" [Secure Boot: <b><tt><span foreground='blue'>${SECUREBOOT_ESTADO}</span></tt></b>]"
else
    TEXTO+=" [Sin Secure Boot]"
fi
echo -e "${TEXTO}" >>"${FICH_TMP}"

# Información del Usuario de inicio de sesión automática:
FICH="/etc/lightdm/lightdm.conf"
if [ -f "${FICH}" ] &&
    grep -q "^autologin-user=" "${FICH}"; then
    USUINI="$(grep '^autologin-user=' "${FICH}" | cut -d "=" -f2)"
    echo -e "Usuario Inicio Sesión Automática: <b><tt><span foreground='blue'>${USUINI}</span></tt></b>" >>"${FICH_TMP}"
fi

# Información Epoptes:
EPOPTES="false"
if dpkg -l | grep -q "vx-dga-l-epoptes-servidor"; then
    EPOPTES="true"
    TIPOEPOPTES="Servidor - Controlador de Equipos de Aula"
fi
if dpkg -l | grep -q "vx-dga-l-epoptes-cliente"; then
    EPOPTES="true"
    FICHCONFEPOPTES="/etc/default/epoptes-client"
    SERVIDOR_EPOPTES="$(grep "SERVER=" "${FICHCONFEPOPTES}" | awk -F "SERVER=" '{print $2}')"
    TIPOEPOPTES="Cliente controlado por el Servidor de Aula ${SERVIDOR_EPOPTES}"
fi
! "${EPOPTES}" &&
    TIPOEPOPTES="Sin Configurar"
echo -e "Epoptes: <b><tt><span foreground='blue'>${TIPOEPOPTES}</span></tt></b>" >>"${FICH_TMP}"

# Información Servicios: congelación y carpetas compartidas
SERVICIOS="false"
TIPOSERVICIOS=""
if dpkg -l | grep -q "vx-dga-l-carpetas-compartidas-cliente"; then
    SERVICIOS="true"
    SERVICIO="Carpetas compartidas"
    [[ -z "${TIPOSERVICIOS}" ]] &&
        TIPOSERVICIOS+="${SERVICIO}" ||
        TIPOSERVICIOS+="${TIPOSERVICIOS} · ${SERVICIO}"
fi
if dpkg -l | grep -q "vx-dga-l-congelar-escritorio"; then
    SERVICIOS="true"
    SERVICIO="Escritorio Congelado"
    [[ -z "${TIPOSERVICIOS}" ]] &&
        TIPOSERVICIOS+="${SERVICIO}" ||
        TIPOSERVICIOS+="${TIPOSERVICIOS} · ${SERVICIO}"
fi
if dpkg -l | grep -q "vx-dga-l-congelar-directorios"; then
    SERVICIOS="true"
    SERVICIO="Perfil Congelado"
    [[ -z "${TIPOSERVICIOS}" ]] &&
        TIPOSERVICIOS+="${SERVICIO}" ||
        TIPOSERVICIOS+="${TIPOSERVICIOS} · ${SERVICIO}"
fi
! "${SERVICIOS}" &&
    TIPOSERVICIOS="Sin Configurar Ninguno"
echo -e "Servicios: <b><tt><span foreground='blue'>${TIPOSERVICIOS}</span></tt></b>" >>"${FICH_TMP}"

# Etiquetas Migasfree:
ETIQUETAS="$(sudo vx-migasfree-tags -g)"
echo -e "\nEtiquetas Migasfree asignadas:<b><tt><span foreground='blue'>" >>"${FICH_TMP}"
if ((${#ETIQUETAS} == 0)) || [[ "${ETIQUETAS}" == "NUL-NULL" ]]; then
    echo " -- Ninguna -- " >>"${FICH_TMP}"
else
    echo ${ETIQUETAS} | tr -s " " "\n" | grep -n "-" | sed -e "s/:/) /g" | sed -e "s/.*/  &/g" >>"${FICH_TMP}"
fi
echo -e "</span></tt></b>" >>"${FICH_TMP}"

echo -e "Información del direccionamiento IP:" >>"${FICH_TMP}"
for TARJETA in $(nmcli -t -f device dev | grep -v "^lo$"); do
    MODO="$(ip -4 addr show "${TARJETA}" | grep inet | grep -q "dynamic" && echo "Dinámica" || echo "Estática")"
    IP=$(vx-trim $(nmcli dev show "${TARJETA}" | grep IP4.ADDRESS | cut -d":" -f2))
    MAC=$(vx-trim $(nmcli dev show "${TARJETA}" | grep GENERAL.HWADDR | awk -F": " '{ print $2 }'))
    if test "$IP" != "" -a "$MAC" != ""; then
        INFODEV="  =>  Interfaz <b><tt><span foreground='blue'>$TARJETA</span></tt></b>: "
        INFODEV="${INFODEV}<b><tt><span foreground='blue'>$IP</span></tt></b> [IP ${MODO}] - "
        INFODEV="${INFODEV}<b><tt><span foreground='blue'>$MAC</span></tt></b> [MAC]"
        echo "${INFODEV}" >>"${FICH_TMP}"
    fi
done

GATEWAY=$(route -n | grep UG | tr -s " " " " | cut -d" " -f2)
#echo "  =>  Puerta de Enlace: <b><tt><span foreground='blue'>$GATEWAY</span></tt></b>" >> "${FICH_TMP}"
DNS="$(nmcli device show | grep ^IP4.DNS | tr -s " " " " | cut -d" " -f2 | tr -s "\n" " ")"
#echo "  =>  DNSs: <b><tt><span foreground='blue'>${DNS}</span></tt></b>" >> "${FICH_TMP}"
IPPUBLICA=$(wget http://ipinfo.io/ip -qO - 2>/dev/null)
#echo "  =>  IP Pública Router: <b><tt><span foreground='blue'>$IPPUBLICA</span></tt></b>" >> "${FICH_TMP}"
echo "  =>  Puerta de Enlace|DNSs|IP Pública Router: <b><tt><span foreground='blue'>${GATEWAY}|${DNS}|${IPPUBLICA}</span></tt></b>" >>"${FICH_TMP}"

echo "" >>"${FICH_TMP}"

# IPCACHE
echo "  =>  Servidor Caché: <b><tt><span foreground='blue'>$IPCACHE</span></tt></b>" >>"${FICH_TMP}"

if [[ -f /etc/migasfree.conf ]] && (grep ^Server /etc/migasfree.conf &>/dev/null); then
    SERVIDORMIGASFREE="$(grep "^Server" /etc/migasfree.conf | cut -d'=' -f2)"
    echo "  =>  Servidor Migasfree: <b><tt><span foreground='blue'>$SERVIDORMIGASFREE</span></tt></b>" >>"${FICH_TMP}"
    # La frecuencia puede ser: 0:daily_every_sessions|7:daily|1:weekly
    FICHCONFCRONMIGASFREE="/etc/default/vx-dga-variables/vx-dga-l-migasfree-launcher-cron.conf"
    if [[ -f "${FICHCONFCRONMIGASFREE}" ]]; then
        FRECUENCIA="$(crudini --get "${FICHCONFCRONMIGASFREE}" "Configuration" "FRECUENCY")"
        case "${FRECUENCIA}" in
        "0") FRECUENCIAMIGASFREE="Todos los inicios de sesión" ;;
        "1") FRECUENCIAMIGASFREE="Una vez a la semana" ;;
        "7") FRECUENCIAMIGASFREE="Una vez al día" ;;
        esac
        echo "  =>  Frecuencia Actualización Migasfree: <b><tt><span foreground='blue'>${FRECUENCIAMIGASFREE}</span></tt></b>" >>"${FICH_TMP}"
    fi
fi

echo "" >>"${FICH_TMP}"

LISTAIMPRESORAS=($(lpstat -v | awk -F "dispositivo para" '{ print $2 }' | cut -d":" -f1 | tr -s "\n" " "))
if ((${#LISTAIMPRESORAS[*]} == 0)); then
    echo "  =>  Lista de Impresoras: <b><tt><span foreground='blue'>NINGUNA IMPRESORA CONFIGURADA</span></tt></b>" >>"${FICH_TMP}"
else
    echo "  =>  Lista de Impresoras:" >>"${FICH_TMP}"
fi
CONTADOR=1
for IMPRESORA in "${LISTAIMPRESORAS[@]}"; do
    echo "\t\t(${CONTADOR}) <b><tt><span foreground='blue'>${IMPRESORA}</span></tt></b>" >>"${FICH_TMP}"
    ((CONTADOR++))
done

if vx-detectar_gui && [[ -z "${1}" ]]; then
    yad --title "Información Global de Vitalinux" \
        --center \
        --image preferences-system-network \
        --width 700 --height 450 \
        --fixed \
        --window-icon "vitalinux" \
        --text \
        "$(cat "${FICH_TMP}") \n" \
        --button="Cerrar Ventana":0
else
    # Mostramos la información prescindiendo del etiquetado de formato:
    sed -e 's/<[^>]*>//g' "${FICH_TMP}"
fi

# route -n | grep -v ^Tabla | yad --title "Información de Parámetros de Red" \
# --center \
# --image preferences-system-network \
# --width 700 --height 450 \
# --window-icon Vitalinux \
# --text \
# "$(cat "${FICH_TMP}") \n\n  Tabla de Enrutamiento del Equipo: " \
# --text-info --tail --button="Cerrar Ventana":0
