hrr_rb_ssh 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/demo/client.rb +7 -0
- data/demo/echo_server.rb +7 -0
- data/demo/more_flexible_auth.rb +8 -0
- data/demo/multi_step_auth.rb +8 -0
- data/demo/server.rb +8 -0
- data/demo/subsystem_echo_server.rb +7 -0
- data/lib/hrr_rb_ssh/authentication.rb +14 -4
- data/lib/hrr_rb_ssh/connection.rb +9 -3
- data/lib/hrr_rb_ssh/error/closed_authentication.rb +1 -1
- data/lib/hrr_rb_ssh/error/closed_connection.rb +1 -1
- data/lib/hrr_rb_ssh/error/closed_transport.rb +1 -1
- data/lib/hrr_rb_ssh/server.rb +5 -1
- data/lib/hrr_rb_ssh/transport.rb +9 -1
- data/lib/hrr_rb_ssh/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec455249771885393139c2cbe162fa253e5416d2c9bf27478d20073027bf2f18
|
4
|
+
data.tar.gz: 6f73965ad0835b838ea26dfa496961d2c52052068957b963e8a02ef735e4f0c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a94383816e8e2fb807a0db84190c07d2c11614169d2ccb4755673b838d273a1b2168beef44ebd7c8028401af618b08075ae4f811d1b02213457a69d0ffe75b5b
|
7
|
+
data.tar.gz: 659d58c1b86649825764f7db02eeb243ac6c07b458f4407b78f9fb0108b3d1aa58ab1edc0fe6c77ea6989bafcad48c2d56456c8f74c1107e5a4c1ffff3adb307
|
data/demo/client.rb
CHANGED
@@ -10,8 +10,15 @@ rescue LoadError
|
|
10
10
|
require 'hrr_rb_ssh'
|
11
11
|
end
|
12
12
|
|
13
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
14
|
+
def call severity, time, progname, msg
|
15
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
13
19
|
logger = Logger.new STDOUT
|
14
20
|
logger.level = Logger::DEBUG
|
21
|
+
logger.formatter = MyLoggerFormatter.new
|
15
22
|
|
16
23
|
target = ['localhost', 10022]
|
17
24
|
options = {
|
data/demo/echo_server.rb
CHANGED
@@ -41,8 +41,15 @@ def start_service io, logger=nil
|
|
41
41
|
server.start io
|
42
42
|
end
|
43
43
|
|
44
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
45
|
+
def call severity, time, progname, msg
|
46
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
44
50
|
logger = Logger.new STDOUT
|
45
51
|
logger.level = Logger::INFO
|
52
|
+
logger.formatter = MyLoggerFormatter.new
|
46
53
|
|
47
54
|
server = TCPServer.new 10022
|
48
55
|
loop do
|
data/demo/more_flexible_auth.rb
CHANGED
@@ -69,8 +69,16 @@ def start_service io, logger=nil
|
|
69
69
|
end
|
70
70
|
|
71
71
|
|
72
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
73
|
+
def call severity, time, progname, msg
|
74
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
72
79
|
logger = Logger.new STDOUT
|
73
80
|
logger.level = Logger::INFO
|
81
|
+
logger.formatter = MyLoggerFormatter.new
|
74
82
|
|
75
83
|
server = TCPServer.new 10022
|
76
84
|
loop do
|
data/demo/multi_step_auth.rb
CHANGED
@@ -63,8 +63,16 @@ def start_service io, logger=nil
|
|
63
63
|
end
|
64
64
|
|
65
65
|
|
66
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
67
|
+
def call severity, time, progname, msg
|
68
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
66
73
|
logger = Logger.new STDOUT
|
67
74
|
logger.level = Logger::INFO
|
75
|
+
logger.formatter = MyLoggerFormatter.new
|
68
76
|
|
69
77
|
server = TCPServer.new 10022
|
70
78
|
loop do
|
data/demo/server.rb
CHANGED
@@ -92,8 +92,16 @@ OfeosJOO9twerD7pPhmXREkygblPsEXaVA==
|
|
92
92
|
end
|
93
93
|
|
94
94
|
|
95
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
96
|
+
def call severity, time, progname, msg
|
97
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
95
102
|
logger = Logger.new STDOUT
|
96
103
|
logger.level = Logger::INFO
|
104
|
+
logger.formatter = MyLoggerFormatter.new
|
97
105
|
|
98
106
|
server = TCPServer.new 10022
|
99
107
|
loop do
|
@@ -49,8 +49,15 @@ def start_service io, logger=nil
|
|
49
49
|
server.start io
|
50
50
|
end
|
51
51
|
|
52
|
+
class MyLoggerFormatter < ::Logger::Formatter
|
53
|
+
def call severity, time, progname, msg
|
54
|
+
"%s, [%s#%d.%x] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), Process.pid, Thread.current.object_id, severity, progname, msg2str(msg)]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
52
58
|
logger = Logger.new STDOUT
|
53
59
|
logger.level = Logger::INFO
|
60
|
+
logger.formatter = MyLoggerFormatter.new
|
54
61
|
|
55
62
|
server = TCPServer.new 10022
|
56
63
|
while true
|
@@ -33,6 +33,7 @@ module HrrRbSsh
|
|
33
33
|
begin
|
34
34
|
@transport.send payload
|
35
35
|
rescue Error::ClosedTransport
|
36
|
+
close
|
36
37
|
raise Error::ClosedAuthentication
|
37
38
|
end
|
38
39
|
end
|
@@ -42,19 +43,28 @@ module HrrRbSsh
|
|
42
43
|
begin
|
43
44
|
@transport.receive
|
44
45
|
rescue Error::ClosedTransport
|
46
|
+
close
|
45
47
|
raise Error::ClosedAuthentication
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
49
51
|
def start
|
50
|
-
|
51
|
-
|
52
|
+
log_info { "start authentication" }
|
53
|
+
begin
|
54
|
+
@transport.start
|
55
|
+
authenticate
|
56
|
+
rescue Error::ClosedTransport
|
57
|
+
close
|
58
|
+
raise Error::ClosedAuthentication
|
59
|
+
end
|
52
60
|
end
|
53
61
|
|
54
62
|
def close
|
55
63
|
return if @closed
|
64
|
+
log_info { "close authentication" }
|
56
65
|
@closed = true
|
57
66
|
@transport.close
|
67
|
+
log_info { "authentication closed" }
|
58
68
|
end
|
59
69
|
|
60
70
|
def closed?
|
@@ -121,8 +131,8 @@ module HrrRbSsh
|
|
121
131
|
send_userauth_failure authentication_methods, false
|
122
132
|
end
|
123
133
|
else
|
124
|
-
|
125
|
-
raise
|
134
|
+
close
|
135
|
+
raise Error::ClosedAuthentication
|
126
136
|
end
|
127
137
|
end
|
128
138
|
end
|
@@ -49,7 +49,12 @@ module HrrRbSsh
|
|
49
49
|
|
50
50
|
def start foreground: true
|
51
51
|
log_info { "start connection" }
|
52
|
-
|
52
|
+
begin
|
53
|
+
@authentication.start
|
54
|
+
rescue Error::ClosedAuthentication
|
55
|
+
close
|
56
|
+
raise Error::ClosedConnection
|
57
|
+
end
|
53
58
|
@closed = false
|
54
59
|
@connection_loop_thread = connection_loop_thread
|
55
60
|
if foreground
|
@@ -62,7 +67,8 @@ module HrrRbSsh
|
|
62
67
|
end
|
63
68
|
|
64
69
|
def close
|
65
|
-
|
70
|
+
return if @closed
|
71
|
+
log_info { "close connection" }
|
66
72
|
@closed = true
|
67
73
|
@authentication.close
|
68
74
|
@channels.values.each do |channel|
|
@@ -74,7 +80,7 @@ module HrrRbSsh
|
|
74
80
|
end
|
75
81
|
@channels.clear
|
76
82
|
@global_request_handler.close
|
77
|
-
@connection_loop_thread.join
|
83
|
+
@connection_loop_thread.join if @connection_loop_thread && @connection_loop_thread != Thread.current
|
78
84
|
log_info { "connection closed" }
|
79
85
|
end
|
80
86
|
|
data/lib/hrr_rb_ssh/server.rb
CHANGED
@@ -25,7 +25,11 @@ module HrrRbSsh
|
|
25
25
|
transport = Transport.new io, Mode::SERVER, @options, logger: logger
|
26
26
|
authentication = Authentication.new transport, Mode::SERVER, @options, logger: logger
|
27
27
|
connection = Connection.new authentication, Mode::SERVER, @options, logger: logger
|
28
|
-
|
28
|
+
begin
|
29
|
+
connection.start
|
30
|
+
rescue Error::ClosedConnection
|
31
|
+
end
|
32
|
+
log_info { "server service finished" }
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
data/lib/hrr_rb_ssh/transport.rb
CHANGED
@@ -174,11 +174,16 @@ module HrrRbSsh
|
|
174
174
|
end
|
175
175
|
|
176
176
|
@closed = false
|
177
|
+
rescue Error::ClosedTransport
|
178
|
+
close
|
179
|
+
raise Error::ClosedTransport
|
177
180
|
rescue EOFError => e
|
178
181
|
close
|
182
|
+
raise Error::ClosedTransport
|
179
183
|
rescue => e
|
180
184
|
log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
|
181
185
|
close
|
186
|
+
raise Error::ClosedTransport
|
182
187
|
else
|
183
188
|
log_info { "transport started" }
|
184
189
|
end
|
@@ -204,12 +209,15 @@ module HrrRbSsh
|
|
204
209
|
@disconnected = true
|
205
210
|
begin
|
206
211
|
send_disconnect
|
212
|
+
rescue Error::ClosedTransport
|
213
|
+
log_warn { "Transport is closed" }
|
207
214
|
rescue IOError
|
208
215
|
log_warn { "IO is closed" }
|
209
216
|
rescue => e
|
210
217
|
log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
|
218
|
+
ensure
|
219
|
+
log_info { "transport disconnected" }
|
211
220
|
end
|
212
|
-
log_info { "transport disconnected" }
|
213
221
|
end
|
214
222
|
|
215
223
|
def exchange_version
|
data/lib/hrr_rb_ssh/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hrr_rb_ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hirura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|