112 lines
3.6 KiB
Bash
Executable file
112 lines
3.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Fichier CSV contenant les données des comptes
|
|
CSV_FILE="$HOME/Sync/BContact/tv_history.csv"
|
|
|
|
# Vérifie si le fichier CSV existe, sinon le crée avec des en-têtes
|
|
if [[ ! -f "$CSV_FILE" ]]; then
|
|
echo "name,tv_id,tv_pwd" > "$CSV_FILE"
|
|
fi
|
|
|
|
# Personnalisation des couleurs de whiptail
|
|
export NEWT_COLORS='
|
|
root=,black
|
|
window=white,black
|
|
border=white,black
|
|
title=blue,black
|
|
compactbutton=white,black
|
|
button=blue,black
|
|
textbox=white,black
|
|
listbox=white,black
|
|
actlistbox=blue,black
|
|
sellistbox=blue,black
|
|
actsellistbox=blue,black
|
|
'
|
|
|
|
# Fonction pour afficher un menu
|
|
show_menu() {
|
|
MENU_ITEMS=("1" "Ajouter" "2" "Consulter" "3" "Supprimer")
|
|
CHOICE=$(whiptail --title "TeamViewer TUI" --menu "Que voulez-vous faire?" 15 50 8 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
case $CHOICE in
|
|
1) add_account ;;
|
|
2) choose_account ;;
|
|
3) delete_account ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
}
|
|
|
|
# Fonction pour choisir un compte et afficher les informations
|
|
choose_account() {
|
|
# Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête)
|
|
ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1)
|
|
|
|
# Préparation de la liste pour whiptail
|
|
MENU_ITEMS=()
|
|
INDEX=1
|
|
while IFS= read -r account; do
|
|
MENU_ITEMS+=("$INDEX" "$account")
|
|
INDEX=$((INDEX + 1))
|
|
done <<< "$ACCOUNT_NAMES"
|
|
|
|
# Affichage de la liste des comptes avec whiptail
|
|
ACCOUNT_INDEX=$(whiptail --title "TOTP TUI" --menu "Compte :" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
# Si l'utilisateur annule, retourner au menu principal
|
|
if [[ $? -ne 0 ]]; then
|
|
show_menu
|
|
fi
|
|
|
|
# Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête)
|
|
LINE=$(tail -n +2 "$CSV_FILE" | sed -n "${ACCOUNT_INDEX}p")
|
|
IFS=',' read -r name tv_id tv_pwd <<< "$LINE"
|
|
|
|
# Affichage des informations du compte sélectionné
|
|
whiptail --title "Informations du Compte" --msgbox "Nom: $name\nID: $tv_id\nMot de passe: $tv_pwd" 15 50
|
|
show_menu
|
|
}
|
|
|
|
# Fonction pour ajouter un compte
|
|
add_account() {
|
|
name=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le nom du compte:" 10 60 3>&1 1>&2 2>&3)
|
|
tv_id=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez l'ID TeamViewer:" 10 60 3>&1 1>&2 2>&3)
|
|
tv_pwd=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le mot de passe TeamViewer:" 10 60 3>&1 1>&2 2>&3)
|
|
|
|
# Ajouter l'entrée au fichier CSV
|
|
echo "$name,$tv_id,$tv_pwd" >> "$CSV_FILE"
|
|
|
|
whiptail --title "Succès" --msgbox "Le compte a été ajouté avec succès!" 10 60
|
|
show_menu
|
|
}
|
|
|
|
# Fonction pour supprimer un compte
|
|
delete_account() {
|
|
# Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête)
|
|
ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1)
|
|
|
|
# Préparation de la liste pour whiptail
|
|
MENU_ITEMS=()
|
|
INDEX=1
|
|
while IFS= read -r account; do
|
|
MENU_ITEMS+=("$INDEX" "$account")
|
|
INDEX=$((INDEX + 1))
|
|
done <<< "$ACCOUNT_NAMES"
|
|
|
|
# Affichage de la liste des comptes avec whiptail
|
|
ACCOUNT_INDEX=$(whiptail --title "Supprimer un Compte" --menu "Choisissez un compte à supprimer:" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
|
|
|
# Si l'utilisateur annule, retourner au menu principal
|
|
if [[ $? -ne 0 ]]; then
|
|
show_menu
|
|
fi
|
|
|
|
# Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête)
|
|
sed -i "${ACCOUNT_INDEX}d" "$CSV_FILE"
|
|
|
|
whiptail --title "Succès" --msgbox "Le compte a été supprimé avec succès!" 10 60
|
|
show_menu
|
|
}
|
|
|
|
# Démarrage du script
|
|
show_menu
|
|
|