88 lines
2.2 KiB
Swift
88 lines
2.2 KiB
Swift
import Foundation
|
|
|
|
enum ProtocolType: String, Codable, CaseIterable, Identifiable {
|
|
case ssh = "SSH"
|
|
case sftp = "SFTP"
|
|
case rdp = "RDP"
|
|
case vnc = "VNC"
|
|
|
|
var id: String { rawValue }
|
|
|
|
var defaultPort: Int {
|
|
switch self {
|
|
case .ssh: return 22
|
|
case .sftp: return 22
|
|
case .rdp: return 3389
|
|
case .vnc: return 5900
|
|
}
|
|
}
|
|
|
|
var systemImage: String {
|
|
switch self {
|
|
case .ssh: return "terminal"
|
|
case .sftp: return "folder"
|
|
case .rdp: return "pccomputer"
|
|
case .vnc: return "display"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ConnectionProfile: Codable, Identifiable, Hashable {
|
|
var id: UUID = UUID()
|
|
var name: String
|
|
var proto: ProtocolType
|
|
var host: String
|
|
var port: Int
|
|
var username: String
|
|
var group: String
|
|
var colorTag: String
|
|
var resolution: String
|
|
var sshKeyID: UUID?
|
|
var passwordAccount: String?
|
|
var extraArgs: String
|
|
var lastConnected: Date?
|
|
|
|
init(
|
|
id: UUID = UUID(),
|
|
name: String = "Neues Profil",
|
|
proto: ProtocolType = .ssh,
|
|
host: String = "",
|
|
port: Int = 22,
|
|
username: String = "",
|
|
group: String = "Allgemein",
|
|
colorTag: String = "blue",
|
|
resolution: String = "Automatisch",
|
|
sshKeyID: UUID? = nil,
|
|
passwordAccount: String? = nil,
|
|
extraArgs: String = "",
|
|
lastConnected: Date? = nil
|
|
) {
|
|
self.id = id
|
|
self.name = name
|
|
self.proto = proto
|
|
self.host = host
|
|
self.port = port
|
|
self.username = username
|
|
self.group = group
|
|
self.colorTag = colorTag
|
|
self.resolution = resolution
|
|
self.sshKeyID = sshKeyID
|
|
self.passwordAccount = passwordAccount
|
|
self.extraArgs = extraArgs
|
|
self.lastConnected = lastConnected
|
|
}
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id, name, host, port, username, group, colorTag, resolution, sshKeyID, passwordAccount, extraArgs, lastConnected
|
|
case proto = "protocol"
|
|
}
|
|
}
|
|
|
|
struct StoredSSHKey: Codable, Identifiable, Hashable {
|
|
var id: UUID = UUID()
|
|
var name: String
|
|
var privateKeyPath: String
|
|
var publicKeyPath: String?
|
|
var passphraseAccount: String?
|
|
}
|