@@ -28,10 +28,13 @@ public extension SSH {
28
28
/// 该方法是检查后会释放会话
29
29
/// - Returns: 如果服务器响应包含有效的SSH版本字符串,则返回true,否则返回false
30
30
func checkServerAvaila( ) async -> Bool {
31
- await call {
32
- defer {
33
- self . close ( )
34
- }
31
+ guard await connect ( ) else {
32
+ return false
33
+ }
34
+ defer {
35
+ self . close ( . socket)
36
+ }
37
+ return await call {
35
38
guard var c = " SSH-2.0-SSH2.app " . trimmingCharacters ( in: . whitespacesAndNewlines) . data ( using: . ascii) else {
36
39
return false
37
40
}
@@ -44,21 +47,16 @@ public extension SSH {
44
47
defer {
45
48
buffer. deallocate ( )
46
49
}
47
- for _ in 0 ... 255 {
50
+ for _ in 0 ... 3 {
48
51
guard io. read ( self . sockfd, buffer, 1 ) == 1 else {
49
52
return false
50
53
}
51
- guard buffer. pointee != 0x0A else {
52
- break
53
- }
54
54
data. append ( buffer, count: 1 )
55
55
}
56
- if data. count > 0 , data. last == 0x0D {
57
- data = data [ 0 ... data. count - 1 ]
58
- }
59
- guard let versionString = String ( data: data, encoding: . ascii) , versionString. hasPrefix ( " SSH- " ) else {
56
+ guard let versionString = String ( data: data, encoding: . ascii) , versionString == " SSH- " else {
60
57
return false
61
58
}
59
+ print ( versionString)
62
60
return true
63
61
}
64
62
}
@@ -86,7 +84,7 @@ public extension SSH {
86
84
}
87
85
SSH . getSSH ( from: sess) ? . trace ( message: message, messageLen: messageLen)
88
86
}
89
-
87
+
90
88
libssh2_init ( 0 )
91
89
rawSession = libssh2_session_init_ex ( nil , nil , nil , Unmanaged . passUnretained ( self ) . toOpaque ( ) )
92
90
@@ -101,7 +99,7 @@ public extension SSH {
101
99
libssh2_session_flag ( rawSession, LIBSSH2_FLAG_SIGPIPE, 1 )
102
100
libssh2_session_flag ( rawSession, LIBSSH2_FLAG_QUOTE_PATHS, 1 )
103
101
104
- // libssh2_session_set_read_timeout(self. rawSession, self. timeout)
102
+ libssh2_session_set_timeout ( rawSession, timeout * 1000 )
105
103
// libssh2_session_set_timeout(self.rawSession, self.timeout)
106
104
107
105
libssh2_session_banner_set ( rawSession, banner. isEmpty ? " SSH-2.0-libssh2_SSH2.app " : banner)
0 commit comments