stomp 1.2.4 → 1.2.5
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.
- data/CHANGELOG.rdoc +11 -0
- data/README.rdoc +38 -26
- data/Rakefile +3 -0
- data/bin/catstomp +34 -34
- data/bin/stompcat +36 -36
- data/examples/client11_ex1.rb +64 -55
- data/examples/client11_putget1.rb +47 -35
- data/examples/conn11_ex1.rb +59 -51
- data/examples/conn11_ex2.rb +59 -50
- data/examples/conn11_hb1.rb +35 -26
- data/examples/consumer.rb +25 -12
- data/examples/get11conn_ex1.rb +97 -89
- data/examples/get11conn_ex2.rb +55 -47
- data/examples/logexamp.rb +66 -52
- data/examples/logexamp_ssl.rb +66 -52
- data/examples/publisher.rb +21 -10
- data/examples/put11conn_ex1.rb +35 -24
- data/examples/putget11_rh1.rb +66 -56
- data/examples/slogger.rb +65 -52
- data/examples/ssl_uc1.rb +24 -13
- data/examples/ssl_uc1_ciphers.rb +28 -15
- data/examples/ssl_uc2.rb +26 -16
- data/examples/ssl_uc2_ciphers.rb +31 -18
- data/examples/ssl_uc3.rb +25 -14
- data/examples/ssl_uc3_ciphers.rb +31 -18
- data/examples/ssl_uc4.rb +26 -15
- data/examples/ssl_uc4_ciphers.rb +32 -19
- data/examples/ssl_ucx_default_ciphers.rb +25 -12
- data/examples/stomp11_common.rb +16 -15
- data/examples/topic_consumer.rb +23 -10
- data/examples/topic_publisher.rb +22 -8
- data/lib/client/utils.rb +116 -0
- data/lib/connection/heartbeats.rb +173 -0
- data/lib/connection/netio.rb +322 -0
- data/lib/connection/utf8.rb +294 -0
- data/lib/connection/utils.rb +104 -0
- data/lib/stomp/client.rb +127 -179
- data/lib/stomp/codec.rb +5 -2
- data/lib/stomp/connection.rb +109 -865
- data/lib/stomp/constants.rb +52 -33
- data/lib/stomp/errors.rb +56 -5
- data/lib/stomp/ext/hash.rb +4 -0
- data/lib/stomp/message.rb +49 -29
- data/lib/stomp/sslparams.rb +83 -71
- data/lib/stomp/version.rb +3 -1
- data/lib/stomp.rb +18 -9
- data/stomp.gemspec +58 -3
- data/test/test_client.rb +28 -1
- data/test/test_codec.rb +8 -2
- data/test/test_connection.rb +29 -0
- data/test/test_connection1p.rb +31 -16
- data/test/test_helper.rb +20 -3
- data/test/test_message.rb +8 -3
- data/test/test_ssl.rb +10 -4
- data/test/tlogger.rb +16 -15
- metadata +59 -4
data/examples/slogger.rb
CHANGED
@@ -1,53 +1,51 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
=begin
|
4
|
-
|
5
|
-
Example STOMP call back logger class.
|
6
|
-
|
7
|
-
Optional callback methods:
|
8
|
-
|
9
|
-
on_connecting: connection starting
|
10
|
-
on_connected: successful connect
|
11
|
-
on_connectfail: unsuccessful connect (will usually be retried)
|
12
|
-
on_disconnect: successful disconnect
|
13
|
-
|
14
|
-
on_miscerr: on miscellaneous xmit/recv errors
|
15
|
-
|
16
|
-
on_publish: publish called
|
17
|
-
on_subscribe: subscribe called
|
18
|
-
on_receive: receive called and successful
|
19
|
-
|
20
|
-
on_ssl_connecting: SSL connection starting
|
21
|
-
on_ssl_connected: successful SSL connect
|
22
|
-
on_ssl_connectfail: unsuccessful SSL connect (will usually be retried)
|
23
|
-
|
24
|
-
on_hbread_fail: unsuccessful Heartbeat read
|
25
|
-
on_hbwrite_fail: unsuccessful Heartbeat write
|
26
|
-
|
27
|
-
All methods are optional, at the user's requirements.
|
28
|
-
|
29
|
-
If a method is not provided, it is not called (of course.)
|
30
|
-
|
31
|
-
IMPORTANT NOTE: in general, call back logging methods *SHOULD* not raise exceptions,
|
32
|
-
otherwise the underlying STOMP connection may fail in mysterious ways.
|
33
|
-
|
34
|
-
There are two useful exceptions to this rule for:
|
35
|
-
|
36
|
-
on_connectfail
|
37
|
-
on_ssl_connectfail
|
38
|
-
|
39
|
-
These two methods can raise a Stomp::Errors::LoggerConnectionError. If this
|
40
|
-
exception is raised, it is passed up the chain to the caller.
|
41
|
-
|
42
|
-
Callback parameters: are a copy of the @parameters instance variable for
|
43
|
-
the Stomp::Connection.
|
44
|
-
|
45
|
-
=end
|
46
|
-
|
47
3
|
require 'logger' # use the standard Ruby logger .....
|
48
4
|
|
5
|
+
# == Example STOMP call back logger class.
|
6
|
+
#
|
7
|
+
# Optional callback methods:
|
8
|
+
#
|
9
|
+
# * on_connecting: connection starting
|
10
|
+
# * on_connected: successful connect
|
11
|
+
# * on_connectfail: unsuccessful connect (will usually be retried)
|
12
|
+
# * on_disconnect: successful disconnect
|
13
|
+
#
|
14
|
+
# * on_miscerr: on miscellaneous xmit/recv errors
|
15
|
+
#
|
16
|
+
# * on_publish: publish called
|
17
|
+
# * on_subscribe: subscribe called
|
18
|
+
# * on_receive: receive called and successful
|
19
|
+
#
|
20
|
+
# * on_ssl_connecting: SSL connection starting
|
21
|
+
# * on_ssl_connected: successful SSL connect
|
22
|
+
# * on_ssl_connectfail: unsuccessful SSL connect (will usually be retried)
|
23
|
+
#
|
24
|
+
# * on_hbread_fail: unsuccessful Heartbeat read
|
25
|
+
# * on_hbwrite_fail: unsuccessful Heartbeat write
|
26
|
+
# * on_hbfire: on any send or receive heartbeat
|
27
|
+
#
|
28
|
+
# All methods are optional, at the user's requirements.
|
29
|
+
#
|
30
|
+
# If a method is not provided, it is not called (of course.)
|
31
|
+
#
|
32
|
+
# IMPORTANT NOTE: in general, call back logging methods *SHOULD* not raise exceptions,
|
33
|
+
# otherwise the underlying STOMP connection may fail in mysterious ways.
|
34
|
+
#
|
35
|
+
# There are two useful exceptions to this rule for:
|
36
|
+
#
|
37
|
+
# * on_connectfail
|
38
|
+
# * on_ssl_connectfail
|
39
|
+
#
|
40
|
+
# These two methods can raise a Stomp::Errors::LoggerConnectionError. If this
|
41
|
+
# exception is raised, it is passed up the chain to the caller.
|
42
|
+
#
|
43
|
+
# Callback parameters: are a copy of the @parameters instance variable for
|
44
|
+
# the Stomp::Connection.
|
45
|
+
#
|
49
46
|
class Slogger
|
50
|
-
|
47
|
+
|
48
|
+
# Initialize a new callback logger instance.
|
51
49
|
def initialize(init_parms = nil)
|
52
50
|
@log = Logger::new(STDOUT) # User preference
|
53
51
|
@log.level = Logger::DEBUG # User preference
|
@@ -105,7 +103,7 @@ class Slogger
|
|
105
103
|
end
|
106
104
|
end
|
107
105
|
|
108
|
-
# Subscribe
|
106
|
+
# Log Subscribe
|
109
107
|
def on_subscribe(parms, headers)
|
110
108
|
begin
|
111
109
|
@log.debug "Subscribe Parms #{info(parms)}"
|
@@ -115,7 +113,7 @@ class Slogger
|
|
115
113
|
end
|
116
114
|
end
|
117
115
|
|
118
|
-
# Publish
|
116
|
+
# Log Publish
|
119
117
|
def on_publish(parms, message, headers)
|
120
118
|
begin
|
121
119
|
@log.debug "Publish Parms #{info(parms)}"
|
@@ -126,7 +124,7 @@ class Slogger
|
|
126
124
|
end
|
127
125
|
end
|
128
126
|
|
129
|
-
# Receive
|
127
|
+
# Log Receive
|
130
128
|
def on_receive(parms, result)
|
131
129
|
begin
|
132
130
|
@log.debug "Receive Parms #{info(parms)}"
|
@@ -136,7 +134,7 @@ class Slogger
|
|
136
134
|
end
|
137
135
|
end
|
138
136
|
|
139
|
-
# Stomp 1.1+ - heart beat read (receive) failed
|
137
|
+
# Stomp 1.1+ - heart beat read (receive) failed.
|
140
138
|
def on_hbread_fail(parms, ticker_data)
|
141
139
|
begin
|
142
140
|
@log.debug "Hbreadf Parms #{info(parms)}"
|
@@ -146,7 +144,7 @@ class Slogger
|
|
146
144
|
end
|
147
145
|
end
|
148
146
|
|
149
|
-
# Stomp 1.1+ - heart beat send (transmit) failed
|
147
|
+
# Stomp 1.1+ - heart beat send (transmit) failed.
|
150
148
|
def on_hbwrite_fail(parms, ticker_data)
|
151
149
|
begin
|
152
150
|
@log.debug "Hbwritef Parms #{info(parms)}"
|
@@ -156,6 +154,7 @@ class Slogger
|
|
156
154
|
end
|
157
155
|
end
|
158
156
|
|
157
|
+
# Log SSL connection start.
|
159
158
|
def on_ssl_connecting(parms)
|
160
159
|
begin
|
161
160
|
@log.debug "SSL Connecting Parms #{info(parms)}"
|
@@ -164,6 +163,7 @@ class Slogger
|
|
164
163
|
end
|
165
164
|
end
|
166
165
|
|
166
|
+
# Log a successful SSL connect.
|
167
167
|
def on_ssl_connected(parms)
|
168
168
|
begin
|
169
169
|
@log.debug "SSL Connected Parms #{info(parms)}"
|
@@ -172,6 +172,7 @@ class Slogger
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
175
|
+
# Log an unsuccessful SSL connect.
|
175
176
|
def on_ssl_connectfail(parms)
|
176
177
|
begin
|
177
178
|
@log.debug "SSL Connect Fail Parms #{info(parms)}"
|
@@ -186,11 +187,22 @@ class Slogger
|
|
186
187
|
=end
|
187
188
|
end
|
188
189
|
|
190
|
+
# Log heart beat fires
|
191
|
+
def on_hbfire(parms, srind, curt)
|
192
|
+
begin
|
193
|
+
@log.debug "HeartBeat Fire Parms #{info(parms)}"
|
194
|
+
@log.debug "HeartBeat Fire Send/Receive #{srind}"
|
195
|
+
rescue
|
196
|
+
@log.debug "HeartBeat Fire oops"
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
189
200
|
private
|
190
201
|
|
202
|
+
# Example information extract.
|
191
203
|
def info(parms)
|
192
204
|
#
|
193
|
-
# Available in the Hash:
|
205
|
+
# Available in the parms Hash:
|
194
206
|
# parms[:cur_host]
|
195
207
|
# parms[:cur_port]
|
196
208
|
# parms[:cur_login]
|
@@ -199,11 +211,12 @@ class Slogger
|
|
199
211
|
# parms[:cur_recondelay]
|
200
212
|
# parms[:cur_parseto]
|
201
213
|
# parms[:cur_conattempts]
|
214
|
+
# parms[:openstat]
|
202
215
|
#
|
203
216
|
# For the on_ssl_connectfail callback these are also available:
|
204
217
|
# parms[:ssl_exception]
|
205
218
|
#
|
206
|
-
"Host: #{parms[:cur_host]}, Port: #{parms[:cur_port]}, Login:
|
219
|
+
"Host: #{parms[:cur_host]}, Port: #{parms[:cur_port]}, Login: #{parms[:cur_login]}, Passcode: #{parms[:cur_passcode]}, ssl: #{parms[:cur_ssl]}"
|
207
220
|
end
|
208
221
|
end # of class
|
209
222
|
|
data/examples/ssl_uc1.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
-
# SSL Use Case 1 - server does *not* authenticate client, client does *not* authenticate server
|
9
|
+
# == SSL Use Case 1 - server does *not* authenticate client, client does *not* authenticate server
|
10
10
|
#
|
11
11
|
# Subcase 1.A - Message broker configuration does *not* require client authentication
|
12
12
|
#
|
@@ -18,18 +18,29 @@ require "stomp"
|
|
18
18
|
#
|
19
19
|
# - Expect connection failure (broker must be sent a valid client certificate)
|
20
20
|
#
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
class ExampleSSL1
|
22
|
+
# Initialize.
|
23
|
+
def initialize
|
24
|
+
end
|
25
|
+
# Run example.
|
26
|
+
def run
|
27
|
+
ssl_opts = Stomp::SSLParams.new
|
28
|
+
hash = { :hosts => [
|
29
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
24
30
|
],
|
25
|
-
|
31
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
26
32
|
}
|
27
|
-
#
|
28
|
-
puts "Connect starts, SSL Use Case 1"
|
29
|
-
c = Stomp::Connection.new(hash)
|
30
|
-
puts "Connect completed"
|
31
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
32
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
33
|
-
#
|
34
|
-
c.disconnect
|
33
|
+
#
|
34
|
+
puts "Connect starts, SSL Use Case 1"
|
35
|
+
c = Stomp::Connection.new(hash)
|
36
|
+
puts "Connect completed"
|
37
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
38
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
39
|
+
#
|
40
|
+
c.disconnect
|
41
|
+
end
|
42
|
+
end
|
43
|
+
#
|
44
|
+
e = ExampleSSL1.new
|
45
|
+
e.run
|
35
46
|
|
data/examples/ssl_uc1_ciphers.rb
CHANGED
@@ -6,28 +6,41 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
+
# == SSL Use Case 1 - User Supplied Ciphers
|
10
|
+
#
|
9
11
|
# If you need your own ciphers list, this is how.
|
10
12
|
# Stomp's default list will work in many cases. If you need to use this, you
|
11
13
|
# will know it because SSL connect will fail. In that case, determining
|
12
14
|
# _what_ should be in the list is your responsibility.
|
13
15
|
#
|
14
|
-
|
15
|
-
|
16
|
+
class ExampleSSL1C
|
17
|
+
# Initialize.
|
18
|
+
def initialize
|
19
|
+
end
|
20
|
+
# Run example.
|
21
|
+
def run
|
22
|
+
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
23
|
+
["DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EXP-EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-RC2-CBC-MD5", "TLSv1/SSLv3", 40, 128], ["EXP-RC4-MD5", "TLSv1/SSLv3", 40, 128]]
|
16
24
|
|
17
|
-
ssl_opts = Stomp::SSLParams.new(:ciphers => ciphers_list)
|
25
|
+
ssl_opts = Stomp::SSLParams.new(:ciphers => ciphers_list)
|
18
26
|
|
19
|
-
#
|
20
|
-
# SSL Use Case 1
|
21
|
-
#
|
22
|
-
hash = { :hosts => [
|
23
|
-
|
27
|
+
#
|
28
|
+
# SSL Use Case 1
|
29
|
+
#
|
30
|
+
hash = { :hosts => [
|
31
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
24
32
|
]
|
25
33
|
}
|
26
|
-
#
|
27
|
-
puts "Connect starts, SSL Use Case 1"
|
28
|
-
c = Stomp::Connection.new(hash)
|
29
|
-
puts "Connect completed"
|
30
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
31
|
-
#
|
32
|
-
c.disconnect
|
34
|
+
#
|
35
|
+
puts "Connect starts, SSL Use Case 1"
|
36
|
+
c = Stomp::Connection.new(hash)
|
37
|
+
puts "Connect completed"
|
38
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
39
|
+
#
|
40
|
+
c.disconnect
|
41
|
+
end
|
42
|
+
end
|
43
|
+
#
|
44
|
+
e = ExampleSSL1C.new
|
45
|
+
e.run
|
33
46
|
|
data/examples/ssl_uc2.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
-
# SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server
|
9
|
+
# == SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server
|
10
10
|
#
|
11
11
|
# Subcase 2.A - Message broker configuration does *not* require client authentication
|
12
12
|
#
|
@@ -18,21 +18,31 @@ require "stomp"
|
|
18
18
|
#
|
19
19
|
# - Expect connection failure (broker must be sent a valid client certificate)
|
20
20
|
#
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
class ExampleSSL2
|
22
|
+
# Initialize.
|
23
|
+
def initialize
|
24
|
+
end
|
25
|
+
# Run example.
|
26
|
+
def run
|
27
|
+
ts_flist = []
|
28
|
+
ts_flist << "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt"
|
29
|
+
ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","))
|
30
|
+
#
|
31
|
+
hash = { :hosts => [
|
32
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
27
33
|
],
|
28
|
-
|
34
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
29
35
|
}
|
30
|
-
#
|
31
|
-
puts "Connect starts, SSL Use Case 2"
|
32
|
-
c = Stomp::Connection.new(hash)
|
33
|
-
puts "Connect completed"
|
34
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
35
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
36
|
-
c.disconnect
|
37
|
-
|
36
|
+
#
|
37
|
+
puts "Connect starts, SSL Use Case 2"
|
38
|
+
c = Stomp::Connection.new(hash)
|
39
|
+
puts "Connect completed"
|
40
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
41
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
42
|
+
c.disconnect
|
43
|
+
end
|
44
|
+
end
|
45
|
+
#
|
46
|
+
e = ExampleSSL2.new
|
47
|
+
e.run
|
38
48
|
|
data/examples/ssl_uc2_ciphers.rb
CHANGED
@@ -6,29 +6,42 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
+
# == SSL Use Case 2 - User Supplied Ciphers
|
10
|
+
#
|
9
11
|
# If you need your own ciphers list, this is how.
|
10
12
|
# Stomp's default list will work in many cases. If you need to use this, you
|
11
13
|
# will know it because SSL connect will fail. In that case, determining
|
12
14
|
# _what_ should be in the list is your responsibility.
|
13
15
|
#
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
#
|
23
|
-
|
24
|
-
|
16
|
+
class ExampleSSL2C
|
17
|
+
# Initialize.
|
18
|
+
def initialize
|
19
|
+
end
|
20
|
+
# Run example.
|
21
|
+
def run
|
22
|
+
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
23
|
+
["DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EXP-EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-RC2-CBC-MD5", "TLSv1/SSLv3", 40, 128], ["EXP-RC4-MD5", "TLSv1/SSLv3", 40, 128]]
|
24
|
+
#
|
25
|
+
# SSL Use Case 2
|
26
|
+
#
|
27
|
+
ts_flist = []
|
28
|
+
ts_flist << "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt"
|
29
|
+
ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","), :ciphers => ciphers_list)
|
30
|
+
#
|
31
|
+
hash = { :hosts => [
|
32
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
25
33
|
]
|
26
34
|
}
|
27
|
-
#
|
28
|
-
puts "Connect starts, SSL Use Case 2"
|
29
|
-
c = Stomp::Connection.new(hash)
|
30
|
-
puts "Connect completed"
|
31
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
32
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
33
|
-
c.disconnect
|
35
|
+
#
|
36
|
+
puts "Connect starts, SSL Use Case 2"
|
37
|
+
c = Stomp::Connection.new(hash)
|
38
|
+
puts "Connect completed"
|
39
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
40
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
41
|
+
c.disconnect
|
42
|
+
end
|
43
|
+
end
|
44
|
+
#
|
45
|
+
e = ExampleSSL2C.new
|
46
|
+
e.run
|
34
47
|
|
data/examples/ssl_uc3.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
-
# SSL Use Case 3 - server *does* authenticate client, client does *not* authenticate server
|
9
|
+
# == SSL Use Case 3 - server *does* authenticate client, client does *not* authenticate server
|
10
10
|
#
|
11
11
|
# Subcase 3.A - Message broker configuration does *not* require client authentication
|
12
12
|
#
|
@@ -20,20 +20,31 @@ require "stomp"
|
|
20
20
|
# - Expect a verify result of 20 because the client did not authenticate the
|
21
21
|
# server's certificate.
|
22
22
|
#
|
23
|
-
|
24
|
-
|
23
|
+
class ExampleSSL3
|
24
|
+
# Initialize.
|
25
|
+
def initialize
|
26
|
+
end
|
27
|
+
# Run example.
|
28
|
+
def run
|
29
|
+
ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
|
30
|
+
:cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt")
|
25
31
|
|
26
|
-
#
|
27
|
-
hash = { :hosts => [
|
28
|
-
|
32
|
+
#
|
33
|
+
hash = { :hosts => [
|
34
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
29
35
|
],
|
30
|
-
|
36
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
31
37
|
}
|
32
|
-
#
|
33
|
-
puts "Connect starts, SSL Use Case 3"
|
34
|
-
c = Stomp::Connection.new(hash)
|
35
|
-
puts "Connect completed"
|
36
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
37
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
38
|
-
c.disconnect
|
38
|
+
#
|
39
|
+
puts "Connect starts, SSL Use Case 3"
|
40
|
+
c = Stomp::Connection.new(hash)
|
41
|
+
puts "Connect completed"
|
42
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
43
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
44
|
+
c.disconnect
|
45
|
+
end
|
46
|
+
end
|
47
|
+
#
|
48
|
+
e = ExampleSSL3.new
|
49
|
+
e.run
|
39
50
|
|
data/examples/ssl_uc3_ciphers.rb
CHANGED
@@ -6,29 +6,42 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
+
# == SSL Use Case 3 - User Supplied Ciphers
|
10
|
+
#
|
9
11
|
# If you need your own ciphers list, this is how.
|
10
12
|
# Stomp's default list will work in many cases. If you need to use this, you
|
11
13
|
# will know it because SSL connect will fail. In that case, determining
|
12
14
|
# _what_ should be in the list is your responsibility.
|
13
15
|
#
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
#
|
23
|
-
|
24
|
-
|
16
|
+
class ExampleSSL3C
|
17
|
+
# Initialize.
|
18
|
+
def initialize
|
19
|
+
end
|
20
|
+
# Run example.
|
21
|
+
def run
|
22
|
+
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
23
|
+
["DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EXP-EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-DES-CBC-SHA", "TLSv1/SSLv3", 40, 56], ["EXP-RC2-CBC-MD5", "TLSv1/SSLv3", 40, 128], ["EXP-RC4-MD5", "TLSv1/SSLv3", 40, 128]]
|
24
|
+
#
|
25
|
+
# SSL Use Case 3
|
26
|
+
#
|
27
|
+
ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
|
28
|
+
:cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt", :ciphers => ciphers_list)
|
29
|
+
|
30
|
+
#
|
31
|
+
hash = { :hosts => [
|
32
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
25
33
|
]
|
26
34
|
}
|
27
|
-
#
|
28
|
-
puts "Connect starts, SSL Use Case 3"
|
29
|
-
c = Stomp::Connection.new(hash)
|
30
|
-
puts "Connect completed"
|
31
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
32
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
33
|
-
c.disconnect
|
35
|
+
#
|
36
|
+
puts "Connect starts, SSL Use Case 3"
|
37
|
+
c = Stomp::Connection.new(hash)
|
38
|
+
puts "Connect completed"
|
39
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
40
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
41
|
+
c.disconnect
|
42
|
+
end
|
43
|
+
end
|
44
|
+
#
|
45
|
+
e = ExampleSSL3C.new
|
46
|
+
e.run
|
34
47
|
|
data/examples/ssl_uc4.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
require "rubygems"
|
7
7
|
require "stomp"
|
8
8
|
#
|
9
|
-
# SSL Use Case 4 - server *does* authenticate client, client *does* authenticate server
|
9
|
+
# == SSL Use Case 4 - server *does* authenticate client, client *does* authenticate server
|
10
10
|
#
|
11
11
|
# Subcase 4.A - Message broker configuration does *not* require client authentication
|
12
12
|
#
|
@@ -20,20 +20,31 @@ require "stomp"
|
|
20
20
|
# - Expect a verify result of 0 because the client did authenticate the
|
21
21
|
# server's certificate.
|
22
22
|
#
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
class ExampleSSL4
|
24
|
+
# Initialize.
|
25
|
+
def initialize
|
26
|
+
end
|
27
|
+
# Run example.
|
28
|
+
def run
|
29
|
+
ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
|
30
|
+
:cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt",
|
31
|
+
:ts_files => "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt")
|
32
|
+
#
|
33
|
+
hash = { :hosts => [
|
34
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
29
35
|
],
|
30
|
-
|
36
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
31
37
|
}
|
32
|
-
#
|
33
|
-
puts "Connect starts, SSL Use Case 4"
|
34
|
-
c = Stomp::Connection.new(hash)
|
35
|
-
puts "Connect completed"
|
36
|
-
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
37
|
-
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
38
|
-
c.disconnect
|
38
|
+
#
|
39
|
+
puts "Connect starts, SSL Use Case 4"
|
40
|
+
c = Stomp::Connection.new(hash)
|
41
|
+
puts "Connect completed"
|
42
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
43
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
44
|
+
c.disconnect
|
45
|
+
end
|
46
|
+
end
|
47
|
+
#
|
48
|
+
e = ExampleSSL4.new
|
49
|
+
e.run
|
39
50
|
|