#!/bin/bash

# ------------------------------------------------------------------------------
# ⚠️ Hinweis für Entwickler:
# 
# Das Firefox-Backup-Tool wurde von evilware666 für GuideOS entwickelt und ist Open Source. 
# Eine kommerzielle Nutzung ist nicht gestattet.
# Mehr Infos zu GuideOS findet man unter: https://guideos.de/
#
# Dieses Skript dient dazu, das Firefox-Profil eines Benutzers zu sichern und 
# bei Bedarf wiederherzustellen (UNVERSCHLÜSSELT). Es wird verwendet, um Daten wie Lesezeichen, 
# Passwörter, Erweiterungen und andere Firefox-Einstellungen zu sichern.
# 
# Entwicklerhinweis:
# - Stelle sicher, dass alle Abhängigkeiten (wie Zenity) installiert sind, 
#   um die grafischen Dialoge korrekt anzuzeigen.
# - Die Sicherungskomprimierung verwendet `tar` und die Wiederherstellung nutzt 
#   das gleiche Format, um eine einfache und zuverlässige Handhabung von Backups 
#   zu ermöglichen.
#
# ------------------------------------------------------------------------------

# ⚠️ Hinweis zu Beginn des Tools
zenity --info --text="ACHTUNG! Das Firefox-Backup-Tool erstellt die Sicherung UNVERSCHLÜSSELT !" --title="Firefox-Backup-Tool"

# ⚠️ Hinweis anzeigen, dass Firefox geschlossen werden muss
zenity --info --text="Bitte stelle sicher, dass Firefox geschlossen ist, bevor du fortfährst. Sonst könnte das Firefox-Profil eventuell nicht korrekt gesichert oder wiederhergestellt werden." --title="Firefox-Backup-Tool"

while true; do
    # Dialog mit Zenity für die Auswahl von Sichern oder Wiederherstellen
    ACTION=$(zenity --list --title="Firefox-Backup-Tool" --radiolist \
        --column="Wählen" --column="Aktion" \
        TRUE "Sichern" \
        FALSE "Wiederherstellen" \
        --height=250)

    # Wenn der Benutzer "Abbrechen" wählt, beende das Programm
    if [ $? -ne 0 ]; then
        exit 0
    fi

    # Wenn der Benutzer "Sichern" auswählt
    if [ "$ACTION" == "Sichern" ]; then
        # Nach einem Zielordner fragen, in dem das Backup gespeichert werden soll
        BACKUP_DIR=$(zenity --file-selection --directory --title="Firefox-Backup-Tool - Wähle den Zielordner für das Backup")
        if [ -n "$BACKUP_DIR" ]; then
            # Bestätigung, dass der Benutzer warten soll, bis der Prozess abgeschlossen ist
            zenity --info --text="Bitte warte, bis der Prozess abgeschlossen ist." --title="Firefox-Backup-Tool"

            BACKUP_NAME="$BACKUP_DIR/mozilla_backup_$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
            if [ -d "$HOME/.mozilla" ]; then
                # Sicherung starten
                tar -czf "$BACKUP_NAME" -C "$HOME" .mozilla
                if [ $? -eq 0 ]; then
                    zenity --info --text="Das Profil wurde erfolgreich gesichert" --title="Firefox-Backup-Tool"
                    # Frage, ob das Programm beendet werden soll
                    zenity --question --text="Möchtest du das Programm beenden?" --title="Sicherung abgeschlossen"
                    if [ $? -eq 0 ]; then
                        exit 0
                    fi
                else
                    zenity --error --text="⚠️ Fehler beim Sichern des Profils." --title="Firefox-Backup-Tool"
                fi
            else
                zenity --error --text="⚠️ Das .mozilla-Verzeichnis wurde nicht gefunden. Sicherung abgebrochen." --title="Firefox-Backup-Tool"
            fi
        else
            zenity --error --text="⚠️ Kein Zielordner ausgewählt. Sicherung abgebrochen." --title="Firefox-Backup-Tool"
        fi

    # Wenn der Benutzer "Wiederherstellen" auswählt
    elif [ "$ACTION" == "Wiederherstellen" ]; then
        BACKUP_FILE=$(zenity --file-selection --title="Firefox-Backup-Tool - Wähle das Backup" --file-filter="*.tar.gz")
        if [ -n "$BACKUP_FILE" ]; then
            # Bestätigung, dass der Benutzer warten soll, bis der Prozess abgeschlossen ist
            zenity --info --text="⚠️ Bitte warte, bis der Prozess abgeschlossen ist." --title="Firefox-Backup-Tool"

            if [ -f "$BACKUP_FILE" ]; then
                # Warnung, dass das Profil überschrieben wird
                zenity --warning --text="⚠️ ACHTUNG: Das Wiederherstellen des Backups überschreibt das alte Firefox-Profil!" --title="Firefox-Backup-Tool"

                # Den .mozilla-Ordner löschen
                rm -rf "$HOME/.mozilla"

                # Den gesamten .mozilla-Ordner mit dem Backup überschreiben
                tar -xzf "$BACKUP_FILE" -C "$HOME"
                if [ $? -eq 0 ]; then
                    zenity --info --text="Das Profil wurde erfolgreich wiederhergestellt!" --title="Firefox-Backup-Tool"
                    # Frage, ob das Programm beendet werden soll
                    zenity --question --text="Möchtest du das Programm beenden?" --title="Wiederherstellung abgeschlossen"
                    if [ $? -eq 0 ]; then
                        exit 0
                    fi
                else
                    zenity --error --text="⚠️ Fehler beim Wiederherstellen des Profils." --title="Firefox-Backup-Tool"
                fi
            else
                zenity --error --text="⚠️ Die ausgewählte Datei existiert nicht. Wiederherstellung abgebrochen." --title="Firefox-Backup-Tool"
            fi
        else
            zenity --error --text="⚠️ Keine Datei ausgewählt. Wiederherstellung abgebrochen." --title="Firefox-Backup-Tool"
        fi
    else
        zenity --error --text="⚠️ Keine Aktion ausgewählt. Skript abgebrochen." --title="Firefox-Backup-Tool"
    fi
done

