diff --git a/remmina_sync.sh b/remmina_sync.sh new file mode 100644 index 0000000..e6cc6e8 --- /dev/null +++ b/remmina_sync.sh @@ -0,0 +1,127 @@ +#!/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