#!/bin/bash

#///////////////////////////////////////////    Heure GMT   \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

# on recherche la zone GMT installé                : timedatectl
# on récupère la quatrième ligne                     : sed -n 4p
# on remplace T et tout ce qu'il y a avant par T    : sed 's/\s*T/T/g'
HR=`timedatectl | sed -n 4p | sed 's/\s*T/T/g'`

#************************   demande de changement   ************************
if whiptail   --title "Changement de l'heure GMT" \
                --backtitle "Paramétrage du Raspberry pi" \
                --yesno "La zone GMT actuelle est :\n\n ${HR} \n\nVoulez vous la changer en Europe/Paris ?" \
                --yes-button "oui" \
                --no-button "non" \
                --separate-output 12 70 )
then    # si on répond oui
    # on applique le changement
    timedatectl set-timezone Europe/Paris >/dev/null
    # on recherche la nouvelle zone GMT installé           : timedatectl
    # on récupère la quatrième ligne                     : sed -n 4p
    # on remplace T et tout ce qu'il y a avant par T    : sed 's/\s*T/T/g'
    NHR=`timedatectl | sed -n 4p | sed 's/\s*T/T/g'`
    # on affiche l'info du changement
    whiptail    --title "Changement de l'heure GMT" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement de l'heure GMT effectué : \n\n ${NHR}" 12 70
else    # si on répond non
    # on affiche l'info de l'annulation
    whiptail    --title "Changement de l'heure GMT" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement de l'heure GMT annulée !!!" 12 70
fi



#///////////////////////////////////////////    Langage     \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

#************************   recherche du langage installé  ************************
for ((i=0i<=100i+=10))            # boucle for pour la barre de progression de 0 a 100 avec un pas de 10
do
    sleep 0.1                         # temps entre chaque boucle
    echo $i                           # le pourcentage dans la barre
    if [[ $i == 50 ]]; then           # si on arrive a 50 %
        # on recherche la langue installée : locale-gen
        # on récupère la deuxième ligne : sed -n 2p
        # on supprime les espaces en début de ligne et récupère le 3eme argument : cut -d ' ' -f 3
        # on supprime les . en fin de fichier : sed 's/[.]*$//'
        langage=`locale-gen | sed -n 2p | cut -d ' ' -f 3 | sed 's/[.]*$//'`
    fi
# on lance la boucle dans une barre de progression
done > >( whiptail  --title "Changement de la langue du système" \
                    --gauge "Recherche du langage système en cours ...." 12 70 0 )

#************************   demande de changement   ************************
if (whiptail --title "Changement de la langue du système" \
             --backtitle "Paramétrage du Raspberry pi" \
             --yesno "Le langage actuel est :\n\n ${langage} \n\nVoulez vous le passer en français ?" \
             --yes-button "oui" \
             --no-button "non" \
             --separate-output 12 70) \
then    # si on répond oui
        # on dé commente la ligne fr_FR.UTF-8 du fichier /etc/locale.gen
    sed -"s/^# *\(fr_FR.UTF-8\)/\1/" /etc/locale.gen
        # on commente la ligne en_GB.UTF-8 UTF-8 du fichier /etc/locale.gen
    sed -"s/en_GB.UTF-8 UTF-8/# en_GB.UTF-8 UTF-8/g" /etc/locale.gen
        # on applique le changement :
    for ((i=0i<=100i+=10))            # boucle for pour la barre de progression de 0 a 100 avec un pas de 10
    do
        sleep 0.1                         # temps entre chaque boucle
        echo $i                           # le pourcentage dans la barre
        if [[ $i == 50 ]]; then           # si on arrive a 50 %
            # on remplace la ligne LANG=en_GB.UTF-8 en  LANG=fr_FR.UTF-8 du fichier /etc/default/locale
            sed -"s/LANG=en_GB.UTF-8/LANG=fr_FR.UTF-8/g" /etc/default/locale
            # on ajoute ces 2 lignes au fichier /etc/default/locale
            echo 'LANGUAGE=fr_FR.UTF-8' >> /etc/default/locale
            echo 'LC_ALL=fr_FR.UTF-8' >> /etc/default/locale
            # on recherche la nouvelle langue installée                              : locale-gen
            # on récupère la deuxième ligne                                          : sed -n 2p
            # on supprime les espaces en début de ligne et récupère le 3eme argument : cut -d ' ' -f 3
            # on supprime les . en fin de fichier                                    : sed 's/[.]*$//'
            Nlangage=`locale-gen | sed -n 2p | cut -d ' ' -f 3 | sed 's/[.]*$//'`
        fi
    # on lance la boucle dans une barre de progression
    done > >( whiptail  --title "Changement de la langue du système" \
                        --gauge "Modification du langage système en cours ...." 12 70 0)
    # on affiche l'info du changement
    whiptail    --title "Changement de la langue du système" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement de langage effectué !!! \n\n ${Nlangage}" 12 70
else    # si on répond non
    # on affiche l'info de l'annulation
    whiptail    --title "Changement de la langue du système"  \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement de langage annulée !!!" 12 70
fi



#///////////////////////////////////////////    mot de passe    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

#************************   demande de changement   ************************
if whiptail   --title "Changement du mot de passe du user pi" \
                --backtitle "Paramétrage du Raspberry pi" \
                --yesno "Voulez vous changer le mot de passe du user pi ?" \
                --yes-button "oui" \
                --no-button "non" \
                --separate-output 12 70 )
then    # si on répond oui
    # on demande un nouveau mot de passe
    MDP=$( whiptail --title "mot de passe" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --passwordbox "Choisissez un mot de passe :" 12 70 3>&1 1>&2 2>&3 )
    exitstatus=$?
    # si on valide OK
    if $exitstatus ]; then
        # on remplace le mot de passe par le nouveau
        echo "pi:${MDP}" sudo chpasswd >/dev/null
        # on affiche l'info du changement
        whiptail    --title "Changement du mot de passe du user pi" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --msgbox "Changement du mot de passe fait !!!" 12 70
    # si on valide Cancel
    else
        # on affiche l'info de l'annulation
        whiptail    --title "Changement du mot de passe du user pi" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --msgbox "Changement du mot de passe annulé !!!" 12 70
    fi
else    # si on répond non
    # on affiche l'info de l'annulation
    whiptail    --title "Changement du mot de passe du user pi" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement du mot de passe annulée !!!" 12 70
fi



#///////////////////////////////////////////    Hostname    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

# on récupère le hostname
HN=`cat /etc/hostname`

#************************   demande de changement   ************************
if (whiptail --title "Changement du Hostname" \
             --backtitle "Paramétrage du Raspberry pi" \
             --yesno "Le hostname actuel est :\n\n ${HN} \n\nVoulez vous le changer ?" \
             --yes-button "oui" \
             --no-button "non" \
             --separate-output 12 70) \
then    # si on répond oui
    # on demande un nouveau nom
    NHN=$(whiptail  --title "Changement du Hostname" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --inputbox "Choisissez un hostname :" 12 70 3>&1 1>&2 2>&3)
    exitstatus=$?
    # si on valide OK
    if $exitstatus ]; then
        # on remplace l'ancien hostname par le nouveau dans /etc/hostname et /etc/hosts
        sed -"s/${HN}/${NHN}/g" /etc/hostname /etc/hosts
        # on affiche l'info du changement
        whiptail    --title "Changement du Hostname" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --msgbox "Changement du hostname fait !!! \n\n ${NHN}" 12 70
    # si on valide Cancel
    else
        # on affiche l'info de l'annulation
        whiptail    --title "Changement du Hostname" \
                    --backtitle "Paramétrage du Raspberry pi" \
                    --msgbox "Changement du hostname annulé !!!" 12 70
    fi
else    # si on répond non
    # on affiche l'info de l'annulation
    whiptail    --title "Changement du Hostname" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Changement du hostname annulée !!!" 12 70
fi



#///////////////////////////////////////////    redémarrage       \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

#************************   demande de redémarrage ************************
if whiptail   --title "redémarrage du système" \
                --backtitle "Paramétrage du Raspberry pi" \
                --yesno "Le système doit être redémarré pour prendre en compte les changements. \n\nVoulez vous le faire maintenant ?" \
                --yes-button "oui" \
                --no-button "non" \
                --separate-output 12 70) \
then    # si on répond oui
    # on prévient du redémarrage
    whiptail    --title "redémarrage du système" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "Le système va redémarrer !!!" 12 70
    # on redémarre
    reboot
else    # si on répond non
    # on affiche l'info de l'annulation
    whiptail    --title "redémarrage du système" \
                --backtitle "Paramétrage du Raspberry pi" \
                --msgbox "redémarrage annulée !!!" 12 70
fi