#!/bin/bash # Konfiguration GIT_SERVER="gitea.zell-cloud.de" GIT_PORT="3000" GIT_USER="sebastian.zell" REPO_NAME="remmina" LOCAL_DIR="$HOME/.local/share/remmina" REMOTE_REPO="git@gitea.zell-cloud.de:${GIT_USER}/${REPO_NAME}.git" CRON_FILE="/etc/cron.d/remmina_sync" # Funktion: SSH-Schlüssel erstellen und konfigurieren setup_ssh_key() { echo "Prüfe, ob ein SSH-Schlüssel existiert..." if [ ! -f "$HOME/.ssh/id_ed25519" ]; then echo "Kein SSH-Schlüssel gefunden. Erstelle einen neuen..." ssh-keygen -t ed25519 -C "$GIT_USER@gitea.zell-cloud.de" -f "$HOME/.ssh/id_ed25519" -N "" chmod 600 "$HOME/.ssh/id_ed25519" chmod 644 "$HOME/.ssh/id_ed25519.pub" echo "SSH-Schlüssel erfolgreich erstellt." echo "Öffentlicher Schlüssel (bitte in Gitea einfügen):" cat "$HOME/.ssh/id_ed25519.pub" echo "Gehe zu Gitea -> Profil -> Einstellungen -> SSH-Schlüssel und füge den Schlüssel ein." read -rp "Drücke ENTER, sobald der Schlüssel hinzugefügt wurde, um fortzufahren." else echo "SSH-Schlüssel bereits vorhanden." fi # SSH-Agent starten und Schlüssel hinzufügen eval "$(ssh-agent -s)" ssh-add "$HOME/.ssh/id_ed25519" echo "SSH-Schlüssel wurde dem SSH-Agent hinzugefügt." } # Funktion: Repository erstellen falls nicht vorhanden setup_git_repo() { echo "Prüfe, ob Git-Repository existiert..." if [ ! -d "$LOCAL_DIR/.git" ]; then echo "Kein lokales Repository gefunden. Initialisiere..." mkdir -p "$LOCAL_DIR" cd "$LOCAL_DIR" git init git checkout -b main touch README.md git add README.md git commit -m "Initial commit" git remote add origin "$REMOTE_REPO" git push -u origin main else echo "Lokales Repository vorhanden." fi } # Funktion: Dateien synchronisieren sync_git_repo() { echo "Synchronisiere Repository..." cd "$LOCAL_DIR" || exit git fetch origin echo "Änderungen im Remote-Repository laden..." git diff --name-status origin/main || echo "Keine Änderungen im Remote-Repository." git reset --hard origin/main echo "Lade Änderungen hoch..." git add . git commit -m "Automatische Synchronisation" || echo "Nichts zu committen." git push origin main echo "Synchronisation abgeschlossen." } # Funktion: Cron-Job einrichten setup_cron_job() { echo "Richte Cron-Job ein..." CRON_CMD="0 * * * * $USER $(which bash) $HOME/remmina_sync.sh > /dev/null 2>&1" echo "$CRON_CMD" | crontab - echo "Cron-Job eingerichtet." } # Funktion: Remmina-Hook einrichten setup_remmina_hook() { echo "Richte Remmina-Hook ein..." HOOK_SCRIPT="$LOCAL_DIR/sync_remmina_hook.sh" echo "#!/bin/bash" > "$HOOK_SCRIPT" echo "$(which bash) $HOME/remmina_sync.sh" >> "$HOOK_SCRIPT" chmod +x "$HOOK_SCRIPT" echo "Remmina-Hook eingerichtet: $HOOK_SCRIPT" } # Menü anzeigen show_menu() { echo "Bitte wähle eine Option:" echo "1) SSH-Schlüssel einrichten" echo "2) Einmalige Synchronisation" echo "3) Cron-Job einrichten" echo "4) Remmina-Hook einrichten" echo "5) Git-Repository erstellen" echo "6) Beenden" read -rp "Deine Auswahl: " choice case $choice in 1) setup_ssh_key ;; 2) sync_git_repo ;; 3) setup_cron_job ;; 4) setup_remmina_hook ;; 5) setup_git_repo ;; 6) echo "Beendet." exit 0 ;; *) echo "Ungültige Auswahl." show_menu ;; esac } # Hauptablauf show_menu