1.7 KiB
1.7 KiB
Architektur
Sources/RemminaMac/
RemminaMacApp.swift # @main, WindowGroup, lädt ProfileStore
Models/ConnectionProfile.swift # ProtocolType + ConnectionProfile + StoredSSHKey (Codable)
Stores/ProfileStore.swift # ObservableObject, JSON-Persistenz, Filter/Suche/Gruppen
Security/KeychainHelper.swift# SecItemAdd/Copy/Delete Wrapper
Services/ConnectionServices.swift # SSHService (ssh-Befehl) + RDPService (freerdp/rdc/vnc)
Views/ContentView.swift # NavigationSplitView: Sidebar + Tabs + Statusbar
Views/SessionView.swift # Detail pro Sitzung
Views/ProfileEditorView.swift# Formular Neu/Bearbeiten + Keychain-Anbindung
Views/SSHKeysView.swift # Key-Liste, Import, ssh-keygen
Datenfluss
RemminaMacApperstelltProfileStoreals@StateObject, injiziert alsenvironmentObject.ProfileStore.load()liestprofiles.json+sshkeys.json, sonst Sample-Daten.ContentViewfiltert viasearchText/selectedGroup,selectionsteuert Detail.connect(_:)setztlastConnected, öffnet Tab, delegiert anSSHService/RDPService.- Secrets nur via
KeychainHelper, JSON enthält nur Account-Referenzen.
Wichtige Dateien
Stores/ProfileStore.swift:13— Pfade +load()/save()Models/ConnectionProfile.swift:3— Protokoll-Defaults (Ports, Icons)Services/ConnectionServices.swift:6—sshArguments(for:key:)Views/ContentView.swift— Remmina-Layout
Nächste Ausbaustufen
- SwiftTerm-View statt externem Terminal +
swift-nio-sshfür echte SSH-Sessions. - FreeRDP als XPC-Service einbetten statt
Process. - SFTP-Browser (NIO SFTP oder libssh2-Bridge).
- Export/Import-Buttons + Drag&Drop für Keys.