#!/bin/bash
## Το NoTails.. Tails Μενού στα Ελληνικά είναι ένα αρθρωτό (modular) Zenity
## σενάριο (script) ανοιχτού κώδικα (open source) για το Tails OS Live USB.
##
## Copyright (C) 2025  Rebelstreamers, version 1.0 από το gamelink.gr
##
## Το πρόγραμμα αυτό μεταφέρεται σε εσάς "AS IS" και χωρίς καμία υποχρέωση από 
## τον δημιουργό του και καλύπτεται απο την AGPLv3 GNU άδεια έκδοσης.

# set -x

# Αρχικοποίηση του NoTails..Tails script.στα Ελληνικά.
title2="2.Αφού Συνδεθούμε στο Tor"
echo -e '\033]2;'$title2'\007'
folder_name="NoTails..Tails-Files"

### ΑΥΤΟ ΕΙΝΑΙ ΤΟ ΜΟΝΟ ΣΕΝΑΡΙΟ ΠΟΥ ΤΟΝ ΕΛΕΓΧΟ ΕΚΔΟΣΗΣ ΤΟΝ ΘΕΛΕΙ ΠΡΙΝ ΤΙΣ ΡΥΘΜΙΣΕΙΣ
# Οι κοινές συναρτήσεις για όλα τα σενάρια είναι στο NT_Functions.sh
source "$HOME/Persistent/$folder_name/NT_Functions.sh"


# Αρχικοποίηση του NoTails..Tails script Νο 2.
# Προσωπικές επιλογές. Αλλάξτε τις αν θέλετε ή απενεργοποιήστε τις με # μπροστά.

# Τι σόι NoTails..Tails Μενού στα ελληνικά θα ήταν αν δεν είχε την εγκατάσταση της
# Ελληνικής γλώσσας πρώτη πρώτη κιόλας ? Ρητορικό το ερώτημα αλλά την έβαλα έχοντας
# επιλογή απενεργοποίησης για υποστήριξη μη πρόσθεσης τους στην αγγλική έκδοση.
install_el_lang=true

# υποστηρίζει έτσι όλες τις γλώσσες αρκεί κάποιος να βάλει το σύμβολο απο την δικιά
# του που θέλει. Με την εντολή [ sudo apt search hunspell ] βρίσκετε το σύμβολο.
lang_symbol="el"

# αν θέλετε και άλλο ελληνικό πρόγραμμα βάλτε το ονομα ως μεταβλητή εδώ και μέσα
# στην παρένθεση ως μεταβλητή πλέον.
ypostirixi_glwssas="hunspell-$lang_symbol"
thunderbird_glwssas="thunderbird-l10n-$lang_symbol"
libreoffice_glwssas="libreoffice-l10n-$lang_symbol"


greek_lang_apps=( "$ypostirixi_glwssas" "$thunderbird_glwssas" "$libreoffice_glwssas" )


# yt-dlp είναι το πρόγραμμα που χρησιμοποιεί το ffmpeg για να κατεβάζουμε video.
# Κάθε μέρα να το κατεβάζουμε καλό είναι γιατί είναι μικρό πρόγραμμα και τα end
# points στα διάφορα βίντεο σαιτ αλλάζουν συχνά και αυτά και αυτός είναι ο λόγος
# που αλλάζει συχνά και αυτό! Περισσότερα: https://github.com/yt-dlp/yt-dlp
# Αν το κάνετε false δεν θα σας ρωτήσει ποτέ για να κατέβει και δεν θα ασχοληθεί
# καθόλου με την επόμενη μεταβλητή η οποία ουσιαστικά σας ζητάει την άδεια για 
# να κατέβει
down_inst_updt_ytdlp=true

# Αυτό είναι σήμερα το URL για να κατεβάζετε το yt-dlp
# Αύριο μπορεί να αλλάξει όπως και άλλαξε στο παρελθόν και με αυτόν τον τρόπο 
# θα το αλλάξετε μόνο μια φορά αν αλλάξει πάλι ;)
yt_dlp_download_url="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"

# Παρόλα αυτά επειδή ότι κατεβάζουμε από το ίντερνετ δεν είναι πάντα ασφαλές
# Και η εκτέλεση ενός προγράμματος που κατεβάσαμε χωρίς μετέπειτα έλεγχο είναι
# επικίνδυνη συνήθεια, έβαλα έναν έλεγχο ακόμα που θα σας ρωτάει αλλά και θα σας 
# ενημερώνει από που κατεβαίνει το yt-dlp ώστε να το ελέγξετε μόνοι σας πριν το 
# εκτελέσετε. Αν την κάνετε false δεν θα σας ρωτήσει αν είναι true η down_inst_updt_ytdlp
elegxos_an_tha_katevei=true
# Αυτή η διαδικασία είναι ελάχιστα αλλαγμένη από το 5ο script γιατί εδώ δεν είναι
# κρίσιμη η ύπαρξη του yt-dlp μιας και επειδή σε αυτό το script κατεβαίνουν και 
# άλλα προγράμματα άφησα και την συνάρτηση του 5ου script για να δείτε τις αλλαγές
# που έκανα ώστε να μην σας κουράσω στην ανάγνωσή του.

# Φάκελος προορισμού για το yt-dlp αλλά και τα κατεβασμένα αρχεία και βίντεο.
ytdlp_base="$HOME/.local/bin"
base_directory="$HOME/Persistent"
fakelos_arxeiwn="$base_directory/VIDEOS"
entoli_tor="torsocks"

if [ "$(yparxi_tor)" == "false" ];then
    unset -v entoli_tor
fi


# Σύντομος προσδιορισμός της έκδοσης του Tails και μόνο και δεν επεκτείνω στα
# desktop γιατί θα διαβάσετε στην επόμενη παράγραφο.
if [ "$(command -v kgx)" != "" ]; then
    # Τρομερά απίθανο σενάριο να βρεθεί το kgx σε Tails παλιότερο της 7.0 έκδοσης
    tails_version="7"
else 
    tails_version="6"
fi


# ΠΡΟΣΟΧΗ
# Το module libcanberra-gtk-module του Tails 6 έγινε libcanberra-gtk3-module. 
# Όμως ρωτάμε μόνο για το 6 επειδή όλα τα νέα desktop εχουν την την ίδια έκδοση 
# με το Tails 7 και έτσι η μεταβλητή γίνεται συμβατή και με τα Desktop ;)
if [ "$tails_version" == "6" ]; then
    libacanberra_bin="libcanberra-gtk-module"
else 
    libacanberra_bin="libcanberra-gtk3-module"
fi


# τα έξτρα προγράμματα που πρέπει να έχουμε ειδικά αν θέλουμε να διαχειριστούμε
# στον Η/Υ που χρησιμοποιούμε το Tails. Ένα live usb είναι πάντα χρήσιμο εργαλείο!
install_extra_progs=true
extra_progs=( "ufw" "unzip"  "htop" "$libacanberra_bin" "gparted" "doublecmd-gtk" \
            "transmission" "mpv"  "tickr" "dconf-editor" ) 


# εδώ θα βάλω όσα είναι δύσκολο να μπουν με terminal και ξεκινώ με το wireshark
# και θα τα διαχωρίσω σε ομάδες ανάλογα την ειδική μέθοδο εγκατάστασής τους
install_dificult_progs=true
dificult_progs_group_1=( "wireshark" )


#
# ------------ ΑΠΟ ΕΔΩ ΚΑΙ ΚΑΤΩ ΟΤΙ ΠΕΙΡΑΖΕΤΕ ΕΧΕΙ ΕΠΙΔΡΑΣΗ ------------ 
# ----------------- ΣΤΗΝ ΑΡΧΙΚΗ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ SCRIPT ------------------
#

# Χρώματα για τις οθόνες των τερματικών, 
# Με true έχετε τα χρώματα που έχω βάλει εγώ, με ble τα κάνετε όλα μπλε, με gre 
# όλα πράσινα, με yel όλα κίτρινα, με red όλα κόκκινα και με οτιδήποτε εκτός από 
# αυτές τις 5 ονομασίες δεν θα εμφανίζονται καθόλου χρώματα!
# Σημείωση: οι μεταβλητές του κάθε script ορίζουν τα χρώματα στο script του & μόνο
use_color="true"
NC='\033[0m'

# Βάλτε το δικό σας χρώμα αν θέλετε σαν ένα νέο elif αλλά αλλάξτε και την use_color
if [[ "$use_color" == "true" ]]; then 
    RED='\033[1;31m'; GRE='\033[1;32m'; YEL='\033[1;33m'; BLE='\033[1;36m'
elif [[ "$use_color" == "ble" ]]; then 
    RED='\033[1;36m'; GRE='\033[1;36m'; YEL='\033[1;36m'; BLE='\033[1;36m'
elif [[ "$use_color" == "gre" ]]; then
    RED='\033[1;32m'; GRE='\033[1;32m'; YEL='\033[1;32m'; BLE='\033[1;32m'
elif [[ "$use_color" == "yel" ]]; then
    RED='\033[1;33m'; GRE='\033[1;33m'; YEL='\033[1;33m'; BLE='\033[1;33m'
elif [[ "$use_color" == "red" ]]; then
    RED='\033[1;31m'; GRE='\033[1;31m'; YEL='\033[1;31m'; BLE='\033[1;31m'
else
    #χωρίς χρώματα καθόλου
    unset -v RED; unset -v GRE; unset -v YEL; unset -v BLE; unset -v NC
fi



# Πρέπει να έχουμε και έναν φάκελο να βάζουμε τα βίντεο μας μέσα στο Persistent
# Αυτή η εντολή δεν πρόκειται να αλλοιώσει τίποτα στο Desktop του καθημερινού Η/Υ
if [ ! -d $fakelos_arxeiwn ]; then
    if [ ! -d $base_directory ]; then
        mkdir -p $base_directory && mkdir -p $fakelos_arxeiwn
    else
        mkdir -p $fakelos_arxeiwn
    fi  
fi


# Έλεγχος για ύπαρξη του zenity. Χωρίς zenity που χρησιμοποεί το Tails OS δεν 
# έχει καμιά απολύτως χρησιμότητα το σενάριο αυτό. 
check_zenity_exists


# Έλεγχος αν είναι Tails ή συμβατό Linux 
detect_Tails_OS_Linux_Desktop


# To login μας είτε ως μόνο του είτε από το κύριο σενάριο
if [ "$1" == "" ]; then
    echo -e "\r\n Θα χρειαστεί να γράψετε μια φορά το$BLE admin password$NC ως$GRE Sudo Pass$NC \n"
    sudo_passs
else
    adminz="$1"
    read -s -p " To script χρησιμοποιεί το admin password που έχετε ήδη βάλει " \
    adminpassword <<< $adminz;  
fi


clear


##Ασφαλίζουμε ξανά το Control Port . Από το config του Tor στο Debian 
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it
#CookieAuthentication 1
protect_control_port_after_tor(){
    if [ "$(grep -i 'CookieAuthentication 1' /etc/tor/torrc)" == "" ]; then
        sudo -S <<< "${adminpassword}"   systemctl stop tor.service
        sudo -S <<< "$adminpassword"  sed -i -e 's/ControlPort 127.0.0.1:9052/ControlPort 127.0.0.1:9052\nCookieAuthentication 1/g' /etc/tor/torrc 2>/dev/null
        ## applying new settings
        sleep 1
        sudo -S <<< "${adminpassword}"   systemctl restart tor.service
    fi
}

# ControlPort 127.0.0.1:9052 only on Tails 
if [ "$linux_type" == "Tails OS" ]; then
    export -f protect_control_port_after_tor
    protect_control_port_after_tor
fi


install_progs(){
    my_progs=($@)
    echo -e "\r\nΤώρα εγκαθιστώ τα${GRE} '${my_progs[@]}'${NC}, όλα μαζί."
    sudo -S <<< "$adminpassword"  apt -y install "${my_progs[@]}"
    # αν δεν υπάρχει κάποιο θα πρέπει να τα τρέξουμε ξεχωριστά το καθένα.
    if [[ "$?" != "0" ]]; then
        echo -e "\r\n Κάποιο πρόγραμμα από τα ${GRE} '${my_progs[@]}'${NC} λείπει .. \n\
και θα πρέπει να τρέξω την εντολή για κάθε ένα ξεχωριστά. \n"
        for p in "${my_progs[@]}"; do
            export -f anamoni_ektelesis
            sudo -S <<< "$adminpassword"  apt -y install "${p}"
            if [[ "$?" != "0" ]]; then
                anamoni_ektelesis "3"
                continue
            fi
            anamoni_ektelesis "3"
        done
    fi
}

install_dificult_progs(){
    #echo "$@" # auto einai to array 
    my_dif_progs=($@)
    echo -e "\r\nΤώρα εγκαθιστώ τα${GRE} '${my_dif_progs[@]}'${NC}, όλα μαζί."
    #export DEBIAN_FRONTEND=noninteractive
    sudo -S <<< "$adminpassword"  DEBIAN_FRONTEND=noninteractive apt -yq install "${my_dif_progs[@]}"
    if [[ "$?" != "0" ]]; then
        echo -e "\r\n Κάποιο πρόγραμμα από τα ${GRE} '${my_dif_progs[@]}'${NC} λείπει .. \n\
και θα πρέπει να τρέξω την εντολή για κάθε ένα ξεχωριστά. \n"
        for d in "${my_dif_progs[@]}"; do
            export -f anamoni_ektelesis
            sudo -S <<< "$adminpassword"  apt -y install "${d}"
            if [[ "$?" != "0" ]]; then
                anamoni_ektelesis "3"
                continue
            fi
            anamoni_ektelesis "3"
        done
    fi
}


# YT-DLP ... Μια κατηγορία από μόνο του μιας και είναι αυτό που ενημερώνεται -
# αλλάζει συνέχεια αλλά πρώτα πρέπει να βεβαιωθούμε ότι έχουν την δυνατότητα να 
# το κατεβάσουμε.

check_download_utility(){
    if [ "$(command -v wget)" != ""  ]; then
        local down_utils="wget"
    elif [ "$(command -v curl)" != "" ]; then
        local down_utils="curl"
    else 
        local down_utils=""
    fi
    echo "$down_utils"
}

# μας δίνει αλλά και ελέγχει αν έχουμε τα 2 βασικά εργαλεία για κατέβασμα αρχείων
down_util="$(check_download_utility)"



if [[ "$down_util" == "" ]]; then
    echo -e "\r\nΔεν βρήκα ούτε το$BLE wget$NC ούτε το$BLE curl$NC εγκατεστημένα!"
    echo -e "\rΧωρίς τουλάχιστον του ενός εκ των 2 είναι αδύνατο "
    echo -e "\rνα κατέβει το$BLE yt-dlp$NC στο$BLE Tails OS$NC ή στο Desktop σας! \n"
    echo -e "\r\nΕγκαταστήσετε τουλάχιστον το ένα αν θέλετε να βάλετε το yt-dlp. \n"
    export -f anamoni_ektelesis
    anamoni_ektelesis "5"
    down_inst_updt_ytdlp=false
    elegxos_an_tha_katevei=false
fi


check_ytdlp_downloaded(){
    if [ ! -f $fakelos_arxeiwn/ytdlp_last_download_day.txt ]; then
        echo "$(date +%d-%m-%Y)" > $fakelos_arxeiwn/ytdlp_last_download_day.txt
        local to_ytdlp_prepei_na_katevei=true
    else
        read -r linez < $fakelos_arxeiwn/ytdlp_last_download_day.txt
        todayz="$(date +%d-%m-%Y)"
        if [ "$linez" == "$todayz" ]; then
            local to_ytdlp_prepei_na_katevei=false
        else
            local to_ytdlp_prepei_na_katevei=true
        fi
    fi
    echo "$to_ytdlp_prepei_na_katevei"
}

# πρέπει να ξέρουμε κάθε φορά αν είναι να κατέβει ή όχι ...
prepei_na_katevei="$(check_ytdlp_downloaded)"
# echo "$prepei_na_katevei"
# clear


check_ytdlp_local_bin(){
    local ytdlp_leipei=false
    if [ ! -e $ytdlp_base/yt-dlp ] || [ "$(ls -lha $ytdlp_base/yt-dlp | awk '{print $5}')" == "0" ]; then
        local ytdlp_leipei=true
    fi
    if [ ! -d $ytdlp_base/ ]; then
        mkdir $ytdlp_base/
    fi
    echo "$ytdlp_leipei"
}

to_ytdlp_leipei="$(check_ytdlp_local_bin)"
# echo "$to_ytdlp_leipei"

# για να γίνει εκτελέσιμο
ytdlp_download_rest_commands(){
    # για να εκτελείται Make executable 
    chmod a+rx $ytdlp_base/yt-dlp 2> /dev/null 
    # πρεπει να είναι ο φάκελος στο .bashrc . creating PATH
    path_in_bashrc="export PATH="${ytdlp_base}:\$PATH""
    # echo $path_in_bashrc
    if [[ -z $(grep -i "^${path_in_bashrc}" "$HOME/.bashrc") ]]; then
        echo $path_in_bashrc >> $HOME/.bashrc
        source $HOME/.bashrc
    fi    
    if [ -f $ytdlp_base/yt-dlp ] && [ "$(ls -lha $ytdlp_base/yt-dlp | awk '{print $5}')" != "0" ]; then
        echo "$(date +%d-%m-%Y)" > $fakelos_arxeiwn/ytdlp_last_download_day.txt
        echo -e "\r\nΤο$BLE yt-dlp$NC είναι πλέον στον τοπικό φάκελο!\n"
        return 0
    else 
        echo -e "\r\nΤο$BLE yt-dlp$NC δεν είναι στον τοπικό φάκελο πια!\n"
        return 1
    fi
    sleep 3
}


final_wget_curl_download(){
        export -f anamoni_ektelesis
        if [ "$down_util" == "wget" ]; then
            # το wget και να υπαρχει το παλιό αρχείο θα το κατεβασει με νέα
            # όνομασια και θα το κανει ... yt-dlp.1, οποτε αφαιρούμε το παλιό
            # αλλά αν δεν υπάρχει θα βγάλει αδυναμια εκτελεσης που δεν θελουμε
            # να εμφανίζεται στην οθόνη
            rm -rf $ytdlp_base/yt-dlp 2> /dev/null 
            echo -ne "\r\nΚατεβάζω το$BLE yt-dlp$NC με το$BLE wget $NC "
            $entoli_tor /usr/bin/wget "$yt_dlp_download_url" -P $ytdlp_base
            anamoni_ektelesis 
            export -f ytdlp_download_rest_commands
            ytdlp_download_rest_commands
        elif [ "$down_util" == "curl" ]; then
            echo -e "\r\nΚατεβάζω το$BLE yt-dlp$NC με το$BLE curl $NC "
            $entoli_tor /usr/bin/curl -L "$yt_dlp_download_url" -O --output-dir $ytdlp_base
            anamoni_ektelesis
            export -f ytdlp_download_rest_commands
            ytdlp_download_rest_commands
        else
           echo -ne "\r\nΔεν μπορώ να κατεβάσω το$BLE yt-dlp$NC, ούτε με το$BLE wget$NC ούτε με το$BLE curl$NC ! "
           anamoni_ektelesis "5"
           return 1
        fi
}


# αν υπάρχει το yt-dlp στο σύστημα αλλά όχι στον φάκελο του χρήστη πρέπει να τον
# ρωτήσουμε τον χρήστη τι θέλει να χρησιμοποιήσει.
if [ "$down_inst_updt_ytdlp" = true ] && [ "$elegxos_an_tha_katevei" = true ] && \
    [ "$(command -v yt-dlp)" != "" ] && [ "$to_ytdlp_leipei" == "true" ]; then
    echo -e "\r\n Το${BLE} yt-dlp${NC} υπάρχει στον$YEL Η/Υ$NC αλλά όχι στο προφίλ του χρήστη \n"
    read -p " Αν θέλετε να κατεβάσετε το ενημερωμένο πατήστε το κουμπί y + enter
αλλιώς με οποιοδήποτε κουμπί + enter ή απλά enter συνεχίζει χωρίς αυτό  " ADEIES ;
    if ! [[ $ADEIES == "y" || $ADEIES  == "Y" || $ADEIES  == "Υ" || $ADEIES  == "υ" ]]; then
        down_inst_updt_ytdlp=false
        elegxos_an_tha_katevei=false
    fi
fi


# αν έχουμε ενεργοποιήσει τα updates και τον έλεγχο να μας ρωτάει για update
if [ "$down_inst_updt_ytdlp" = true ] && [ "$elegxos_an_tha_katevei" = true ]; then
    if [ "$to_ytdlp_leipei" == "true" ]  || [ "$prepei_na_katevei" == "true" ]; then
        echo -e "\r\n      Το ${BLE} yt-dlp${NC} χρειάζεται ενημέρωση \n"
        echo -e "\r Η διεύθυνση ενημέρωσης του${BLE} yt-dlp${NC} είναι η εξής : \n"
        echo -e "\r\n${BLE}https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp${NC}"
        echo -e "\r\n Αφού κατέβει και πριν το τρέξετε συνιστώ να το ελέγξετε."
        echo -e "\r Θα το βρείτε όταν τελειώσει η διαδικασία στον φάκελο : ${BLE}.local/bin/${NC} \n"
        read -p " Για να κατέβει το νέο yt-dlp πατήστε το κουμπί y + enter, αλλιώς ... 
 με σκέτο enter δεν θα κατεβάσει την νέα έκδοση του yt-dlp !   " ADEIA;
        if ! [[ $ADEIA == "y" || $ADEIA == "Y" || $ADEIA == "Υ" || $ADEIA == "υ" ]]; then
            echo -e "\r\n Δεν κατεβάζω το${BLE} yt-dlp${NC}... Συνεχίζω στα προγράμματα :) "
            if [ "$prepei_na_katevei" == "true" ]; then
                echo "" > $fakelos_arxeiwn/ytdlp_last_download_day.txt
            fi
            down_inst_updt_ytdlp=false
            export -f anamoni_ektelesis
            anamoni_ektelesis "3"
        fi
    fi
fi

# clear

if [ "$down_inst_updt_ytdlp" == true ]; then
    if [ "$prepei_na_katevei" == "true" ] || [ "$to_ytdlp_leipei" == "true" ]; then
        echo -e "\r\n   Το$BLE yt-dlp$NC λείπει ή είναι ανενημέρωτο ή και τα δυο \n"
        export -f final_wget_curl_download
        final_wget_curl_download 
        if [ "$?" == "0" ]; then
            echo -e "\r\n Tο κατέβασμα του $BLE yt-dlp$NC ολοκληρώθηκε! \n"
        else
            echo -e "\r\n Tο κατέβασμα του $BLE yt-dlp$NC απέτυχε! \n"
        fi
    else
        # και το $prepei_na_katevei είναι false αλλά τα ευκόλως εννοούμενα 
        # παραλείπονται 
        if [ "$to_ytdlp_leipei" == "true" ]; then
            echo -e "\r\n  Tο$BLE yt-dlp$NC δεν είναι πλέον στον φάκελο$BLE .local/bin$NC \n"
            export -f final_wget_curl_download
            final_wget_curl_download 
            if [ "$?" == "0" ]; then
                echo -e "\r\n Tο κατέβσαμα του $BLE yt-dlp$NC ολοκληρώθηκε!!! \n"
            else
                echo -e "\r\n Tο κατέβσαμα του $BLE yt-dlp$NC απέτυχε!!! \n"
            fi        
        else
            echo -e "\r\n  Το$BLE yt-dlp$NC είναι ενημερωμένο, συνεχίζω \n"
        fi
    fi
    export -f anamoni_ektelesis
    anamoni_ektelesis "3"
fi


clear


# πρωτα να κάνει update !
if  ([ "$install_el_lang" = true ] || [ "$install_extra_progs" = true ] || \
    [ "$install_dificult_progs" = true ]) && ([  "$linux_type" == "Tails OS" ] || \
    [ "$linux_type" == "Debian like Linux" ]); then 
    # αν δεν κάνει αρχικά update "σκαλώνει" η εγκατάσταση οποιοδήποτε προγράμματος ...
    echo -e "\r\nΠρώτα πάντα κάνουμε${BLE} Update${NC} το σύστημά μας...\n"
    sudo -S <<< "$adminpassword"  apt -y update
    sleep 5
    clear 
    # για να αποφύγουμε ασυμβατότητες αλλά και αλλοίωση της λειτουργίας του Tails
    # δεν πρέπει να εγκαταστήσουμε τα upgrades στα τυφλά. Όμως πρέπει να ξέρουμε 
    # αν τα προγράμματα που χρησιμοποιούμε χρειάζονται upgrade γιατί ενδέχεται 
    # να είναι κάποιο security update κρίσιμο που θα μας βάλει σε κίνδυνο αν 
    # συνεχίσουμε να το χρησιμοποιούμε χωρίς να του έχουμε κάνει upgrade.
    # Σημείωση ... Δεν είναι όλα τα security upgrades κρίσιμα και δεν είναι όλα
    # απραίτητο να εφαρμοστούν άμεσα γιατί πολύ απλά αν δεν τα χρησιμοποιούμε δεν
    # μας επηρεάζουν σε τίποτα αλλά αν τα χρησιμοποιούμε καλό είναι να τα 
    # εξετάσουμε αν πρέπει να προσέχουμε μέχρι το επόμενο upgrade από το Tails!
    echo -e "\r\nΚαι φυσικά βλέπουμε τα ${GRE} Upgrade${NC} γιατί είναι και ${YEL} Security updates${NC} !!!\n"
    # sudo -S <<< "$adminpassword"  apt list --upgradeable
    # δεν χρειάζεται admin rights γιατί είναι simulated ;)
    apt-get -s dist-upgrade | awk -v GREEN=${GRE} -v RESET=${NC} '/^Inst/ { printf " %s " , GREEN $2 RESET  }'
    echo -e "\r\nΑπό αυτά τα ακόλουθα είναι τα ${YEL} Security updates${NC}  \n"
    apt-get --just-print upgrade | grep -i security | awk -v YELLOW=${YEL} -v RESET=${NC} '{printf " %s " , YELLOW $2 RESET }' 
    echo "" 
    read -p " Όταν διαβάσετε την λίστα με τα συνολικά διαθέσιμα upgrades
 πατήστε ένα οποιοδήποτε κουμπί για να συνεχίσουμε..."
    #echo "linux type = $linux_type"
    if [ "$linux_type" == "Debian like Linux" ]; then 
        echo -e "\r\n Διεγνώσθη οτι το script τρέχει se Debian Linux. Μήπως θέλετε να εγκατασταθούν τα ${GRE} Upgrade${NC} ? \n"
        read -p "Για να εγκαταστήσει τα Upgrades πάτα το κουμπί y, αλλιώς με οποιοδήποτε key + enter κλείνει! " CONDITION;
        if [[ $CONDITION == "y" || $CONDITION == "Y" || $CONDITION == "Υ" || $CONDITION == "υ" ]]; then
            sudo -S <<< "$adminpassword"  apt -y upgrade
        fi
    fi
    sleep 5  
    clear
else
    echo -e "\r\n Σε αυτό το σημείο κάνω ${GRE}update${NC} στο ${BLE}Tails${NC} & ${YEL}upgrade${NC} στα ${BLE}Debian${NC}.\n"
    sleep 2
fi


if  [ "$install_el_lang" = true ] && ([ "$linux_type" == "Tails OS" ] || \
    [ "$linux_type" == "Debian like Linux;" ]); then 
    echo -e "\r\nΕγκαθιστώ τα${BLE} Ελληνικά${NC} και όποια άλλη γλώσσα θες να έχεις μετάφραση.\n"
    install_progs "${greek_lang_apps[@]}"
    sleep 5
    clear
else
    echo -e "\r\n Σε αυτό το σημείο εγκαθιστώ τα${BLE} Ελληνικά${NC} και όποια άλλη γλώσσα θες να έχεις μετάφραση στο ${BLE}Tails${NC} & στα ${BLE}Debian${NC}.\n"
    sleep 2
fi

if [ "$install_extra_progs" = true ] && ([ "$linux_type" == "Tails OS" ] || \
    [ "$linux_type" == "Debian like Linux;" ]); then 
    echo -e "\r\nΒάζουμε τα${YEL} επιπλέον προγράμματα${NC} που χρειαζόμαστε.\n"
    install_progs "${extra_progs[@]}"
    sleep 5
    clear
else
    echo -e "\r\n Σε αυτό το σημείο εγκαθιστώ τα${YEL} επιπλέον προγράμματα${NC} που χρειαζόμαστε στο ${BLE}Tails${NC} & στα ${BLE}Debian${NC}.\n"
    sleep 2
fi

if [ "$install_dificult_progs" = true ] && ([ "$linux_type" == "Tails OS" ] || \
    [ "$linux_type" == "Debian like Linux;" ]); then 
    if [ $dificult_progs_group_1 != "" ]; then
        echo -e "\r\nΒάζουμε τα${YEL} δύσκολα προγράμματα${NC} με${BLE} DEBIAN_FRONTEND=noninteractive${NC} \n"
        install_dificult_progs "${dificult_progs_group_1[@]}"
        echo -e "\r\nΗ συνάρτηση με DEBIAN_FRONTEND=noninteractive εκτελέστηκε.\n"
        sleep 5 
    fi
else
    echo -e "\r\n Σε αυτό το σημείο εγκαθιστώ τα${YEL} δύσκολα προγράμματα${NC} στο ${BLE}Tails${NC} & στα ${BLE}Debian${NC}.\n"
    sleep 2
fi


echo -ne "\r\n $YEL Τέλος $NC! Εις το Επανιδείν "
export -f anamoni_ektelesis
anamoni_ektelesis "2" 