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.
Files changed (56) hide show
  1. data/CHANGELOG.rdoc +11 -0
  2. data/README.rdoc +38 -26
  3. data/Rakefile +3 -0
  4. data/bin/catstomp +34 -34
  5. data/bin/stompcat +36 -36
  6. data/examples/client11_ex1.rb +64 -55
  7. data/examples/client11_putget1.rb +47 -35
  8. data/examples/conn11_ex1.rb +59 -51
  9. data/examples/conn11_ex2.rb +59 -50
  10. data/examples/conn11_hb1.rb +35 -26
  11. data/examples/consumer.rb +25 -12
  12. data/examples/get11conn_ex1.rb +97 -89
  13. data/examples/get11conn_ex2.rb +55 -47
  14. data/examples/logexamp.rb +66 -52
  15. data/examples/logexamp_ssl.rb +66 -52
  16. data/examples/publisher.rb +21 -10
  17. data/examples/put11conn_ex1.rb +35 -24
  18. data/examples/putget11_rh1.rb +66 -56
  19. data/examples/slogger.rb +65 -52
  20. data/examples/ssl_uc1.rb +24 -13
  21. data/examples/ssl_uc1_ciphers.rb +28 -15
  22. data/examples/ssl_uc2.rb +26 -16
  23. data/examples/ssl_uc2_ciphers.rb +31 -18
  24. data/examples/ssl_uc3.rb +25 -14
  25. data/examples/ssl_uc3_ciphers.rb +31 -18
  26. data/examples/ssl_uc4.rb +26 -15
  27. data/examples/ssl_uc4_ciphers.rb +32 -19
  28. data/examples/ssl_ucx_default_ciphers.rb +25 -12
  29. data/examples/stomp11_common.rb +16 -15
  30. data/examples/topic_consumer.rb +23 -10
  31. data/examples/topic_publisher.rb +22 -8
  32. data/lib/client/utils.rb +116 -0
  33. data/lib/connection/heartbeats.rb +173 -0
  34. data/lib/connection/netio.rb +322 -0
  35. data/lib/connection/utf8.rb +294 -0
  36. data/lib/connection/utils.rb +104 -0
  37. data/lib/stomp/client.rb +127 -179
  38. data/lib/stomp/codec.rb +5 -2
  39. data/lib/stomp/connection.rb +109 -865
  40. data/lib/stomp/constants.rb +52 -33
  41. data/lib/stomp/errors.rb +56 -5
  42. data/lib/stomp/ext/hash.rb +4 -0
  43. data/lib/stomp/message.rb +49 -29
  44. data/lib/stomp/sslparams.rb +83 -71
  45. data/lib/stomp/version.rb +3 -1
  46. data/lib/stomp.rb +18 -9
  47. data/stomp.gemspec +58 -3
  48. data/test/test_client.rb +28 -1
  49. data/test/test_codec.rb +8 -2
  50. data/test/test_connection.rb +29 -0
  51. data/test/test_connection1p.rb +31 -16
  52. data/test/test_helper.rb +20 -3
  53. data/test/test_message.rb +8 -3
  54. data/test/test_ssl.rb +10 -4
  55. data/test/tlogger.rb +16 -15
  56. 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: Port: #{parms[:cur_login]}, Passcode: #{parms[:cur_passcode]}, ssl: #{parms[:cur_ssl]}"
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
- ssl_opts = Stomp::SSLParams.new
22
- hash = { :hosts => [
23
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- :reliable => false, # YMMV, to test this in a sane manner
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
 
@@ -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
- 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],
15
- ["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
+ 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
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- ts_flist = []
22
- ts_flist << "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt"
23
- ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","))
24
- #
25
- hash = { :hosts => [
26
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- :reliable => false, # YMMV, to test this in a sane manner
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
 
@@ -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
- 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],
15
- ["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
- #
17
- # SSL Use Case 2
18
- #
19
- ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
20
- :cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt", :ciphers => ciphers_list)
21
-
22
- #
23
- hash = { :hosts => [
24
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
24
- :cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt")
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
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
32
+ #
33
+ hash = { :hosts => [
34
+ {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
29
35
  ],
30
- :reliable => false, # YMMV, to test this in a sane manner
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
 
@@ -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
- 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],
15
- ["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
- #
17
- # SSL Use Case 3
18
- #
19
- ts_flist = []
20
- ts_flist << "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt"
21
- ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","), :ciphers => ciphers_list)
22
- #
23
- hash = { :hosts => [
24
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
24
- :cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt",
25
- :ts_files => "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt")
26
- #
27
- hash = { :hosts => [
28
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
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
- :reliable => false, # YMMV, to test this in a sane manner
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