# RemminaMac — SSH / RDP Client für macOS Remmina-inspirierter Connection-Manager für macOS, nativ in Swift + SwiftUI. ![Plattform](https://img.shields.io/badge/plattform-macOS%2014%2B-blue) ![Sprache](https://img.shields.io/badge/sprache-Swift%205.9-orange) ![UI](https://img.shields.io/badge/UI-SwiftUI-green) Layout wie Remmina: **links Profil-Liste mit Suche + Gruppen, rechts Verbindungs-Tabs, unten Statusbar.** ## Inhaltsverzeichnis - [Features](#features) - [Screenshots / Layout](#screenshots--layout) - [Schnellstart](#schnellstart) - [Installation](docs/INSTALL.md) - [Benutzung](docs/USAGE.md) - [Architektur](docs/ARCHITECTURE.md) - [SSH-Keys & Sicherheit](#ssh-keys--sicherheit) - [RDP / VNC unter macOS](#rdp--vnc-unter-macos) - [Profile-Format](#profile-format) - [Release-Binary](#release-binary) - [Fehlerprotokoll](docs/ERRORS.md) - [Roadmap](#roadmap) - [Lizenz](#lizenz) ## Features - GUI im Remmina-Layout (`Views/ContentView.swift`): - Sidebar: Gruppen-Picker, Suche, Profil-Liste, Doppelklick = Verbinden - Detail: Tab-Ansicht offener Sitzungen, Verbindungsdetails, Statusbar - Toolbar: Neu / Bearbeiten / Duplizieren / Verbinden / Quick-Connect / SSH-Keys - Profile laden / speichern / duplizieren / löschen - JSON in `~/Library/Application Support/RemminaMac/profiles.json` - Export / Import (siehe Benutzung) - Protokolle: SSH, SFTP, RDP, VNC (`Models/ConnectionProfile.swift:3`) - SSH-Keys speichern & verwalten (`Views/SSHKeysView.swift`): - Import aus `~/.ssh`, Datei-Picker, `ssh-keygen`-Wrapper (ed25519) - Passphrases in macOS Keychain (`Security/KeychainHelper.swift`) - Passwörter in Keychain, nie im Klartext-JSON - SSH via System-`ssh` in Terminal.app (`Services/ConnectionServices.swift:6`) - RDP via FreeRDP (`xfreerdp`) oder Fallback Microsoft Remote Desktop - VNC via `vnc://`-Scheme ## Screenshots / Layout ``` +-------------------------------------------------------------+ | Toolbar: [+][Edit][Copy][Key] | [▶ Verbinden][⚡Quick] | +------+-------------------------------+--------------------+ | Gruppe | Tab: Webserver | Büro-PC | ... | Detail | | Suche +-------------------------------+ | | - Webserver | Verbindungsdetails (Befehl)| | | - Büro-PC | Hinweis | | | - Dateiserver+-------------------------------+ | +------+-------------------------------+--------------------+ | Statusbar: ● Bereit ... N Profile · M Sitzungen | +-------------------------------------------------------------+ ``` ## Schnellstart ```bash cd RemminaMac swift build swift run RemminaMac # In Xcode: open Package.swift # Target RemminaMac → My Mac → Run ``` ## SSH-Keys & Sicherheit - Private-Key-Pfade stehen in `sshkeys.json`, Passphrases nur in Keychain. - Service-Name: `RemminaMac`, Accounts: `profile-`, `sshkey-`. - Keychain lesen/schreiben: `Security/KeychainHelper.swift:5`. - Es werden keine Secrets ins Git-Repo geschrieben (siehe `.gitignore`). ## RDP / VNC unter macOS - Optional: `brew install freerdp` - Mit FreeRDP: `xfreerdp /v:HOST:PORT /u:USER [/size:WxH | /f]` - Ohne: `rdc://` → Microsoft Remote Desktop (aus App Store installieren) - VNC: `open vnc://host:port` ## Profile-Format ```json [ { "id": "UUID", "name": "Webserver", "protocol": "SSH", "host": "192.168.1.10", "port": 22, "username": "admin", "group": "Server", "colorTag": "blue", "resolution": "Automatisch", "sshKeyID": null, "passwordAccount": "profile-UUID", "extraArgs": "", "lastConnected": null } ] ``` ## Release-Binary Fertige Binaries liegen unter Git-Releases (`dist/` wird lokal gebaut, nicht committet): ```bash ./scripts/build-release.sh ./scripts/build-app.sh # RemminaMac.app für /Applications ./scripts/build-dmg.sh # DMG mit Drag-and-drop auf Programme # → dist/RemminaMac--macos-arm64.zip + .sha256 # → dist/RemminaMac--macos-arm64.dmg + .sha256 ls dist/ ``` Details: [docs/INSTALL.md](docs/INSTALL.md), [docs/RELEASING.md](docs/RELEASING.md). ## Roadmap - [ ] Eingebettetes Terminal (SwiftTerm + swift-nio-ssh) - [ ] Echte RDP-Einbettung (FreeRDP-Bridge) statt externem Prozess - [ ] SFTP-Browser integriert - [ ] Export/Import-Buttons in der GUI - [ ] Tray / Favoriten / Ordner-Badges wie Remmina ## Lizenz MIT — siehe `LICENSE`.