net-telnet-rfc2217 0.0.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/net/telnet/rfc2217.rb +62 -66
- data/lib/net/telnet/rfc2217/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36e3c4930e4d87bbc6842436f284be89af5ca93d79d772a042cae3548900b72b
|
4
|
+
data.tar.gz: 9660b8ec96df884b3a063a0f38e9772fc650a2477497ba35fdb4fe23d6cf5d3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf4cc72ab62ff398f01511228d27a2813d89f0b7104b34a0820afbf65eb806490a43cbf51eb63b94cf1f6eb2798ca23edfdab9b1fcda03c6dea58eb84d69105b
|
7
|
+
data.tar.gz: c7af80ae0c10b2796ccccc7126137cc23437fc6ecd25d487cf7b758b4e16a0884fcf82c3569cab77edb204caf66c4818a7e83f38491b7e7bf76537b690e509ea
|
data/lib/net/telnet/rfc2217.rb
CHANGED
@@ -14,43 +14,9 @@ module Net
|
|
14
14
|
|
15
15
|
attr_reader :telnet
|
16
16
|
|
17
|
-
COM_PORT_OPTION = 44.chr
|
18
|
-
|
19
|
-
SET_BAUDRATE = 1.chr
|
20
|
-
SET_DATASIZE = 2.chr
|
21
|
-
SET_PARITY = 3.chr
|
22
|
-
SET_STOPSIZE = 4.chr
|
23
|
-
SET_CONTROL = 5.chr
|
24
|
-
NOTIFY_LINESTATE = 6.chr
|
25
|
-
NOTIFY_MODEMSTATE = 7.chr
|
26
|
-
FLOWCONTROL_SUSPEND = 8.chr
|
27
|
-
SET_LINESTATE_MASK = 10.chr
|
28
|
-
SET_MODEMSTATE_MASK = 11.chr
|
29
|
-
PURGE_DATA = 12.chr
|
30
|
-
|
31
|
-
SET_BAUDRATE_RESPONSE = 101.chr
|
32
|
-
SET_DATASIZE_RESPONSE = 102.chr
|
33
|
-
SET_PARITY_RESPONSE = 103.chr
|
34
|
-
SET_STOPSIZE_RESPONSE = 104.chr
|
35
|
-
SET_CONTROL_RESPONSE = 105.chr
|
36
|
-
NOTIFY_LINESTATE_RESPONSE = 106.chr
|
37
|
-
NOTIFY_MODEMSTATE_RESPONSE = 107.chr
|
38
|
-
FLOWCONTROL_SUSPEND_RESPONSE = 108.chr
|
39
|
-
SET_LINESTATE_MASK_RESPONSE = 110.chr
|
40
|
-
SET_MODEMSTATE_MASK_RESPONSE = 111.chr
|
41
|
-
PURGE_DATA_RESPONSE = 112.chr
|
42
|
-
|
43
|
-
NONE = 1
|
44
|
-
ODD = 2
|
45
|
-
EVEN = 3
|
46
|
-
MARK = 4
|
47
|
-
SPACE = 5
|
48
|
-
|
49
|
-
SERIAL_PORT_PARAMS = %w{baud data_bits stop_bits parity}.freeze
|
50
|
-
|
51
17
|
class << self
|
52
|
-
def open(
|
53
|
-
sp = new(
|
18
|
+
def open(**kwargs)
|
19
|
+
sp = new(opt**kwargs)
|
54
20
|
if block_given?
|
55
21
|
begin
|
56
22
|
yield sp
|
@@ -64,9 +30,15 @@ module Net
|
|
64
30
|
end
|
65
31
|
end
|
66
32
|
|
67
|
-
|
68
|
-
|
33
|
+
attr_reader :baud, :data_bits, :parity, :stop_bits
|
34
|
+
|
35
|
+
def initialize(host, port: 23, baud: 115200, data_bits: 8, parity: :none, stop_bits: 1, &block)
|
36
|
+
set_modem_params(baud: baud, data_bits: data_bits, parity: parity, stop_bits: stop_bits)
|
69
37
|
|
38
|
+
options = {
|
39
|
+
'Host' => host,
|
40
|
+
'Port' => port,
|
41
|
+
}
|
70
42
|
options['Binmode'] = true
|
71
43
|
options['Telnetmode'] = false
|
72
44
|
@telnet = Telnet.new(options, &block)
|
@@ -81,35 +53,15 @@ module Net
|
|
81
53
|
end
|
82
54
|
end
|
83
55
|
|
84
|
-
def
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
def set_modem_params(modem_params)
|
89
|
-
@modem_params = modem_params.dup
|
90
|
-
@modem_params['baud'] = 115200 unless @modem_params.key?('baud')
|
91
|
-
@modem_params['data_bits'] = 8 unless @modem_params.key?('data_bits')
|
92
|
-
@modem_params['stop_bits'] = 1 unless @modem_params.key?('stop_bits')
|
93
|
-
unless @modem_params.key?('parity')
|
94
|
-
@modem_params['parity'] = (data_bits == 8 ? NONE : EVEN)
|
95
|
-
end
|
96
|
-
write_modem_params if telnet
|
97
|
-
end
|
98
|
-
|
99
|
-
def baud
|
100
|
-
get_modem_params['baud']
|
101
|
-
end
|
56
|
+
def set_modem_params(baud: nil, data_bits: nil, parity: nil, stop_bits: nil)
|
57
|
+
raise ArgumentError, "Parity must be :none, :even, :odd, :mark, or :space" unless parity.nil? || %i{none even odd mark space}.include?(parity)
|
102
58
|
|
103
|
-
|
104
|
-
|
105
|
-
|
59
|
+
@baud ||= baud || 115200
|
60
|
+
@data_bits ||= data_bits || 8
|
61
|
+
@parity ||= parity || :none
|
62
|
+
@stop_bits ||= stop_bits || 1
|
106
63
|
|
107
|
-
|
108
|
-
get_modem_params['stop_bits']
|
109
|
-
end
|
110
|
-
|
111
|
-
def parity
|
112
|
-
get_modem_params['parity']
|
64
|
+
write_modem_params if telnet
|
113
65
|
end
|
114
66
|
|
115
67
|
def sock
|
@@ -127,6 +79,7 @@ module Net
|
|
127
79
|
def readbyte
|
128
80
|
read(1)&.[](0)
|
129
81
|
end
|
82
|
+
alias getbyte readbyte
|
130
83
|
|
131
84
|
def readpartial(length, outbuf = '')
|
132
85
|
loop do
|
@@ -193,6 +146,15 @@ module Net
|
|
193
146
|
result
|
194
147
|
end
|
195
148
|
|
149
|
+
def ready?
|
150
|
+
loop do
|
151
|
+
return true unless @buffer.empty?
|
152
|
+
return false if sock.wait_readable(0).nil?
|
153
|
+
# consume control characters first
|
154
|
+
readpartial(0)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
196
158
|
def ungetbyte(b)
|
197
159
|
@buffer.insert(0, b.chr)
|
198
160
|
end
|
@@ -216,12 +178,46 @@ module Net
|
|
216
178
|
|
217
179
|
private
|
218
180
|
|
181
|
+
COM_PORT_OPTION = 44.chr
|
182
|
+
|
183
|
+
SET_BAUDRATE = 1.chr
|
184
|
+
SET_DATASIZE = 2.chr
|
185
|
+
SET_PARITY = 3.chr
|
186
|
+
SET_STOPSIZE = 4.chr
|
187
|
+
SET_CONTROL = 5.chr
|
188
|
+
NOTIFY_LINESTATE = 6.chr
|
189
|
+
NOTIFY_MODEMSTATE = 7.chr
|
190
|
+
FLOWCONTROL_SUSPEND = 8.chr
|
191
|
+
SET_LINESTATE_MASK = 10.chr
|
192
|
+
SET_MODEMSTATE_MASK = 11.chr
|
193
|
+
PURGE_DATA = 12.chr
|
194
|
+
|
195
|
+
SET_BAUDRATE_RESPONSE = 101.chr
|
196
|
+
SET_DATASIZE_RESPONSE = 102.chr
|
197
|
+
SET_PARITY_RESPONSE = 103.chr
|
198
|
+
SET_STOPSIZE_RESPONSE = 104.chr
|
199
|
+
SET_CONTROL_RESPONSE = 105.chr
|
200
|
+
NOTIFY_LINESTATE_RESPONSE = 106.chr
|
201
|
+
NOTIFY_MODEMSTATE_RESPONSE = 107.chr
|
202
|
+
FLOWCONTROL_SUSPEND_RESPONSE = 108.chr
|
203
|
+
SET_LINESTATE_MASK_RESPONSE = 110.chr
|
204
|
+
SET_MODEMSTATE_MASK_RESPONSE = 111.chr
|
205
|
+
PURGE_DATA_RESPONSE = 112.chr
|
206
|
+
|
207
|
+
NONE = 1
|
208
|
+
ODD = 2
|
209
|
+
EVEN = 3
|
210
|
+
MARK = 4
|
211
|
+
SPACE = 5
|
212
|
+
|
213
|
+
private_constant *(constants - [:WaitReadable])
|
214
|
+
|
219
215
|
def write_modem_params
|
220
216
|
telnet.write(
|
221
217
|
IAC + SB + COM_PORT_OPTION + SET_BAUDRATE + [baud].pack("N") + IAC + SE +
|
222
218
|
IAC + SB + COM_PORT_OPTION + SET_DATASIZE + data_bits.chr + IAC + SE +
|
223
219
|
IAC + SB + COM_PORT_OPTION + SET_STOPSIZE + stop_bits.chr + IAC + SE +
|
224
|
-
IAC + SB + COM_PORT_OPTION + SET_PARITY + parity.chr + IAC + SE)
|
220
|
+
IAC + SB + COM_PORT_OPTION + SET_PARITY + const_get(parity.upcase, false).chr + IAC + SE)
|
225
221
|
sock.flush
|
226
222
|
end
|
227
223
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-telnet-rfc2217
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-telnet
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '13.0'
|
55
|
-
description:
|
55
|
+
description:
|
56
56
|
email: cody@cutrer.com'
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
@@ -66,7 +66,7 @@ homepage: https://github.com/ccutrer/net-telnet-2217
|
|
66
66
|
licenses:
|
67
67
|
- MIT
|
68
68
|
metadata: {}
|
69
|
-
post_install_message:
|
69
|
+
post_install_message:
|
70
70
|
rdoc_options: []
|
71
71
|
require_paths:
|
72
72
|
- lib
|
@@ -81,8 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
85
|
-
signing_key:
|
84
|
+
rubygems_version: 3.1.4
|
85
|
+
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Library for getting an IO-like object for a remote serial port
|
88
88
|
test_files: []
|