mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 13:26:16 +00:00
dependency injection in ShhShellApp via the init
added keymanager to sshhandler so it can access keys
This commit is contained in:
@@ -15,6 +15,8 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
private var session: ssh_session?
|
private var session: ssh_session?
|
||||||
private var channel: ssh_channel?
|
private var channel: ssh_channel?
|
||||||
|
|
||||||
|
var keyManager: KeyManager
|
||||||
|
|
||||||
@MainActor var container: TerminalViewContainer {
|
@MainActor var container: TerminalViewContainer {
|
||||||
TerminalViewContainer.shared
|
TerminalViewContainer.shared
|
||||||
}
|
}
|
||||||
@@ -38,8 +40,9 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
private let userDefaults = NSUbiquitousKeyValueStore.default
|
private let userDefaults = NSUbiquitousKeyValueStore.default
|
||||||
private let logger = Logger(subsystem: "xy", category: "sshHandler")
|
private let logger = Logger(subsystem: "xy", category: "sshHandler")
|
||||||
|
|
||||||
init(host: Host) {
|
init(host: Host, keyManager: KeyManager?) {
|
||||||
self.host = host
|
self.host = host
|
||||||
|
self.keyManager = keyManager ?? KeyManager()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHostkey() -> String? {
|
func getHostkey() -> String? {
|
||||||
|
|||||||
@@ -9,9 +9,16 @@ import SwiftUI
|
|||||||
|
|
||||||
@main
|
@main
|
||||||
struct ShhShellApp: App {
|
struct ShhShellApp: App {
|
||||||
@StateObject var sshHandler: SSHHandler = SSHHandler(host: Host.blank)
|
@StateObject var sshHandler: SSHHandler
|
||||||
|
|
||||||
@StateObject var hostsManager: HostsManager = HostsManager()
|
@StateObject var hostsManager: HostsManager = HostsManager()
|
||||||
@StateObject var keyManager: KeyManager = KeyManager()
|
@StateObject var keyManager: KeyManager
|
||||||
|
|
||||||
|
init() {
|
||||||
|
let keyManager = KeyManager()
|
||||||
|
_sshHandler = StateObject(wrappedValue: SSHHandler(host: Host.blank, keyManager: keyManager))
|
||||||
|
_keyManager = StateObject(wrappedValue: keyManager)
|
||||||
|
}
|
||||||
|
|
||||||
var body: some Scene {
|
var body: some Scene {
|
||||||
WindowGroup {
|
WindowGroup {
|
||||||
|
|||||||
@@ -49,9 +49,10 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
|
let keymanager = KeyManager()
|
||||||
ContentView(
|
ContentView(
|
||||||
handler: SSHHandler(host: Host.debug),
|
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
keyManager: KeyManager()
|
keyManager: keymanager
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,9 +197,10 @@ struct ConnectionView: View {
|
|||||||
|
|
||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
|
let keymanager = KeyManager()
|
||||||
ConnectionView(
|
ConnectionView(
|
||||||
handler: SSHHandler(host: Host.debug),
|
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
keyManager: KeyManager()
|
keyManager: keymanager
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ struct HostsView: View {
|
|||||||
ForEach(hostsManager.hosts) { host in
|
ForEach(hostsManager.hosts) { host in
|
||||||
NavigationLink() {
|
NavigationLink() {
|
||||||
ConnectionView(
|
ConnectionView(
|
||||||
handler: SSHHandler(host: host),
|
handler: SSHHandler(host: host, keyManager: keyManager),
|
||||||
hostsManager: hostsManager,
|
hostsManager: hostsManager,
|
||||||
keyManager: keyManager
|
keyManager: keyManager
|
||||||
)
|
)
|
||||||
@@ -64,7 +64,7 @@ struct HostsView: View {
|
|||||||
ToolbarItem(placement: .confirmationAction) {
|
ToolbarItem(placement: .confirmationAction) {
|
||||||
NavigationLink {
|
NavigationLink {
|
||||||
ConnectionView(
|
ConnectionView(
|
||||||
handler: SSHHandler(host: Host.blank),
|
handler: SSHHandler(host: Host.blank, keyManager: keyManager),
|
||||||
hostsManager: hostsManager,
|
hostsManager: hostsManager,
|
||||||
keyManager: keyManager
|
keyManager: keyManager
|
||||||
)
|
)
|
||||||
@@ -78,7 +78,7 @@ struct HostsView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
HostsView(
|
HostsView(
|
||||||
handler: SSHHandler(host: Host.debug),
|
handler: SSHHandler(host: Host.debug, keyManager: nil),
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
keyManager: KeyManager()
|
keyManager: KeyManager()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -59,6 +59,6 @@ struct DialogView: View {
|
|||||||
#Preview {
|
#Preview {
|
||||||
ZStack {
|
ZStack {
|
||||||
Color.black
|
Color.black
|
||||||
DialogView(handler: SSHHandler(host: Host.debug), showDialog: true)
|
DialogView(handler: SSHHandler(host: Host.debug, keyManager: nil), showDialog: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct SessionView: View {
|
struct SessionView: View {
|
||||||
@ObservedObject var hostsManager: HostsManager
|
@ObservedObject var hostsManager: HostsManager
|
||||||
|
@ObservedObject var keyManager: KeyManager
|
||||||
@ObservedObject var container = TerminalViewContainer.shared
|
@ObservedObject var container = TerminalViewContainer.shared
|
||||||
|
|
||||||
@State var key: UUID
|
@State var key: UUID
|
||||||
@@ -34,7 +35,7 @@ struct SessionView: View {
|
|||||||
}
|
}
|
||||||
.fullScreenCover(isPresented: $shellPresented) {
|
.fullScreenCover(isPresented: $shellPresented) {
|
||||||
ShellView(
|
ShellView(
|
||||||
handler: container.sessions[key]?.handler ?? SSHHandler(host: Host.blank),
|
handler: container.sessions[key]?.handler ?? SSHHandler(host: Host.blank, keyManager: keyManager),
|
||||||
hostsManager: hostsManager
|
hostsManager: hostsManager
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -44,6 +45,7 @@ struct SessionView: View {
|
|||||||
#Preview {
|
#Preview {
|
||||||
SessionView(
|
SessionView(
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
|
keyManager: KeyManager(),
|
||||||
key: UUID()
|
key: UUID()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ struct SessionsListView: View {
|
|||||||
if !container.sessions.isEmpty {
|
if !container.sessions.isEmpty {
|
||||||
Section("Sessions") {
|
Section("Sessions") {
|
||||||
ForEach(container.sessionIDs, id: \.self) { key in
|
ForEach(container.sessionIDs, id: \.self) { key in
|
||||||
SessionView(hostsManager: hostsManager, key: key)
|
SessionView(hostsManager: hostsManager, keyManager: keyManager, key: key)
|
||||||
.id(container.sessions[key]!.handler.connected)
|
.id(container.sessions[key]!.handler.connected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ struct SessionsListView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
SessionsListView(
|
SessionsListView(
|
||||||
handler: SSHHandler(host: Host.debug),
|
handler: SSHHandler(host: Host.debug, keyManager: nil),
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
keyManager: KeyManager()
|
keyManager: KeyManager()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ struct ShellView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
ShellView(
|
ShellView(
|
||||||
handler: SSHHandler(host: Host.debug),
|
handler: SSHHandler(host: Host.debug, keyManager: nil),
|
||||||
hostsManager: HostsManager()
|
hostsManager: HostsManager()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user