hrr_rb_ssh 0.4.0.pre1 → 0.4.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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