#!/bin/bash
# Utilitaire de notification pour la mise à jour de leur poste
# Usage : scibian-update-notify

# Vérifie si le script s'exécute en root, sinon le rééxécute avec sudo
root_or_sudo() {
    if [ "$EUID" -ne 0 ]; then
        sudo "$(readlink --canonicalize "${BASH_SOURCE[0]}")" "$@"
        exit
    fi
}

display_last_update() {
    sLastUpdateMinutes=$(sciutils-update get_minutes_since_update --apt)
    # Conversion en jours et heures
    sLastUpdateHours=$((sLastUpdateMinutes / 60))
    sLastUpdateDays=$((sLastUpdateHours / 24))
    sLastUpdateHoursModulo=$((sLastUpdateHours % 24))
    message="Dernière mise à jour manuelle réalisée avec succès il y a : ${sLastUpdateDays} jours et ${sLastUpdateHoursModulo} heures"
}

root_or_sudo

display_last_update

user=${SUDO_USER:-""}
if [ -z "$user" ]; then
    # Récupère le dernier utilisateur ayant ouvert une session graphique (exclut les utilisateurs en SSH)
    seat=$(loginctl list-seats --no-legend | head -1)
    user=$(loginctl list-sessions --no-legend | grep $seat | awk '{print $3}' | grep --extended-regexp --invert-match "root|\-gdm$" | tail -1)
    # Autre option potentielle pour déterminer l'utilisateur actif
    # user=$(ps faux | grep $(ps $$ | tail -1 | awk '{ print $2 }') | head -1 | cut --delimiter " " --fields=1)
fi

user_id=$(id --user "$user")

if sciutils-networking is_edf_network > /dev/null 2>&1; then
    maj_encours=$(ps fax | grep --extended-regexp --ignore-case "apt|unattended|dpkg" | grep --extended-regexp --ignore-case --invert-match --count "grep|wait-for-signal")
    if [ "$maj_encours" -eq 0 ]; then
        apt update
        nbre_list=0
        nbre_list=$(apt --option "Apt::Cmd::Disable-Script-Warning=1" list --upgradable | wc --lines)
        nbre_paquet=$(apt --simulate upgrade 2> /dev/null | grep --count Inst)
        if [ "$nbre_paquet" -gt 0 ] && [ "$nbre_list" -gt 1 ]; then
            message=$message"\nIl y a actuellement $nbre_paquet paquet(s) en attente.\nIl vous est fortement conseillé d'exécuter scibian-update."
            message=$message"\nVoulez-vous exécuter scibian-update maintenant ?"
            XDG_RUNTIME_DIR=/run/user/$(id -u "$user") sudo --preserve-env --user "$user" zenity --question --text="$message" --ok-label="Oui" --cancel-label="Non" --ellipsize --timeout 60 DISPLAY=:0
            answer=$?
            if [ "$answer" -eq 0 ]; then
                XDG_RUNTIME_DIR=/run/user/$user_id sudo --user "$user" gtk-launch scibian-update.desktop
            fi
        fi
    fi
fi
