net-telnet-rfc2217 0.0.5 → 1.0.2
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/lib/net/telnet/rfc2217/version.rb +1 -1
- data/lib/net/telnet/rfc2217.rb +62 -67
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '008992d829099c5c5a8160c3c27e98f735ce4958e725df2201f5f3f3149c3fd9'
|
4
|
+
data.tar.gz: eb5c2f9b705d7b93528d2b9e17cf1a601169fd589482d6f982bd6b3b7873bea2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1411e655cb32823feacf903948b54d1f86d12249a8b7b0f8cc45f5ce957f0a82a552b8f2b3260b9c99e9117c9693f27414aceaa1d3ede6864f525b51f7e8264
|
7
|
+
data.tar.gz: a0625e0a693cc7cbccade9a86b60410a9f1cce72d14c6a186ccf32cda9c8fde802c993c01cd9992df67a88c8de0850df7ce0dadaa0df6174df94328abb77ea19
|
data/lib/net/telnet/rfc2217.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'net/telnet'
|
2
|
-
require 'byebug'
|
3
2
|
|
4
3
|
# have to patch Telnet to allow us to read control sequences
|
5
4
|
require 'net/telnet/rfc2217/telnet'
|
@@ -14,43 +13,9 @@ module Net
|
|
14
13
|
|
15
14
|
attr_reader :telnet
|
16
15
|
|
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
16
|
class << self
|
52
|
-
def open(
|
53
|
-
sp = new(
|
17
|
+
def open(**kwargs)
|
18
|
+
sp = new(opt**kwargs)
|
54
19
|
if block_given?
|
55
20
|
begin
|
56
21
|
yield sp
|
@@ -64,9 +29,15 @@ module Net
|
|
64
29
|
end
|
65
30
|
end
|
66
31
|
|
67
|
-
|
68
|
-
|
32
|
+
attr_reader :baud, :data_bits, :parity, :stop_bits
|
33
|
+
|
34
|
+
def initialize(host, port: 23, baud: 115200, data_bits: 8, parity: :none, stop_bits: 1, &block)
|
35
|
+
set_modem_params(baud: baud, data_bits: data_bits, parity: parity, stop_bits: stop_bits)
|
69
36
|
|
37
|
+
options = {
|
38
|
+
'Host' => host,
|
39
|
+
'Port' => port,
|
40
|
+
}
|
70
41
|
options['Binmode'] = true
|
71
42
|
options['Telnetmode'] = false
|
72
43
|
@telnet = Telnet.new(options, &block)
|
@@ -81,35 +52,15 @@ module Net
|
|
81
52
|
end
|
82
53
|
end
|
83
54
|
|
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
|
55
|
+
def set_modem_params(baud: nil, data_bits: nil, parity: nil, stop_bits: nil)
|
56
|
+
raise ArgumentError, "Parity must be :none, :even, :odd, :mark, or :space" unless parity.nil? || %i{none even odd mark space}.include?(parity)
|
102
57
|
|
103
|
-
|
104
|
-
|
105
|
-
|
58
|
+
@baud ||= baud || 115200
|
59
|
+
@data_bits ||= data_bits || 8
|
60
|
+
@parity ||= parity || :none
|
61
|
+
@stop_bits ||= stop_bits || 1
|
106
62
|
|
107
|
-
|
108
|
-
get_modem_params['stop_bits']
|
109
|
-
end
|
110
|
-
|
111
|
-
def parity
|
112
|
-
get_modem_params['parity']
|
63
|
+
write_modem_params if telnet
|
113
64
|
end
|
114
65
|
|
115
66
|
def sock
|
@@ -127,6 +78,7 @@ module Net
|
|
127
78
|
def readbyte
|
128
79
|
read(1)&.[](0)
|
129
80
|
end
|
81
|
+
alias getbyte readbyte
|
130
82
|
|
131
83
|
def readpartial(length, outbuf = '')
|
132
84
|
loop do
|
@@ -193,6 +145,15 @@ module Net
|
|
193
145
|
result
|
194
146
|
end
|
195
147
|
|
148
|
+
def ready?
|
149
|
+
loop do
|
150
|
+
return true unless @buffer.empty?
|
151
|
+
return false if sock.wait_readable(0).nil?
|
152
|
+
# consume control characters first
|
153
|
+
readpartial(0)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
196
157
|
def ungetbyte(b)
|
197
158
|
@buffer.insert(0, b.chr)
|
198
159
|
end
|
@@ -216,12 +177,46 @@ module Net
|
|
216
177
|
|
217
178
|
private
|
218
179
|
|
180
|
+
COM_PORT_OPTION = 44.chr
|
181
|
+
|
182
|
+
SET_BAUDRATE = 1.chr
|
183
|
+
SET_DATASIZE = 2.chr
|
184
|
+
SET_PARITY = 3.chr
|
185
|
+
SET_STOPSIZE = 4.chr
|
186
|
+
SET_CONTROL = 5.chr
|
187
|
+
NOTIFY_LINESTATE = 6.chr
|
188
|
+
NOTIFY_MODEMSTATE = 7.chr
|
189
|
+
FLOWCONTROL_SUSPEND = 8.chr
|
190
|
+
SET_LINESTATE_MASK = 10.chr
|
191
|
+
SET_MODEMSTATE_MASK = 11.chr
|
192
|
+
PURGE_DATA = 12.chr
|
193
|
+
|
194
|
+
SET_BAUDRATE_RESPONSE = 101.chr
|
195
|
+
SET_DATASIZE_RESPONSE = 102.chr
|
196
|
+
SET_PARITY_RESPONSE = 103.chr
|
197
|
+
SET_STOPSIZE_RESPONSE = 104.chr
|
198
|
+
SET_CONTROL_RESPONSE = 105.chr
|
199
|
+
NOTIFY_LINESTATE_RESPONSE = 106.chr
|
200
|
+
NOTIFY_MODEMSTATE_RESPONSE = 107.chr
|
201
|
+
FLOWCONTROL_SUSPEND_RESPONSE = 108.chr
|
202
|
+
SET_LINESTATE_MASK_RESPONSE = 110.chr
|
203
|
+
SET_MODEMSTATE_MASK_RESPONSE = 111.chr
|
204
|
+
PURGE_DATA_RESPONSE = 112.chr
|
205
|
+
|
206
|
+
NONE = 1
|
207
|
+
ODD = 2
|
208
|
+
EVEN = 3
|
209
|
+
MARK = 4
|
210
|
+
SPACE = 5
|
211
|
+
|
212
|
+
private_constant *(constants - [:WaitReadable])
|
213
|
+
|
219
214
|
def write_modem_params
|
220
215
|
telnet.write(
|
221
216
|
IAC + SB + COM_PORT_OPTION + SET_BAUDRATE + [baud].pack("N") + IAC + SE +
|
222
217
|
IAC + SB + COM_PORT_OPTION + SET_DATASIZE + data_bits.chr + IAC + SE +
|
223
218
|
IAC + SB + COM_PORT_OPTION + SET_STOPSIZE + stop_bits.chr + IAC + SE +
|
224
|
-
IAC + SB + COM_PORT_OPTION + SET_PARITY + parity.chr + IAC + SE)
|
219
|
+
IAC + SB + COM_PORT_OPTION + SET_PARITY + self.class.const_get(parity.upcase, false).chr + IAC + SE)
|
225
220
|
sock.flush
|
226
221
|
end
|
227
222
|
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:
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-telnet
|
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
84
|
+
rubygems_version: 3.1.2
|
85
85
|
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Library for getting an IO-like object for a remote serial port
|