track authorization status fixing freeze when trying to auth when already authorized

fix authWithNone
fix debug settings
This commit is contained in:
neon443
2025-06-06 21:32:40 +01:00
parent 7adc2b7059
commit 261e2d8be5
3 changed files with 24 additions and 15 deletions

View File

@@ -19,6 +19,7 @@
A92538CD2DEE0744007E0A18 /* ShhShellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CB2DEE0744007E0A18 /* ShhShellTests.swift */; }; A92538CD2DEE0744007E0A18 /* ShhShellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CB2DEE0744007E0A18 /* ShhShellTests.swift */; };
A92538D12DEE0745007E0A18 /* ShhShellUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CE2DEE0745007E0A18 /* ShhShellUITests.swift */; }; A92538D12DEE0745007E0A18 /* ShhShellUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CE2DEE0745007E0A18 /* ShhShellUITests.swift */; };
A92538D22DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CF2DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift */; }; A92538D22DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92538CF2DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift */; };
A95FAA452DF3870B00DE2F5A /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A95FAA442DF3870A00DE2F5A /* libssh2.xcframework */; };
A9C897EF2DF1A9A400EF9A5F /* SSHHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C897EE2DF1A9A400EF9A5F /* SSHHandler.swift */; }; A9C897EF2DF1A9A400EF9A5F /* SSHHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C897EE2DF1A9A400EF9A5F /* SSHHandler.swift */; };
A9C897F12DF1AB5700EF9A5F /* ShellHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C897F02DF1AB5700EF9A5F /* ShellHandler.swift */; }; A9C897F12DF1AB5700EF9A5F /* ShellHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C897F02DF1AB5700EF9A5F /* ShellHandler.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@@ -68,6 +69,7 @@
A92538CB2DEE0744007E0A18 /* ShhShellTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellTests.swift; sourceTree = "<group>"; }; A92538CB2DEE0744007E0A18 /* ShhShellTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellTests.swift; sourceTree = "<group>"; };
A92538CE2DEE0745007E0A18 /* ShhShellUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellUITests.swift; sourceTree = "<group>"; }; A92538CE2DEE0745007E0A18 /* ShhShellUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellUITests.swift; sourceTree = "<group>"; };
A92538CF2DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellUITestsLaunchTests.swift; sourceTree = "<group>"; }; A92538CF2DEE0745007E0A18 /* ShhShellUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShhShellUITestsLaunchTests.swift; sourceTree = "<group>"; };
A95FAA442DF3870A00DE2F5A /* libssh2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssh2.xcframework; path = ../blink/xcfs/.build/artifacts/xcfs/libssh2/libssh2.xcframework; sourceTree = SOURCE_ROOT; };
A9C897EE2DF1A9A400EF9A5F /* SSHHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSHHandler.swift; sourceTree = "<group>"; }; A9C897EE2DF1A9A400EF9A5F /* SSHHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSHHandler.swift; sourceTree = "<group>"; };
A9C897F02DF1AB5700EF9A5F /* ShellHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShellHandler.swift; sourceTree = "<group>"; }; A9C897F02DF1AB5700EF9A5F /* ShellHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShellHandler.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@@ -79,6 +81,7 @@
files = ( files = (
A9083E372DF221AE0042906E /* LibSSH.xcframework in Frameworks */, A9083E372DF221AE0042906E /* LibSSH.xcframework in Frameworks */,
A9083E402DF2226F0042906E /* libz.tbd in Frameworks */, A9083E402DF2226F0042906E /* libz.tbd in Frameworks */,
A95FAA452DF3870B00DE2F5A /* libssh2.xcframework in Frameworks */,
A9083E412DF222920042906E /* openssl.xcframework in Frameworks */, A9083E412DF222920042906E /* openssl.xcframework in Frameworks */,
A9083E322DF2214A0042906E /* LibSSH.xcframework in Frameworks */, A9083E322DF2214A0042906E /* LibSSH.xcframework in Frameworks */,
); );
@@ -173,6 +176,7 @@
A9083E3F2DF2225A0042906E /* libz.tbd */, A9083E3F2DF2225A0042906E /* libz.tbd */,
A9083E342DF2218D0042906E /* openssl.xcframework */, A9083E342DF2218D0042906E /* openssl.xcframework */,
A9083E312DF2214A0042906E /* LibSSH.xcframework */, A9083E312DF2214A0042906E /* LibSSH.xcframework */,
A95FAA442DF3870A00DE2F5A /* libssh2.xcframework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";

View File

@@ -12,6 +12,7 @@ import OSLog
class SSHHandler: ObservableObject { class SSHHandler: ObservableObject {
var session: ssh_session? var session: ssh_session?
@Published var authorized: Bool = false
@Published var username: String @Published var username: String
@Published var password: String @Published var password: String
@Published var address: String @Published var address: String
@@ -25,16 +26,16 @@ class SSHHandler: ObservableObject {
address: String = "", address: String = "",
port: Int = 22 port: Int = 22
) { ) {
#if DEBUG
self.username = "root"
self.password = "root"
self.address = "localhost"
self.port = 2222
#endif
self.username = username self.username = username
self.password = password self.password = password
self.address = address self.address = address
self.port = port self.port = port
#if DEBUG
self.username = "root"
self.password = "root"
self.address = "localhost"
self.port = 2222
#endif
} }
func getHostkey() { func getHostkey() {
@@ -82,6 +83,8 @@ class SSHHandler: ObservableObject {
} }
ssh_disconnect(session) ssh_disconnect(session)
ssh_free(session) ssh_free(session)
session = nil
authorized = false
} }
func testExec() -> Bool { func testExec() -> Bool {
@@ -91,7 +94,7 @@ class SSHHandler: ObservableObject {
} }
} }
guard authWithPw() else { return false } guard authorized else { return false }
var status: CInt var status: CInt
var buffer: [Int] = Array(repeating: 0, count: 256) var buffer: [Int] = Array(repeating: 0, count: 256)
@@ -158,18 +161,20 @@ class SSHHandler: ObservableObject {
logSshGetError() logSshGetError()
return false return false
} }
authorized = true
return true return true
} }
func authWithPw() -> Bool { func authWithPw() -> Bool {
var status: CInt var status: CInt
status = ssh_userauth_password(session, username, password) status = ssh_userauth_password(session, username, password)
guard status != SSH_AUTH_SUCCESS.rawValue else { guard status == SSH_AUTH_SUCCESS.rawValue else {
print("ssh pw auth error") print("ssh pw auth error")
logSshGetError() logSshGetError()
return false return false
} }
print("auth success") print("auth success")
authorized = true
return true return true
} }
@@ -222,17 +227,17 @@ class SSHHandler: ObservableObject {
} }
status = ssh_userauth_kbdint(session, nil, nil) status = ssh_userauth_kbdint(session, nil, nil)
} }
authorized = true
return true return true
} }
func authWithNone() -> Bool { func authWithNone() -> Bool {
let status = ssh_userauth_none(session, nil) let status = ssh_userauth_none(session, nil)
if status == SSH_AUTH_SUCCESS.rawValue { guard status == SSH_AUTH_SUCCESS.rawValue else { return false }
print("no security moment lol")
return true print("no security moment lol")
} else { authorized = true
return false return true
}
} }
func getAuthMethods() { func getAuthMethods() {

View File

@@ -31,7 +31,7 @@ struct ContentView: View {
handler.connect() handler.connect()
handler.authWithPw() handler.authWithPw()
} }
Button("disconnect & free") { Button("disconnect") {
handler.disconnect() handler.disconnect()
} }
Button("testExec") { Button("testExec") {