hrr_rb_ssh 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/demo/server.rb +23 -3
  4. data/hrr_rb_ssh.gemspec +2 -2
  5. data/lib/hrr_rb_ssh/authentication/method/method.rb +34 -0
  6. data/lib/hrr_rb_ssh/authentication/method/none.rb +5 -14
  7. data/lib/hrr_rb_ssh/authentication/method/password.rb +6 -12
  8. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/algorithm.rb +41 -0
  9. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/codable.rb +33 -0
  10. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss.rb +105 -0
  11. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa.rb +85 -0
  12. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm.rb +28 -0
  13. data/lib/hrr_rb_ssh/authentication/method/publickey.rb +9 -25
  14. data/lib/hrr_rb_ssh/authentication/method.rb +12 -9
  15. data/lib/hrr_rb_ssh/connection/channel/channel_type/channel_type.rb +30 -0
  16. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb +46 -0
  17. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb +34 -0
  18. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb +44 -0
  19. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb +34 -0
  20. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb +54 -0
  21. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb +34 -0
  22. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/request_type.rb +34 -0
  23. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb +41 -0
  24. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb +34 -0
  25. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb +44 -0
  26. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb +34 -0
  27. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type.rb +33 -0
  28. data/lib/hrr_rb_ssh/connection/channel/channel_type/session.rb +30 -0
  29. data/lib/hrr_rb_ssh/connection/channel/channel_type.rb +25 -0
  30. data/lib/hrr_rb_ssh/connection/channel.rb +2 -12
  31. data/lib/hrr_rb_ssh/transport/compression_algorithm/compression_algorithm.rb +34 -0
  32. data/lib/hrr_rb_ssh/transport/compression_algorithm/functionable.rb +31 -0
  33. data/lib/hrr_rb_ssh/transport/compression_algorithm/none.rb +7 -19
  34. data/lib/hrr_rb_ssh/transport/compression_algorithm/unfunctionable.rb +20 -0
  35. data/lib/hrr_rb_ssh/transport/compression_algorithm/zlib.rb +7 -24
  36. data/lib/hrr_rb_ssh/transport/compression_algorithm.rb +11 -9
  37. data/lib/hrr_rb_ssh/transport/direction.rb +11 -0
  38. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_cbc.rb +19 -0
  39. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_ctr.rb +19 -0
  40. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_cbc.rb +19 -0
  41. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_ctr.rb +19 -0
  42. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_cbc.rb +19 -0
  43. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_ctr.rb +19 -0
  44. data/lib/hrr_rb_ssh/transport/encryption_algorithm/arcfour.rb +19 -0
  45. data/lib/hrr_rb_ssh/transport/encryption_algorithm/blowfish_cbc.rb +19 -0
  46. data/lib/hrr_rb_ssh/transport/encryption_algorithm/cast128_cbc.rb +19 -0
  47. data/lib/hrr_rb_ssh/transport/encryption_algorithm/encryption_algorithm.rb +34 -0
  48. data/lib/hrr_rb_ssh/transport/encryption_algorithm/functionable.rb +61 -0
  49. data/lib/hrr_rb_ssh/transport/encryption_algorithm/none.rb +6 -33
  50. data/lib/hrr_rb_ssh/transport/encryption_algorithm/three_des_cbc.rb +19 -0
  51. data/lib/hrr_rb_ssh/transport/encryption_algorithm/unfunctionable.rb +35 -0
  52. data/lib/hrr_rb_ssh/transport/encryption_algorithm.rb +20 -9
  53. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb +3 -4
  54. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group14_sha1.rb +4 -8
  55. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group1_sha1.rb +4 -8
  56. data/lib/hrr_rb_ssh/transport/kex_algorithm/kex_algorithm.rb +34 -0
  57. data/lib/hrr_rb_ssh/transport/kex_algorithm.rb +10 -9
  58. data/lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb +32 -0
  59. data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5.rb +21 -0
  60. data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5_96.rb +21 -0
  61. data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1.rb +5 -29
  62. data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1_96.rb +21 -0
  63. data/lib/hrr_rb_ssh/transport/mac_algorithm/mac_algorithm.rb +34 -0
  64. data/lib/hrr_rb_ssh/transport/mac_algorithm/none.rb +6 -22
  65. data/lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb +24 -0
  66. data/lib/hrr_rb_ssh/transport/mac_algorithm.rb +14 -9
  67. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/server_host_key_algorithm.rb +34 -0
  68. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss.rb +106 -0
  69. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb +4 -11
  70. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm.rb +10 -8
  71. data/lib/hrr_rb_ssh/transport.rb +23 -15
  72. data/lib/hrr_rb_ssh/version.rb +1 -1
  73. metadata +51 -17
  74. data/lib/hrr_rb_ssh/authentication/method/publickey/ssh_rsa.rb +0 -116
  75. data/lib/hrr_rb_ssh/connection/channel/session/env/context.rb +0 -43
  76. data/lib/hrr_rb_ssh/connection/channel/session/env.rb +0 -31
  77. data/lib/hrr_rb_ssh/connection/channel/session/exec/context.rb +0 -41
  78. data/lib/hrr_rb_ssh/connection/channel/session/exec.rb +0 -31
  79. data/lib/hrr_rb_ssh/connection/channel/session/pty_req/context.rb +0 -50
  80. data/lib/hrr_rb_ssh/connection/channel/session/pty_req.rb +0 -31
  81. data/lib/hrr_rb_ssh/connection/channel/session/shell/context.rb +0 -37
  82. data/lib/hrr_rb_ssh/connection/channel/session/shell.rb +0 -31
  83. data/lib/hrr_rb_ssh/connection/channel/session/subsystem/context.rb +0 -40
  84. data/lib/hrr_rb_ssh/connection/channel/session/subsystem.rb +0 -31
  85. data/lib/hrr_rb_ssh/connection/channel/session.rb +0 -31
  86. data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes_128_cbc.rb +0 -73
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.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-03 00:00:00.000000000 Z
11
+ date: 2018-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.0.8
69
- description: Pure Ruby SSH2 server implementation
69
+ description: Pure Ruby SSH 2.0 server implementation
70
70
  email:
71
71
  - hirura@gmail.com
72
72
  executables: []
@@ -88,32 +88,41 @@ files:
88
88
  - lib/hrr_rb_ssh/authentication.rb
89
89
  - lib/hrr_rb_ssh/authentication/authenticator.rb
90
90
  - lib/hrr_rb_ssh/authentication/method.rb
91
+ - lib/hrr_rb_ssh/authentication/method/method.rb
91
92
  - lib/hrr_rb_ssh/authentication/method/none.rb
92
93
  - lib/hrr_rb_ssh/authentication/method/none/context.rb
93
94
  - lib/hrr_rb_ssh/authentication/method/password.rb
94
95
  - lib/hrr_rb_ssh/authentication/method/password/context.rb
95
96
  - lib/hrr_rb_ssh/authentication/method/publickey.rb
97
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm.rb
98
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/algorithm.rb
99
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/codable.rb
100
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss.rb
101
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa.rb
96
102
  - lib/hrr_rb_ssh/authentication/method/publickey/context.rb
97
- - lib/hrr_rb_ssh/authentication/method/publickey/ssh_rsa.rb
98
103
  - lib/hrr_rb_ssh/closed_authentication_error.rb
99
104
  - lib/hrr_rb_ssh/closed_connection_error.rb
100
105
  - lib/hrr_rb_ssh/closed_transport_error.rb
101
106
  - lib/hrr_rb_ssh/compat.rb
102
107
  - lib/hrr_rb_ssh/connection.rb
103
108
  - lib/hrr_rb_ssh/connection/channel.rb
109
+ - lib/hrr_rb_ssh/connection/channel/channel_type.rb
110
+ - lib/hrr_rb_ssh/connection/channel/channel_type/channel_type.rb
111
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session.rb
112
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type.rb
113
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb
114
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb
115
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb
116
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb
117
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb
118
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb
119
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/request_type.rb
120
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb
121
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb
122
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb
123
+ - lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb
104
124
  - lib/hrr_rb_ssh/connection/channel/proc_chain.rb
105
125
  - lib/hrr_rb_ssh/connection/channel/proc_chain/chain_context.rb
106
- - lib/hrr_rb_ssh/connection/channel/session.rb
107
- - lib/hrr_rb_ssh/connection/channel/session/env.rb
108
- - lib/hrr_rb_ssh/connection/channel/session/env/context.rb
109
- - lib/hrr_rb_ssh/connection/channel/session/exec.rb
110
- - lib/hrr_rb_ssh/connection/channel/session/exec/context.rb
111
- - lib/hrr_rb_ssh/connection/channel/session/pty_req.rb
112
- - lib/hrr_rb_ssh/connection/channel/session/pty_req/context.rb
113
- - lib/hrr_rb_ssh/connection/channel/session/shell.rb
114
- - lib/hrr_rb_ssh/connection/channel/session/shell/context.rb
115
- - lib/hrr_rb_ssh/connection/channel/session/subsystem.rb
116
- - lib/hrr_rb_ssh/connection/channel/session/subsystem/context.rb
117
126
  - lib/hrr_rb_ssh/connection/request_handler.rb
118
127
  - lib/hrr_rb_ssh/logger.rb
119
128
  - lib/hrr_rb_ssh/message.rb
@@ -148,25 +157,50 @@ files:
148
157
  - lib/hrr_rb_ssh/message/codable.rb
149
158
  - lib/hrr_rb_ssh/transport.rb
150
159
  - lib/hrr_rb_ssh/transport/compression_algorithm.rb
160
+ - lib/hrr_rb_ssh/transport/compression_algorithm/compression_algorithm.rb
161
+ - lib/hrr_rb_ssh/transport/compression_algorithm/functionable.rb
151
162
  - lib/hrr_rb_ssh/transport/compression_algorithm/none.rb
163
+ - lib/hrr_rb_ssh/transport/compression_algorithm/unfunctionable.rb
152
164
  - lib/hrr_rb_ssh/transport/compression_algorithm/zlib.rb
153
165
  - lib/hrr_rb_ssh/transport/constant.rb
154
166
  - lib/hrr_rb_ssh/transport/data_type.rb
167
+ - lib/hrr_rb_ssh/transport/direction.rb
155
168
  - lib/hrr_rb_ssh/transport/encryption_algorithm.rb
156
- - lib/hrr_rb_ssh/transport/encryption_algorithm/aes_128_cbc.rb
169
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_cbc.rb
170
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_ctr.rb
171
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_cbc.rb
172
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_ctr.rb
173
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_cbc.rb
174
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_ctr.rb
175
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/arcfour.rb
176
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/blowfish_cbc.rb
177
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/cast128_cbc.rb
178
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/encryption_algorithm.rb
179
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/functionable.rb
157
180
  - lib/hrr_rb_ssh/transport/encryption_algorithm/none.rb
181
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/three_des_cbc.rb
182
+ - lib/hrr_rb_ssh/transport/encryption_algorithm/unfunctionable.rb
158
183
  - lib/hrr_rb_ssh/transport/kex_algorithm.rb
159
184
  - lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb
160
185
  - lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group14_sha1.rb
161
186
  - lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group1_sha1.rb
187
+ - lib/hrr_rb_ssh/transport/kex_algorithm/kex_algorithm.rb
162
188
  - lib/hrr_rb_ssh/transport/mac_algorithm.rb
189
+ - lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb
190
+ - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5.rb
191
+ - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5_96.rb
163
192
  - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1.rb
193
+ - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1_96.rb
194
+ - lib/hrr_rb_ssh/transport/mac_algorithm/mac_algorithm.rb
164
195
  - lib/hrr_rb_ssh/transport/mac_algorithm/none.rb
196
+ - lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb
165
197
  - lib/hrr_rb_ssh/transport/mode.rb
166
198
  - lib/hrr_rb_ssh/transport/receiver.rb
167
199
  - lib/hrr_rb_ssh/transport/sender.rb
168
200
  - lib/hrr_rb_ssh/transport/sequence_number.rb
169
201
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm.rb
202
+ - lib/hrr_rb_ssh/transport/server_host_key_algorithm/server_host_key_algorithm.rb
203
+ - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss.rb
170
204
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb
171
205
  - lib/hrr_rb_ssh/version.rb
172
206
  homepage: https://github.com/hirura/hrr_rb_ssh
@@ -192,5 +226,5 @@ rubyforge_project:
192
226
  rubygems_version: 2.7.6
193
227
  signing_key:
194
228
  specification_version: 4
195
- summary: Pure Ruby SSH2 server implementation
229
+ summary: Pure Ruby SSH 2.0 server implementation
196
230
  test_files: []
@@ -1,116 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/transport/data_type'
6
-
7
- module HrrRbSsh
8
- class Authentication
9
- module Method
10
- class Publickey
11
- name_list = [
12
- 'ssh-rsa'
13
- ]
14
-
15
- class SshRsa
16
- NAME = 'ssh-rsa'
17
- DIGEST = 'sha1'
18
-
19
- PUBLIC_KEY_BLOB_DEFINITION = [
20
- ['string', 'public key algorithm name'],
21
- ['mpint', 'e'],
22
- ['mpint', 'n'],
23
- ]
24
-
25
- SIGNATURE_DEFINITION = [
26
- ['string', 'public key algorithm name'],
27
- ['string', 'signature blob'],
28
- ]
29
-
30
- SIGNATURE_BLOB_DEFINITION = [
31
- ['string', 'session identifier'],
32
- ['byte', 'message number'],
33
- ['string', 'user name'],
34
- ['string', 'service name'],
35
- ['string', 'method name'],
36
- ['boolean', 'with signature'],
37
- ['string', 'public key algorithm name'],
38
- ['string', 'public key blob'],
39
- ]
40
-
41
- def initialize
42
- @logger = HrrRbSsh::Logger.new self.class.name
43
- end
44
-
45
- def encode definition, payload
46
- definition.map{ |data_type, field_name|
47
- field_value = if payload[field_name].instance_of? ::Proc then payload[field_name].call else payload[field_name] end
48
- HrrRbSsh::Transport::DataType[data_type].encode(field_value)
49
- }.join
50
- end
51
-
52
- def decode definition, payload
53
- payload_io = StringIO.new payload, 'r'
54
- definition.map{ |data_type, field_name|
55
- [
56
- field_name,
57
- HrrRbSsh::Transport::DataType[data_type].decode(payload_io)
58
- ]
59
- }.to_h
60
- end
61
-
62
- def verify_public_key public_key_algorithm_name, public_key, public_key_blob
63
- public_key = case public_key
64
- when String
65
- OpenSSL::PKey::RSA.new(public_key)
66
- when OpenSSL::PKey::RSA
67
- public_key
68
- else
69
- return false
70
- end
71
- public_key_message = {
72
- 'public key algorithm name' => public_key_algorithm_name,
73
- 'e' => public_key.e.to_i,
74
- 'n' => public_key.n.to_i,
75
- }
76
- public_key_blob == encode(PUBLIC_KEY_BLOB_DEFINITION, public_key_message)
77
- end
78
-
79
- def verify_signature session_id, message
80
- signature_message = decode SIGNATURE_DEFINITION, message['signature']
81
- signature_algorithm = signature_message['public key algorithm name']
82
- signature_blob = signature_message['signature blob']
83
-
84
- public_key = decode PUBLIC_KEY_BLOB_DEFINITION, message['public key blob']
85
- algorithm = OpenSSL::PKey::RSA.new
86
- if algorithm.respond_to?(:set_key)
87
- algorithm.set_key public_key['n'], public_key['e'], nil
88
- else
89
- algorithm.e = public_key['e']
90
- algorithm.n = public_key['n']
91
- end
92
-
93
- data_message = {
94
- 'session identifier' => session_id,
95
- 'message number' => message['message number'],
96
- 'user name' => message['user name'],
97
- 'service name' => message['service name'],
98
- 'method name' => message['method name'],
99
- 'with signature' => message['with signature'],
100
- 'public key algorithm name' => message['public key algorithm name'],
101
- 'public key blob' => message['public key blob'],
102
- }
103
- data_blob = encode SIGNATURE_BLOB_DEFINITION, data_message
104
-
105
- (signature_algorithm == message['public key algorithm name']) && algorithm.verify(DIGEST, signature_blob, data_blob)
106
- end
107
- end
108
-
109
- @@algorithm_list ||= Hash.new
110
- name_list.each do |name|
111
- @@algorithm_list[name] = SshRsa
112
- end
113
- end
114
- end
115
- end
116
- end
@@ -1,43 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
-
6
- module HrrRbSsh
7
- class Connection
8
- class Channel
9
- module Session
10
- class Env
11
- class Context
12
- attr_reader \
13
- :logger,
14
- :username,
15
- :io,
16
- :variables,
17
- :vars,
18
- :variable_name,
19
- :variable_value
20
-
21
- def initialize proc_chain, username, io, variables, message
22
- @logger = HrrRbSsh::Logger.new self.class.name
23
-
24
- @proc_chain = proc_chain
25
- @username = username
26
- @io = io
27
- @variables = variables
28
- @vars = variables
29
-
30
- @variable_name = message['variable name']
31
- @variable_value = message['variable value']
32
- end
33
-
34
- def chain_proc &block
35
- @proc = block || @proc
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
-
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/connection/request_handler'
6
- require 'hrr_rb_ssh/connection/channel/session/env/context'
7
-
8
- module HrrRbSsh
9
- class Connection
10
- class Channel
11
- module Session
12
- request_type = 'env'
13
-
14
- class Env
15
- def self.run proc_chain, username, io, variables, message, options
16
- logger = HrrRbSsh::Logger.new self.class.name
17
-
18
- context = Context.new proc_chain, username, io, variables, message
19
- handler = options.fetch('connection_channel_request_env', RequestHandler.new {})
20
- handler.run context
21
-
22
- proc_chain.connect context.chain_proc
23
- end
24
- end
25
-
26
- @@request_type_list ||= Hash.new
27
- @@request_type_list[request_type] = Env
28
- end
29
- end
30
- end
31
- end
@@ -1,41 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
-
6
- module HrrRbSsh
7
- class Connection
8
- class Channel
9
- module Session
10
- class Exec
11
- class Context
12
- attr_reader \
13
- :logger,
14
- :username,
15
- :io,
16
- :variables,
17
- :vars,
18
- :command
19
-
20
- def initialize proc_chain, username, io, variables, message
21
- @logger = HrrRbSsh::Logger.new self.class.name
22
-
23
- @proc_chain = proc_chain
24
- @username = username
25
- @io = io
26
- @variables = variables
27
- @vars = variables
28
-
29
- @command = message['command']
30
- end
31
-
32
- def chain_proc &block
33
- @proc = block || @proc
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
41
-
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/connection/request_handler'
6
- require 'hrr_rb_ssh/connection/channel/session/exec/context'
7
-
8
- module HrrRbSsh
9
- class Connection
10
- class Channel
11
- module Session
12
- request_type = 'exec'
13
-
14
- class Exec
15
- def self.run proc_chain, username, io, variables, message, options
16
- logger = HrrRbSsh::Logger.new self.class.name
17
-
18
- context = Context.new proc_chain, username, io, variables, message
19
- handler = options.fetch('connection_channel_request_exec', RequestHandler.new {})
20
- handler.run context
21
-
22
- proc_chain.connect context.chain_proc
23
- end
24
- end
25
-
26
- @@request_type_list ||= Hash.new
27
- @@request_type_list[request_type] = Exec
28
- end
29
- end
30
- end
31
- end
@@ -1,50 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
-
6
- module HrrRbSsh
7
- class Connection
8
- class Channel
9
- module Session
10
- class PtyReq
11
- class Context
12
- attr_reader \
13
- :logger,
14
- :username,
15
- :io,
16
- :variables,
17
- :vars,
18
- :term_environment_variable_value,
19
- :terminal_width_characters,
20
- :terminal_height_rows,
21
- :terminal_width_pixels,
22
- :terminal_height_pixels,
23
- :encoded_terminal_modes
24
-
25
- def initialize proc_chain, username, io, variables, message
26
- @logger = HrrRbSsh::Logger.new self.class.name
27
-
28
- @proc_chain = proc_chain
29
- @username = username
30
- @io = io
31
- @variables = variables
32
- @vars = variables
33
-
34
- @term_environment_variable_value = message['TERM environment variable value']
35
- @terminal_width_characters = message['terminal width, characters']
36
- @terminal_height_rows = message['terminal height, rows']
37
- @terminal_width_pixels = message['terminal width, pixels']
38
- @terminal_height_pixels = message['terminal height, pixels']
39
- @encoded_terminal_modes = message['encoded terminal modes']
40
- end
41
-
42
- def chain_proc &block
43
- @proc = block || @proc
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/connection/request_handler'
6
- require 'hrr_rb_ssh/connection/channel/session/pty_req/context'
7
-
8
- module HrrRbSsh
9
- class Connection
10
- class Channel
11
- module Session
12
- request_type = 'pty-req'
13
-
14
- class PtyReq
15
- def self.run proc_chain, username, io, variables, message, options
16
- logger = HrrRbSsh::Logger.new self.class.name
17
-
18
- context = Context.new proc_chain, username, io, variables, message
19
- handler = options.fetch('connection_channel_request_pty_req', RequestHandler.new {})
20
- handler.run context
21
-
22
- proc_chain.connect context.chain_proc
23
- end
24
- end
25
-
26
- @@request_type_list ||= Hash.new
27
- @@request_type_list[request_type] = PtyReq
28
- end
29
- end
30
- end
31
- end
@@ -1,37 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
-
6
- module HrrRbSsh
7
- class Connection
8
- class Channel
9
- module Session
10
- class Shell
11
- class Context
12
- attr_reader \
13
- :logger,
14
- :username,
15
- :io,
16
- :variables,
17
- :vars
18
-
19
- def initialize proc_chain, username, io, variables, message
20
- @logger = HrrRbSsh::Logger.new self.class.name
21
-
22
- @proc_chain = proc_chain
23
- @username = username
24
- @io = io
25
- @variables = variables
26
- @vars = variables
27
- end
28
-
29
- def chain_proc &block
30
- @proc = block || @proc
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/connection/request_handler'
6
- require 'hrr_rb_ssh/connection/channel/session/shell/context'
7
-
8
- module HrrRbSsh
9
- class Connection
10
- class Channel
11
- module Session
12
- request_type = 'shell'
13
-
14
- class Shell
15
- def self.run proc_chain, username, io, variables, message, options
16
- logger = HrrRbSsh::Logger.new self.class.name
17
-
18
- context = Context.new proc_chain, username, io, variables, message
19
- handler = options.fetch('connection_channel_request_shell', RequestHandler.new {})
20
- handler.run context
21
-
22
- proc_chain.connect context.chain_proc
23
- end
24
- end
25
-
26
- @@request_type_list ||= Hash.new
27
- @@request_type_list[request_type] = Shell
28
- end
29
- end
30
- end
31
- end
@@ -1,40 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
-
6
- module HrrRbSsh
7
- class Connection
8
- class Channel
9
- module Session
10
- class Subsystem
11
- class Context
12
- attr_reader \
13
- :logger,
14
- :username,
15
- :io,
16
- :variables,
17
- :vars,
18
- :subsystem_name
19
-
20
- def initialize proc_chain, username, io, variables, message
21
- @logger = HrrRbSsh::Logger.new self.class.name
22
-
23
- @proc_chain = proc_chain
24
- @username = username
25
- @io = io
26
- @variables = variables
27
- @vars = variables
28
-
29
- @subsystem_name = message['subsystem name']
30
- end
31
-
32
- def chain_proc &block
33
- @proc = block || @proc
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/logger'
5
- require 'hrr_rb_ssh/connection/request_handler'
6
- require 'hrr_rb_ssh/connection/channel/session/subsystem/context'
7
-
8
- module HrrRbSsh
9
- class Connection
10
- class Channel
11
- module Session
12
- request_type = 'subsystem'
13
-
14
- class Subsystem
15
- def self.run proc_chain, username, io, variables, message, options
16
- logger = HrrRbSsh::Logger.new self.class.name
17
-
18
- context = Context.new proc_chain, username, io, variables, message
19
- handler = options.fetch('connection_channel_request_subsystem', RequestHandler.new {})
20
- handler.run context
21
-
22
- proc_chain.connect context.chain_proc
23
- end
24
- end
25
-
26
- @@request_type_list ||= Hash.new
27
- @@request_type_list[request_type] = Subsystem
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/connection/channel/session/pty_req'
5
- require 'hrr_rb_ssh/connection/channel/session/env'
6
- require 'hrr_rb_ssh/connection/channel/session/shell'
7
- require 'hrr_rb_ssh/connection/channel/session/exec'
8
- require 'hrr_rb_ssh/connection/channel/session/subsystem'
9
-
10
- module HrrRbSsh
11
- class Connection
12
- class Channel
13
- channel_type = 'session'
14
-
15
- module Session
16
- @@request_type_list ||= Hash.new
17
-
18
- def self.[] key
19
- @@request_type_list[key]
20
- end
21
-
22
- def self.request_type_list
23
- @@request_type_list.keys
24
- end
25
- end
26
-
27
- @@type_list ||= Hash.new
28
- @@type_list[channel_type] = Session
29
- end
30
- end
31
- end