hrr_rb_ssh 0.4.0.pre1 → 0.4.0.pre2

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -8
  3. data/demo/client.rb +1 -3
  4. data/demo/echo_server.rb +1 -3
  5. data/demo/more_flexible_auth.rb +1 -3
  6. data/demo/multi_step_auth.rb +1 -3
  7. data/demo/server.rb +1 -3
  8. data/demo/subsystem_echo_server.rb +1 -3
  9. data/hrr_rb_ssh.gemspec +1 -1
  10. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2.rb +12 -9
  11. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_dss.rb +10 -7
  12. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa.rb +9 -6
  13. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive/context.rb +9 -8
  14. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive/info_request.rb +6 -5
  15. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive/info_response.rb +5 -2
  16. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive.rb +12 -10
  17. data/lib/hrr_rb_ssh/authentication/method/none/context.rb +7 -6
  18. data/lib/hrr_rb_ssh/authentication/method/none.rb +10 -8
  19. data/lib/hrr_rb_ssh/authentication/method/password/context.rb +7 -6
  20. data/lib/hrr_rb_ssh/authentication/method/password.rb +10 -8
  21. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb +13 -11
  22. data/lib/hrr_rb_ssh/authentication/method/publickey/context.rb +5 -2
  23. data/lib/hrr_rb_ssh/authentication/method/publickey.rb +16 -14
  24. data/lib/hrr_rb_ssh/authentication.rb +28 -27
  25. data/lib/hrr_rb_ssh/client.rb +58 -56
  26. data/lib/hrr_rb_ssh/codable.rb +20 -10
  27. data/lib/hrr_rb_ssh/connection/channel/channel_type/direct_tcpip.rb +20 -18
  28. data/lib/hrr_rb_ssh/connection/channel/channel_type/forwarded_tcpip.rb +20 -18
  29. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain/chain_context.rb +0 -3
  30. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain.rb +0 -2
  31. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb +5 -4
  32. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb +2 -5
  33. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb +5 -4
  34. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb +2 -5
  35. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb +5 -4
  36. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb +2 -5
  37. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb +5 -4
  38. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb +2 -5
  39. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb +5 -4
  40. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb +2 -5
  41. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change/context.rb +5 -4
  42. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change.rb +2 -5
  43. data/lib/hrr_rb_ssh/connection/channel/channel_type/session.rb +14 -12
  44. data/lib/hrr_rb_ssh/connection/channel.rb +73 -71
  45. data/lib/hrr_rb_ssh/connection/global_request_handler.rb +14 -12
  46. data/lib/hrr_rb_ssh/connection/request_handler/reference_env_request_handler.rb +0 -2
  47. data/lib/hrr_rb_ssh/connection/request_handler/reference_exec_request_handler.rb +4 -6
  48. data/lib/hrr_rb_ssh/connection/request_handler/reference_pty_req_request_handler.rb +10 -12
  49. data/lib/hrr_rb_ssh/connection/request_handler/reference_shell_request_handler.rb +4 -6
  50. data/lib/hrr_rb_ssh/connection/request_handler/reference_window_change_request_handler.rb +0 -2
  51. data/lib/hrr_rb_ssh/connection/request_handler.rb +1 -3
  52. data/lib/hrr_rb_ssh/connection.rb +53 -53
  53. data/lib/hrr_rb_ssh/loggable.rb +42 -0
  54. data/lib/hrr_rb_ssh/server.rb +11 -9
  55. data/lib/hrr_rb_ssh/transport/compression_algorithm/functionable.rb +5 -3
  56. data/lib/hrr_rb_ssh/transport/compression_algorithm/unfunctionable.rb +5 -3
  57. data/lib/hrr_rb_ssh/transport/encryption_algorithm/functionable.rb +5 -3
  58. data/lib/hrr_rb_ssh/transport/encryption_algorithm/unfunctionable.rb +5 -3
  59. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb +9 -8
  60. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group_exchange.rb +13 -12
  61. data/lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman.rb +9 -8
  62. data/lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb +5 -3
  63. data/lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb +5 -3
  64. data/lib/hrr_rb_ssh/transport/receiver.rb +8 -7
  65. data/lib/hrr_rb_ssh/transport/sender.rb +5 -3
  66. data/lib/hrr_rb_ssh/transport/sequence_number.rb +0 -4
  67. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/functionable.rb +5 -3
  68. data/lib/hrr_rb_ssh/transport.rb +41 -40
  69. data/lib/hrr_rb_ssh/version.rb +1 -1
  70. data/lib/hrr_rb_ssh.rb +0 -1
  71. metadata +6 -6
  72. data/lib/hrr_rb_ssh/logger.rb +0 -56
@@ -2,7 +2,7 @@
2
2
  # vim: et ts=2 sw=2
3
3
 
4
4
  require 'openssl'
5
- require 'hrr_rb_ssh/logger'
5
+ require 'hrr_rb_ssh/loggable'
6
6
  require 'hrr_rb_ssh/data_type'
7
7
  require 'hrr_rb_ssh/transport/kex_algorithm/iv_computable'
8
8
 
@@ -10,10 +10,11 @@ module HrrRbSsh
10
10
  class Transport
11
11
  class KexAlgorithm
12
12
  module DiffieHellman
13
+ include Loggable
13
14
  include IvComputable
14
15
 
15
- def initialize
16
- @logger = Logger.new(self.class.name)
16
+ def initialize logger: nil
17
+ self.logger = logger
17
18
  @dh = OpenSSL::PKey::DH.new
18
19
  if @dh.respond_to?(:set_pqg)
19
20
  @dh.set_pqg OpenSSL::BN.new(self.class::P, 16), nil, OpenSSL::BN.new(self.class::G)
@@ -59,7 +60,7 @@ module HrrRbSsh
59
60
  :'f' => @f,
60
61
  :'k' => @shared_secret,
61
62
  }
62
- h0 = H0.encode h0_payload
63
+ h0 = H0.encode h0_payload, logger: logger
63
64
  h = OpenSSL::Digest.digest self.class::DIGEST, h0
64
65
  end
65
66
 
@@ -69,7 +70,7 @@ module HrrRbSsh
69
70
  end
70
71
 
71
72
  def receive_kexdh_init payload
72
- Message::SSH_MSG_KEXDH_INIT.decode payload
73
+ Message::SSH_MSG_KEXDH_INIT.decode payload, logger: logger
73
74
  end
74
75
 
75
76
  def send_kexdh_reply transport
@@ -79,7 +80,7 @@ module HrrRbSsh
79
80
  :'f' => @f,
80
81
  :'signature of H' => sign(transport),
81
82
  }
82
- payload = Message::SSH_MSG_KEXDH_REPLY.encode message
83
+ payload = Message::SSH_MSG_KEXDH_REPLY.encode message, logger: logger
83
84
  transport.send payload
84
85
  end
85
86
 
@@ -88,12 +89,12 @@ module HrrRbSsh
88
89
  :'message number' => Message::SSH_MSG_KEXDH_INIT::VALUE,
89
90
  :'e' => @e,
90
91
  }
91
- payload = Message::SSH_MSG_KEXDH_INIT.encode message
92
+ payload = Message::SSH_MSG_KEXDH_INIT.encode message, logger: logger
92
93
  transport.send payload
93
94
  end
94
95
 
95
96
  def receive_kexdh_reply payload
96
- Message::SSH_MSG_KEXDH_REPLY.decode payload
97
+ Message::SSH_MSG_KEXDH_REPLY.decode payload, logger: logger
97
98
  end
98
99
  end
99
100
  end
@@ -2,7 +2,7 @@
2
2
  # vim: et ts=2 sw=2
3
3
 
4
4
  require 'openssl'
5
- require 'hrr_rb_ssh/logger'
5
+ require 'hrr_rb_ssh/loggable'
6
6
  require 'hrr_rb_ssh/data_type'
7
7
  require 'hrr_rb_ssh/transport/kex_algorithm/iv_computable'
8
8
 
@@ -10,10 +10,11 @@ module HrrRbSsh
10
10
  class Transport
11
11
  class KexAlgorithm
12
12
  module DiffieHellmanGroupExchange
13
+ include Loggable
13
14
  include IvComputable
14
15
 
15
- def initialize
16
- @logger = Logger.new(self.class.name)
16
+ def initialize logger: nil
17
+ self.logger = logger
17
18
  end
18
19
 
19
20
  def start transport
@@ -91,7 +92,7 @@ module HrrRbSsh
91
92
  :'f' => @f,
92
93
  :'k' => @shared_secret,
93
94
  }
94
- h0 = H0.encode h0_payload
95
+ h0 = H0.encode h0_payload, logger: logger
95
96
  h = OpenSSL::Digest.digest self.class::DIGEST, h0
96
97
  end
97
98
 
@@ -101,7 +102,7 @@ module HrrRbSsh
101
102
  end
102
103
 
103
104
  def receive_kex_dh_gex_request payload
104
- Message::SSH_MSG_KEX_DH_GEX_REQUEST.decode payload
105
+ Message::SSH_MSG_KEX_DH_GEX_REQUEST.decode payload, logger: logger
105
106
  end
106
107
 
107
108
  def send_kex_dh_gex_group transport
@@ -110,12 +111,12 @@ module HrrRbSsh
110
111
  :'p' => @p,
111
112
  :'g' => @g,
112
113
  }
113
- payload = Message::SSH_MSG_KEX_DH_GEX_GROUP.encode message
114
+ payload = Message::SSH_MSG_KEX_DH_GEX_GROUP.encode message, logger: logger
114
115
  transport.send payload
115
116
  end
116
117
 
117
118
  def receive_kex_dh_gex_init payload
118
- Message::SSH_MSG_KEX_DH_GEX_INIT.decode payload
119
+ Message::SSH_MSG_KEX_DH_GEX_INIT.decode payload, logger: logger
119
120
  end
120
121
 
121
122
  def send_kex_dh_gex_reply transport
@@ -125,7 +126,7 @@ module HrrRbSsh
125
126
  :'f' => @f,
126
127
  :'signature of H' => sign(transport),
127
128
  }
128
- payload = Message::SSH_MSG_KEX_DH_GEX_REPLY.encode message
129
+ payload = Message::SSH_MSG_KEX_DH_GEX_REPLY.encode message, logger: logger
129
130
  transport.send payload
130
131
  end
131
132
 
@@ -136,12 +137,12 @@ module HrrRbSsh
136
137
  :'n' => @n,
137
138
  :'max' => @max,
138
139
  }
139
- payload = Message::SSH_MSG_KEX_DH_GEX_REQUEST.encode message
140
+ payload = Message::SSH_MSG_KEX_DH_GEX_REQUEST.encode message, logger: logger
140
141
  transport.send payload
141
142
  end
142
143
 
143
144
  def receive_kex_dh_gex_group payload
144
- Message::SSH_MSG_KEX_DH_GEX_GROUP.decode payload
145
+ Message::SSH_MSG_KEX_DH_GEX_GROUP.decode payload, logger: logger
145
146
  end
146
147
 
147
148
  def send_kex_dh_gex_init transport
@@ -149,12 +150,12 @@ module HrrRbSsh
149
150
  :'message number' => Message::SSH_MSG_KEX_DH_GEX_INIT::VALUE,
150
151
  :'e' => @e,
151
152
  }
152
- payload = Message::SSH_MSG_KEX_DH_GEX_INIT.encode message
153
+ payload = Message::SSH_MSG_KEX_DH_GEX_INIT.encode message, logger: logger
153
154
  transport.send payload
154
155
  end
155
156
 
156
157
  def receive_kex_dh_gex_reply payload
157
- Message::SSH_MSG_KEX_DH_GEX_REPLY.decode payload
158
+ Message::SSH_MSG_KEX_DH_GEX_REPLY.decode payload, logger: logger
158
159
  end
159
160
  end
160
161
  end
@@ -2,7 +2,7 @@
2
2
  # vim: et ts=2 sw=2
3
3
 
4
4
  require 'openssl'
5
- require 'hrr_rb_ssh/logger'
5
+ require 'hrr_rb_ssh/loggable'
6
6
  require 'hrr_rb_ssh/data_type'
7
7
  require 'hrr_rb_ssh/transport/kex_algorithm/iv_computable'
8
8
 
@@ -10,10 +10,11 @@ module HrrRbSsh
10
10
  class Transport
11
11
  class KexAlgorithm
12
12
  module EllipticCurveDiffieHellman
13
+ include Loggable
13
14
  include IvComputable
14
15
 
15
- def initialize
16
- @logger = Logger.new(self.class.name)
16
+ def initialize logger: nil
17
+ self.logger = logger
17
18
  @dh = OpenSSL::PKey::EC.new(self.class::CURVE_NAME)
18
19
  @dh.generate_key
19
20
  @public_key = @dh.public_key.to_bn.to_i
@@ -53,7 +54,7 @@ module HrrRbSsh
53
54
  :'Q_S' => @q_s,
54
55
  :'K' => @shared_secret,
55
56
  }
56
- h0 = H0.encode h0_payload
57
+ h0 = H0.encode h0_payload, logger: logger
57
58
  h = OpenSSL::Digest.digest self.class::DIGEST, h0
58
59
  end
59
60
 
@@ -63,7 +64,7 @@ module HrrRbSsh
63
64
  end
64
65
 
65
66
  def receive_kexecdh_init payload
66
- Message::SSH_MSG_KEXECDH_INIT.decode payload
67
+ Message::SSH_MSG_KEXECDH_INIT.decode payload, logger: logger
67
68
  end
68
69
 
69
70
  def send_kexecdh_reply transport
@@ -73,7 +74,7 @@ module HrrRbSsh
73
74
  :'Q_S' => @q_s,
74
75
  :'signature of H' => sign(transport),
75
76
  }
76
- payload = Message::SSH_MSG_KEXECDH_REPLY.encode message
77
+ payload = Message::SSH_MSG_KEXECDH_REPLY.encode message, logger: logger
77
78
  transport.send payload
78
79
  end
79
80
 
@@ -82,12 +83,12 @@ module HrrRbSsh
82
83
  :'message number' => Message::SSH_MSG_KEXECDH_INIT::VALUE,
83
84
  :'Q_C' => @q_c,
84
85
  }
85
- payload = Message::SSH_MSG_KEXECDH_INIT.encode message
86
+ payload = Message::SSH_MSG_KEXECDH_INIT.encode message, logger: logger
86
87
  transport.send payload
87
88
  end
88
89
 
89
90
  def receive_kexecdh_reply payload
90
- Message::SSH_MSG_KEXECDH_REPLY.decode payload
91
+ Message::SSH_MSG_KEXECDH_REPLY.decode payload, logger: logger
91
92
  end
92
93
  end
93
94
  end
@@ -1,14 +1,16 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
4
+ require 'hrr_rb_ssh/loggable'
5
5
 
6
6
  module HrrRbSsh
7
7
  class Transport
8
8
  class MacAlgorithm
9
9
  module Functionable
10
- def initialize key
11
- @logger = Logger.new(self.class.name)
10
+ include Loggable
11
+
12
+ def initialize key, logger: nil
13
+ self.logger = logger
12
14
  @key = key
13
15
  end
14
16
 
@@ -1,14 +1,16 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
4
+ require 'hrr_rb_ssh/loggable'
5
5
 
6
6
  module HrrRbSsh
7
7
  class Transport
8
8
  class MacAlgorithm
9
9
  module Unfunctionable
10
- def initialize key=nil
11
- @logger = Logger.new(self.class.name)
10
+ include Loggable
11
+
12
+ def initialize key=nil, logger: nil
13
+ self.logger = logger
12
14
  end
13
15
 
14
16
  def digest_length
@@ -1,14 +1,15 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
5
- #require 'hrr_rb_ssh/transport/packet'
4
+ require 'hrr_rb_ssh/loggable'
6
5
 
7
6
  module HrrRbSsh
8
7
  class Transport
9
8
  class Receiver
10
- def initialize
11
- @logger = Logger.new self.class.name
9
+ include Loggable
10
+
11
+ def initialize logger: nil
12
+ self.logger = logger
12
13
  end
13
14
 
14
15
  def depacketize transport, packet
@@ -34,7 +35,7 @@ module HrrRbSsh
34
35
  block_size = [transport.incoming_encryption_algorithm.block_size, minimum_block_size].max
35
36
  encrypted_packet.push transport.io.read(block_size)
36
37
  if (encrypted_packet.last == nil) || (encrypted_packet.last.length != block_size)
37
- @logger.warn { "IO is EOF" }
38
+ log_warn { "IO is EOF" }
38
39
  raise EOFError
39
40
  end
40
41
  unencrypted_packet.push transport.incoming_encryption_algorithm.decrypt(encrypted_packet.last)
@@ -43,7 +44,7 @@ module HrrRbSsh
43
44
  following_packet_length = packet_length_field_length + packet_length - block_size
44
45
  encrypted_packet.push transport.io.read(following_packet_length)
45
46
  if (encrypted_packet.last == nil) || (encrypted_packet.last.length != following_packet_length)
46
- @logger.warn { "IO is EOF" }
47
+ log_warn { "IO is EOF" }
47
48
  raise EOFError
48
49
  end
49
50
  unencrypted_packet.push transport.incoming_encryption_algorithm.decrypt(encrypted_packet.last)
@@ -55,7 +56,7 @@ module HrrRbSsh
55
56
  mac_length = transport.incoming_mac_algorithm.digest_length
56
57
  mac = transport.io.read mac_length
57
58
  if (mac == nil) || (mac.length != mac_length)
58
- @logger.warn { "IO is EOF" }
59
+ log_warn { "IO is EOF" }
59
60
  raise EOFError
60
61
  end
61
62
  mac
@@ -1,13 +1,15 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
4
+ require 'hrr_rb_ssh/loggable'
5
5
 
6
6
  module HrrRbSsh
7
7
  class Transport
8
8
  class Sender
9
- def initialize
10
- @logger = Logger.new self.class.name
9
+ include Loggable
10
+
11
+ def initialize logger: nil
12
+ self.logger = logger
11
13
  end
12
14
 
13
15
  def packetize transport, payload
@@ -1,8 +1,6 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
5
-
6
4
  module HrrRbSsh
7
5
  class Transport
8
6
  class SequenceNumber
@@ -10,8 +8,6 @@ module HrrRbSsh
10
8
 
11
9
  def initialize
12
10
  @sequence_number = 0
13
-
14
- @logger = Logger.new self.class.name
15
11
  end
16
12
 
17
13
  def increment
@@ -1,14 +1,16 @@
1
1
  # coding: utf-8
2
2
  # vim: et ts=2 sw=2
3
3
 
4
- require 'hrr_rb_ssh/logger'
4
+ require 'hrr_rb_ssh/loggable'
5
5
 
6
6
  module HrrRbSsh
7
7
  class Transport
8
8
  class ServerHostKeyAlgorithm
9
9
  module Functionable
10
- def initialize secret_key=nil
11
- @logger = Logger.new(self.class.name)
10
+ include Loggable
11
+
12
+ def initialize secret_key=nil, logger: nil
13
+ self.logger = logger
12
14
  @publickey = Algorithm::Publickey[self.class::NAME].new (secret_key || self.class::SECRET_KEY)
13
15
  end
14
16
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'monitor'
5
5
  require 'hrr_rb_ssh/version'
6
- require 'hrr_rb_ssh/logger'
6
+ require 'hrr_rb_ssh/loggable'
7
7
  require 'hrr_rb_ssh/data_type'
8
8
  require 'hrr_rb_ssh/message'
9
9
  require 'hrr_rb_ssh/error/closed_transport'
@@ -20,6 +20,7 @@ require 'hrr_rb_ssh/transport/compression_algorithm'
20
20
 
21
21
  module HrrRbSsh
22
22
  class Transport
23
+ include Loggable
23
24
  include Constant
24
25
 
25
26
  attr_reader \
@@ -50,20 +51,20 @@ module HrrRbSsh
50
51
  :i_s,
51
52
  :session_id
52
53
 
53
- def initialize io, mode, options={}
54
+ def initialize io, mode, options={}, logger: nil
55
+ self.logger = logger
56
+
54
57
  @io = io
55
58
  @mode = mode
56
59
  @options = options
57
60
 
58
- @logger = Logger.new self.class.name
59
-
60
61
  @closed = nil
61
62
  @disconnected = nil
62
63
 
63
64
  @in_kex = false
64
65
 
65
- @sender = Sender.new
66
- @receiver = Receiver.new
66
+ @sender = Sender.new logger: logger
67
+ @receiver = Receiver.new logger: logger
67
68
 
68
69
  @sender_monitor = Monitor.new
69
70
  @receiver_monitor = Monitor.new
@@ -91,11 +92,11 @@ module HrrRbSsh
91
92
  begin
92
93
  @sender.send self, payload
93
94
  rescue Errno::EPIPE => e
94
- @logger.warn { "IO is Broken PIPE" }
95
+ log_warn { "IO is Broken PIPE" }
95
96
  close
96
97
  raise Error::ClosedTransport
97
98
  rescue => e
98
- @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
99
+ log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
99
100
  close
100
101
  raise Error::ClosedTransport
101
102
  end
@@ -109,25 +110,25 @@ module HrrRbSsh
109
110
  payload = @receiver.receive self
110
111
  case payload[0,1].unpack("C")[0]
111
112
  when Message::SSH_MSG_DISCONNECT::VALUE
112
- message = Message::SSH_MSG_DISCONNECT.decode payload
113
- @logger.debug { "received disconnect message: #{message.inspect}" }
113
+ message = Message::SSH_MSG_DISCONNECT.decode payload, logger: logger
114
+ log_debug { "received disconnect message: #{message.inspect}" }
114
115
  @disconnected = true
115
116
  close
116
117
  raise Error::ClosedTransport
117
118
  when Message::SSH_MSG_IGNORE::VALUE
118
- message = Message::SSH_MSG_IGNORE.decode payload
119
- @logger.debug { "received ignore message: #{message.inspect}" }
119
+ message = Message::SSH_MSG_IGNORE.decode payload, logger: logger
120
+ log_debug { "received ignore message: #{message.inspect}" }
120
121
  receive
121
122
  when Message::SSH_MSG_UNIMPLEMENTED::VALUE
122
- message = Message::SSH_MSG_UNIMPLEMENTED.decode payload
123
- @logger.debug { "received unimplemented message: #{message.inspect}" }
123
+ message = Message::SSH_MSG_UNIMPLEMENTED.decode payload, logger: logger
124
+ log_debug { "received unimplemented message: #{message.inspect}" }
124
125
  receive
125
126
  when Message::SSH_MSG_DEBUG::VALUE
126
- message = Message::SSH_MSG_DEBUG.decode payload
127
- @logger.debug { "received debug message: #{message.inspect}" }
127
+ message = Message::SSH_MSG_DEBUG.decode payload, logger: logger
128
+ log_debug { "received debug message: #{message.inspect}" }
128
129
  receive
129
130
  when Message::SSH_MSG_KEXINIT::VALUE
130
- @logger.debug { "received kexinit message" }
131
+ log_debug { "received kexinit message" }
131
132
  if @in_kex
132
133
  payload
133
134
  else
@@ -143,15 +144,15 @@ module HrrRbSsh
143
144
  close
144
145
  raise Error::ClosedTransport
145
146
  rescue IOError => e
146
- @logger.warn { "IO is closed" }
147
+ log_warn { "IO is closed" }
147
148
  close
148
149
  raise Error::ClosedTransport
149
150
  rescue Errno::ECONNRESET => e
150
- @logger.warn { "IO is RESET" }
151
+ log_warn { "IO is RESET" }
151
152
  close
152
153
  raise Error::ClosedTransport
153
154
  rescue => e
154
- @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
155
+ log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
155
156
  close
156
157
  raise Error::ClosedTransport
157
158
  end
@@ -159,7 +160,7 @@ module HrrRbSsh
159
160
  end
160
161
 
161
162
  def start
162
- @logger.info { "start transport" }
163
+ log_info { "start transport" }
163
164
 
164
165
  begin
165
166
  exchange_version
@@ -176,21 +177,21 @@ module HrrRbSsh
176
177
  rescue EOFError => e
177
178
  close
178
179
  rescue => e
179
- @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
180
+ log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
180
181
  close
181
182
  else
182
- @logger.info { "transport started" }
183
+ log_info { "transport started" }
183
184
  end
184
185
  end
185
186
 
186
187
  def close
187
188
  return if @closed
188
- @logger.info { "close transport" }
189
+ log_info { "close transport" }
189
190
  @closed = true
190
191
  disconnect
191
192
  @incoming_compression_algorithm.close
192
193
  @outgoing_compression_algorithm.close
193
- @logger.info { "transport closed" }
194
+ log_info { "transport closed" }
194
195
  end
195
196
 
196
197
  def closed?
@@ -199,16 +200,16 @@ module HrrRbSsh
199
200
 
200
201
  def disconnect
201
202
  return if @disconnected
202
- @logger.info { "disconnect transport" }
203
+ log_info { "disconnect transport" }
203
204
  @disconnected = true
204
205
  begin
205
206
  send_disconnect
206
207
  rescue IOError
207
- @logger.warn { "IO is closed" }
208
+ log_warn { "IO is closed" }
208
209
  rescue => e
209
- @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
210
+ log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
210
211
  end
211
- @logger.info { "transport disconnected" }
212
+ log_info { "transport disconnected" }
212
213
  end
213
214
 
214
215
  def exchange_version
@@ -317,10 +318,10 @@ module HrrRbSsh
317
318
  if str_io.string[-2..-1] == "#{CR}#{LF}"
318
319
  if str_io.string[0..3] == "SSH-"
319
320
  @remote_version = str_io.string[0..-3]
320
- @logger.info { "received remote version string: #{@remote_version}" }
321
+ log_info { "received remote version string: #{@remote_version}" }
321
322
  break
322
323
  else
323
- @logger.info { "received message before remote version string: #{str_io.string}" }
324
+ log_info { "received message before remote version string: #{str_io.string}" }
324
325
  str_io.rewind
325
326
  str_io.truncate(0)
326
327
  end
@@ -346,7 +347,7 @@ module HrrRbSsh
346
347
  :'description' => "disconnected by user",
347
348
  :'language tag' => ""
348
349
  }
349
- payload = Message::SSH_MSG_DISCONNECT.encode message
350
+ payload = Message::SSH_MSG_DISCONNECT.encode message, logger: logger
350
351
  send payload
351
352
  end
352
353
 
@@ -367,7 +368,7 @@ module HrrRbSsh
367
368
  :'first_kex_packet_follows' => false,
368
369
  :'0 (reserved for future extension)' => 0,
369
370
  }
370
- payload = Message::SSH_MSG_KEXINIT.encode message
371
+ payload = Message::SSH_MSG_KEXINIT.encode message, logger: logger
371
372
  send payload
372
373
 
373
374
  case @mode
@@ -385,7 +386,7 @@ module HrrRbSsh
385
386
  when Mode::CLIENT
386
387
  @i_s = payload
387
388
  end
388
- message = Message::SSH_MSG_KEXINIT.decode payload
389
+ message = Message::SSH_MSG_KEXINIT.decode payload, logger: logger
389
390
  update_remote_algorithms message
390
391
  end
391
392
 
@@ -393,12 +394,12 @@ module HrrRbSsh
393
394
  message = {
394
395
  :'message number' => Message::SSH_MSG_NEWKEYS::VALUE,
395
396
  }
396
- payload = Message::SSH_MSG_NEWKEYS.encode message
397
+ payload = Message::SSH_MSG_NEWKEYS.encode message, logger: logger
397
398
  send payload
398
399
  end
399
400
 
400
401
  def receive_newkeys payload
401
- message = Message::SSH_MSG_NEWKEYS.decode payload
402
+ message = Message::SSH_MSG_NEWKEYS.decode payload, logger: logger
402
403
  end
403
404
 
404
405
  def send_service_request
@@ -406,16 +407,16 @@ module HrrRbSsh
406
407
  :'message number' => Message::SSH_MSG_SERVICE_REQUEST::VALUE,
407
408
  :'service name' => 'ssh-userauth',
408
409
  }
409
- payload = Message::SSH_MSG_SERVICE_REQUEST.encode message
410
+ payload = Message::SSH_MSG_SERVICE_REQUEST.encode message, logger: logger
410
411
  send payload
411
412
 
412
413
  payload = @receiver.receive self
413
- message = Message::SSH_MSG_SERVICE_ACCEPT.decode payload
414
+ message = Message::SSH_MSG_SERVICE_ACCEPT.decode payload, logger: logger
414
415
  end
415
416
 
416
417
  def receive_service_request
417
418
  payload = @receiver.receive self
418
- message = Message::SSH_MSG_SERVICE_REQUEST.decode payload
419
+ message = Message::SSH_MSG_SERVICE_REQUEST.decode payload, logger: logger
419
420
 
420
421
  message
421
422
  end
@@ -425,7 +426,7 @@ module HrrRbSsh
425
426
  :'message number' => Message::SSH_MSG_SERVICE_ACCEPT::VALUE,
426
427
  :'service name' => service_name,
427
428
  }
428
- payload = Message::SSH_MSG_SERVICE_ACCEPT.encode message
429
+ payload = Message::SSH_MSG_SERVICE_ACCEPT.encode message, logger: logger
429
430
  send payload
430
431
  end
431
432
 
@@ -2,5 +2,5 @@
2
2
  # vim: et ts=2 sw=2
3
3
 
4
4
  module HrrRbSsh
5
- VERSION = "0.4.0.pre1"
5
+ VERSION = "0.4.0.pre2"
6
6
  end
data/lib/hrr_rb_ssh.rb CHANGED
@@ -9,7 +9,6 @@ end
9
9
 
10
10
  require "hrr_rb_ssh/version"
11
11
  require "hrr_rb_ssh/compat"
12
- require "hrr_rb_ssh/logger"
13
12
  require "hrr_rb_ssh/mode"
14
13
  require "hrr_rb_ssh/algorithm"
15
14
  require "hrr_rb_ssh/error"
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.0.pre1
4
+ version: 0.4.0.pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-30 00:00:00.000000000 Z
11
+ date: 2020-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
19
+ version: '12.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '10.0'
26
+ version: '12.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +162,7 @@ files:
162
162
  - lib/hrr_rb_ssh/error/closed_authentication.rb
163
163
  - lib/hrr_rb_ssh/error/closed_connection.rb
164
164
  - lib/hrr_rb_ssh/error/closed_transport.rb
165
- - lib/hrr_rb_ssh/logger.rb
165
+ - lib/hrr_rb_ssh/loggable.rb
166
166
  - lib/hrr_rb_ssh/message.rb
167
167
  - lib/hrr_rb_ssh/message/001_ssh_msg_disconnect.rb
168
168
  - lib/hrr_rb_ssh/message/002_ssh_msg_ignore.rb
@@ -288,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
288
  - !ruby/object:Gem::Version
289
289
  version: 1.3.1
290
290
  requirements: []
291
- rubygems_version: 3.0.3
291
+ rubygems_version: 3.1.2
292
292
  signing_key:
293
293
  specification_version: 4
294
294
  summary: Pure Ruby SSH 2.0 server and client implementation