RemminaMac 0.1.0: SSH/RDP-Client für macOS (SwiftUI, Remmina-Layout, Profile, SSH-Keys, Docs, Release-Skripte)
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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?
|
||||
}
|
||||
Reference in New Issue
Block a user