forked from kay/RouterOS
Config-Export (/export terse) über eine dedizierte SSH-Verbindung, unabhängig vom aktiven Live-Transport (REST oder SSH) — RouterOS' REST-API hat keinen generischen Export-Endpunkt. Lokale Sicherungen unter ~/Library/Application Support/RouterOSAssistant/Backups/. Neuer "Sicherungen"-Tab mit manuellem "Jetzt sichern"-Button, SessionStore teilt die Zugangsdaten der aktiven Verbindung zwischen den Tabs. Der bestehende Connect-Schritt dient bereits als reiner Lese-Modus (nur GET-Aufrufe) — ein zusätzlicher Dry-Run-Schalter entfällt, da es vor M3 noch keine Schreibpfade gibt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
29 lines
758 B
Swift
29 lines
758 B
Swift
import Foundation
|
|
|
|
@MainActor
|
|
final class BackupViewModel: ObservableObject {
|
|
@Published private(set) var backups: [BackupRecord] = []
|
|
@Published private(set) var isCreatingBackup = false
|
|
@Published var errorMessage: String?
|
|
|
|
private let backupService = BackupService()
|
|
|
|
func load() {
|
|
backups = backupService.listBackups()
|
|
}
|
|
|
|
func createBackup(for credentials: RouterOSCredentials) {
|
|
isCreatingBackup = true
|
|
errorMessage = nil
|
|
Task {
|
|
do {
|
|
_ = try await backupService.createBackup(for: credentials)
|
|
load()
|
|
} catch {
|
|
errorMessage = error.localizedDescription
|
|
}
|
|
isCreatingBackup = false
|
|
}
|
|
}
|
|
}
|