Files
RouterOS/RouterOSAssistant/Core/Models/RouterOSModels.swift
T
KayandClaude Sonnet 5 63734ef7fe M1: Projektgerüst + Connect-Schritt (REST/SSH-Autodetect)
XcodeGen-basiertes SwiftUI-Projekt für den RouterOS-Interview-Assistenten.
Erster Wizard-Schritt: Verbindung zu Mikrotik-Geräten per REST-API
(RouterOS >=7.1) mit SSH-CLI-Fallback für ältere Firmware, Zertifikats-
TOFU-Bestätigung, Zugangsdaten im Keychain. Unit-Tests für CLI-Parser
und Fallback-Logik.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
2026-09-11 20:51:26 +02:00

49 lines
1.3 KiB
Swift

import Foundation
struct RouterOSCredentials: Equatable {
var host: String
var username: String
var password: String
var httpsPort: Int = 443
var sshPort: Int = 22
}
struct RouterDeviceInfo: Equatable {
var boardName: String
var routerOSVersion: String
var architecture: String
var uptime: String
}
struct NetworkInterface: Equatable, Identifiable {
var id: String { name }
var name: String
var type: String
var running: Bool
var disabled: Bool
var macAddress: String?
}
enum RouterOSError: LocalizedError, Equatable {
case notConnected
case invalidResponse(String)
case authenticationFailed
case untrustedCertificate(fingerprint: String)
case transportUnavailable(String)
var errorDescription: String? {
switch self {
case .notConnected:
return "Keine Verbindung zum Router."
case .invalidResponse(let detail):
return "Unerwartete Antwort vom Router: \(detail)"
case .authenticationFailed:
return "Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen."
case .untrustedCertificate(let fingerprint):
return "Unbekanntes Zertifikat (Fingerabdruck \(fingerprint)). Bitte bestätigen."
case .transportUnavailable(let detail):
return detail
}
}
}