stomp 1.4.4 → 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +96 -100
  4. data/examples/EXAMPLES.md +251 -0
  5. data/examples/amqdurasub.rb +14 -17
  6. data/examples/artemis/cliwaiter_not_reliable.rb +12 -5
  7. data/examples/artemis/{cliwaiter_reliable.rb → cliwaiter_reliable_hb.rb} +24 -23
  8. data/examples/client_conndisc.rb +66 -0
  9. data/examples/client_putget.rb +94 -0
  10. data/examples/conn_conndisc.rb +102 -0
  11. data/examples/conn_putget.rb +124 -0
  12. data/examples/contrib.sh +2 -3
  13. data/examples/contributors.rb +26 -14
  14. data/examples/examplogger.rb +1 -1
  15. data/examples/{consumer.rb → historical/consumer.rb} +0 -0
  16. data/examples/{publisher.rb → historical/publisher.rb} +0 -0
  17. data/examples/{topic_consumer.rb → historical/topic_consumer.rb} +0 -0
  18. data/examples/{topic_publisher.rb → historical/topic_publisher.rb} +0 -0
  19. data/examples/logexamp.rb +23 -14
  20. data/examples/putget_file.rb +79 -0
  21. data/examples/{putget11_rh1.rb → putget_rephdrs.rb} +16 -15
  22. data/examples/ssl/SSL.md +189 -0
  23. data/examples/{ssl_ctxoptions.rb → ssl/misc/ssl_ctxoptions.rb} +23 -14
  24. data/examples/ssl/misc/ssl_newparm.rb +53 -0
  25. data/examples/ssl/misc/ssl_ucx_default_ciphers.rb +54 -0
  26. data/examples/ssl/ssl_common.rb +96 -0
  27. data/examples/ssl/sslexall.sh +17 -0
  28. data/examples/{ssl_uc1.rb → ssl/uc1/ssl_uc1.rb} +15 -11
  29. data/examples/ssl/uc1/ssl_uc1_ciphers.rb +60 -0
  30. data/examples/{ssl_uc2.rb → ssl/uc2/ssl_uc2.rb} +17 -10
  31. data/examples/ssl/uc2/ssl_uc2_ciphers.rb +67 -0
  32. data/examples/{ssl_uc3.rb → ssl/uc3/ssl_uc3.rb} +15 -16
  33. data/examples/ssl/uc3/ssl_uc3_ciphers.rb +65 -0
  34. data/examples/{ssl_uc4.rb → ssl/uc4/ssl_uc4.rb} +15 -15
  35. data/examples/ssl/uc4/ssl_uc4_ciphers.rb +66 -0
  36. data/examples/stomp_common.rb +97 -0
  37. data/lib/connection/netio.rb +83 -37
  38. data/lib/connection/utf8.rb +0 -7
  39. data/lib/connection/utils.rb +4 -1
  40. data/lib/stomp/client.rb +5 -1
  41. data/lib/stomp/connection.rb +25 -15
  42. data/lib/stomp/constants.rb +109 -0
  43. data/lib/stomp/errors.rb +11 -0
  44. data/lib/stomp/sslparams.rb +3 -4
  45. data/lib/stomp/version.rb +2 -2
  46. data/stomp.gemspec +31 -37
  47. data/test/test_anonymous.rb +4 -0
  48. data/test/test_client.rb +2 -0
  49. data/test/test_connection.rb +4 -0
  50. data/test/test_connection1p.rb +2 -4
  51. data/test/test_helper.rb +11 -0
  52. metadata +30 -36
  53. data/examples/artemis/artlogger.rb +0 -41
  54. data/examples/client11_ex1.rb +0 -89
  55. data/examples/client11_putget1.rb +0 -71
  56. data/examples/conn11_ex1.rb +0 -112
  57. data/examples/conn11_ex2.rb +0 -87
  58. data/examples/conn11_hb1.rb +0 -57
  59. data/examples/consume_file.rb +0 -63
  60. data/examples/get11conn_ex1.rb +0 -117
  61. data/examples/get11conn_ex2.rb +0 -77
  62. data/examples/lflogger.rb +0 -316
  63. data/examples/logexamp_ssl.rb +0 -81
  64. data/examples/publish_file.rb +0 -76
  65. data/examples/publish_file_conn.rb +0 -75
  66. data/examples/put11conn_ex1.rb +0 -56
  67. data/examples/ssl_common.rb +0 -73
  68. data/examples/ssl_newparm.rb +0 -43
  69. data/examples/ssl_uc1_ciphers.rb +0 -53
  70. data/examples/ssl_uc2_ciphers.rb +0 -60
  71. data/examples/ssl_uc3_ciphers.rb +0 -64
  72. data/examples/ssl_uc4_ciphers.rb +0 -65
  73. data/examples/ssl_ucx_default_ciphers.rb +0 -41
  74. data/examples/stomp11_common.rb +0 -54
@@ -11,7 +11,7 @@ require 'logger' # use the standard Ruby logger .....
11
11
  # * on_connectfail: unsuccessful connect (will usually be retried)
12
12
  # * on_disconnect: successful disconnect
13
13
  #
14
- # * on_miscerr: on miscellaneous xmit/recv errors
14
+ # * on_miscerr: on miscellaneous transmit/receive errors
15
15
  #
16
16
  # * on_publish: publish called
17
17
  # * on_subscribe: subscribe called
@@ -5,13 +5,19 @@ require 'stomp'
5
5
  require 'logger' # for the 'local' logger
6
6
  #
7
7
  if Kernel.respond_to?(:require_relative)
8
+ require_relative("./stomp_common")
8
9
  require_relative("./examplogger")
9
10
  else
10
11
  $LOAD_PATH << File.dirname(__FILE__)
11
12
  require "examplogger"
13
+ require("stomp_common")
12
14
  end
15
+ include Stomp1xCommon
13
16
  #
14
- # == A STOMP::Connection program which uses the callback logging facility.
17
+ # == A program which demonstrates the callback logging facility.
18
+ #
19
+ # With appropriate specification of STOMP_PORT, this code should also
20
+ # demonstrate failover.
15
21
  #
16
22
  class LoggerExample
17
23
  # Initialize.
@@ -25,18 +31,20 @@ class LoggerExample
25
31
 
26
32
  # //////////////////////////////////////////////////////////////////////////////
27
33
  mylog = Slogger::new # The client provided STOMP callback logger
28
-
29
34
  # //////////////////////////////////////////////////////////////////////////////
30
35
  user = ENV['STOMP_USER'] ? ENV['STOMP_USER'] : 'guest'
31
36
  password = ENV['STOMP_PASSWORD'] ? ENV['STOMP_PASSWORD'] : 'guest'
32
37
  host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : 'localhost'
33
38
  port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61613
39
+ so = usessl()
34
40
  # //////////////////////////////////////////////////////////////////////////////
35
41
  # A hash type connect *MUST* be used to enable callback logging.
36
42
  # //////////////////////////////////////////////////////////////////////////////
37
43
  hash = { :hosts => [
38
- {:login => user, :passcode => password, :host => 'noonehome', :port => 2525},
39
- {:login => user, :passcode => password, :host => host, :port => port},
44
+ {:login => user, :passcode => password, :host => 'noonehome', :port => 2525,
45
+ :ssl => so},
46
+ {:login => user, :passcode => password, :host => host, :port => port,
47
+ :ssl => so},
40
48
  ],
41
49
  :logger => mylog, # This enables callback logging!
42
50
  :max_reconnect_attempts => 5,
@@ -46,15 +54,17 @@ class LoggerExample
46
54
  # For a Connection:
47
55
  llog.debug "LE Connection processing starts"
48
56
  conn = Stomp::Connection.new(hash)
49
- conn.disconnect
57
+ conn.disconnect()
58
+
50
59
  # //////////////////////////////////////////////////////////////////////////////
51
60
  llog.debug "LE Connection processing complete"
52
61
 
53
62
  # //////////////////////////////////////////////////////////////////////////////
54
63
  # For a Client:
55
64
  llog.debug "LE Client processing starts"
56
- conn = Stomp::Client.new(hash)
57
- conn.close
65
+ client = Stomp::Client.new(hash)
66
+ client.close()
67
+
58
68
  # //////////////////////////////////////////////////////////////////////////////
59
69
  llog.debug "LE Client processing complete"
60
70
 
@@ -65,9 +75,10 @@ class LoggerExample
65
75
  #
66
76
  dest = "/queue/loggerq1"
67
77
  conn.publish dest, "a logger message"
68
- conn.subscribe dest
69
- msg = conn.receive
70
- conn.disconnect
78
+ conn.subscribe(dest)
79
+ msg = conn.receive()
80
+ conn.disconnect()
81
+
71
82
  # //////////////////////////////////////////////////////////////////////////////
72
83
  llog.debug "LE Connection Enhanced processing complete"
73
84
 
@@ -75,7 +86,5 @@ class LoggerExample
75
86
  llog.debug "LE Ending"
76
87
  end
77
88
  end
78
- e = LoggerExample.new
79
- e.run
80
-
81
-
89
+ e = LoggerExample.new()
90
+ e.run()
@@ -0,0 +1,79 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'rubygems'
4
+ require 'stomp'
5
+
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./stomp_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "stomp_common"
11
+ end
12
+ include Stomp1xCommon
13
+ #
14
+ # Used primarily for testing performance when sending/receiving "large" messages.
15
+ # "large" => YMMV
16
+ #
17
+ class FilePutGet
18
+ # Initialize.
19
+ def initialize
20
+ @qname = dest()
21
+ end
22
+ # Run put part of example.
23
+ def doput()
24
+ puts
25
+ puts "pgf001 - put starts"
26
+ start_time = Time.now.to_f
27
+ fname = ARGV[0]
28
+ puts "pgf002: File Name: #{fname}"
29
+ file = open(fname, "r")
30
+ rs = Time.now.to_f
31
+ buff = file.read
32
+ re = Time.now.to_f
33
+ ppt = sprintf("%22.8f", re - rs)
34
+ puts "pgf003: File size: #{buff.respond_to?(:bytesize) ? buff.bytesize : buff.length} bytes"
35
+ puts "pgf004: File read time: #{ppt} seconds"
36
+ file.close
37
+ #
38
+ conn = get_connection()
39
+ puts "pgf005: Qname is: #{@qname}"
40
+ # Try to gracefully handle files that exceed broker size limits.
41
+ ph = {:presistent => true}
42
+ ph['suppress_content_length'] = 'yes' if suppresscl()
43
+ puts "pgf006: Headers are: #{ph.inspect}"
44
+ begin
45
+ conn.publish(@qname, buff, ph)
46
+ rescue
47
+ puts "pgf900: exception on publish: #{$!}"
48
+ raise
49
+ end
50
+ conn.disconnect()
51
+ end_time = Time.now.to_f
52
+ ppt = sprintf("%22.8f", end_time - start_time)
53
+ puts "pgf007: File publish time: #{ppt} seconds"
54
+ end
55
+ # Run get part of example.
56
+ def doget()
57
+ puts
58
+ puts "pgf101 - get starts"
59
+ start_time = Time.now.to_f
60
+ conn = get_connection()
61
+ uuid = conn.uuid() # uuid for Stomp::Connection is a public method
62
+ conn.subscribe(@qname, {'id' => uuid}) # Subscribe
63
+ msg = conn.receive()
64
+ puts "pgf102: Message Command: #{msg.command}"
65
+ puts "pgf103: Message Headers: #{msg.headers}"
66
+ body_length_bytes = msg.body.respond_to?(:bytesize) ? msg.body.bytesize : msg.body.length
67
+ puts "pgf104: Received: #{body_length_bytes} bytes"
68
+ #
69
+ end_time = Time.now.to_f
70
+ ppt = sprintf("%22.8f", end_time - start_time)
71
+ puts "pgf105: File receive time: #{ppt} seconds"
72
+ conn.disconnect()
73
+ end
74
+
75
+ end
76
+ #
77
+ e = FilePutGet.new()
78
+ e.doput()
79
+ e.doget()
@@ -5,21 +5,22 @@
5
5
  # Change this to suit your requirements.
6
6
  #
7
7
  if Kernel.respond_to?(:require_relative)
8
- require_relative("./stomp11_common")
8
+ require_relative("./stomp_common")
9
9
  else
10
10
  $LOAD_PATH << File.dirname(__FILE__)
11
- require "stomp11_common"
11
+ require "stomp_common"
12
12
  end
13
- include Stomp11Common
13
+ include Stomp1xCommon
14
14
  #
15
- # == Stomp 1.1 Send/Receive Example - Repeated Headers
15
+ # == Stomp 1.1+ Send/Receive Example - Repeated Headers
16
16
  #
17
- # Purpose: to demonstrate sending and receiving using Stomp 1.1, and an unusual
17
+ # Purpose: to demonstrate sending and receiving using Stomp 1.1+, and an unusual
18
18
  # aspect of the specification. What is demonstrated here is the use of
19
19
  # 'repeated headers'. Note that brokers MAY support repeated headers as
20
- # demonstrated, but are not required to provide this support. This example
21
- # should run against the Apollo broker. It will *not* currently run against
22
- # RabbitMQ. YMMV depending on your broker.
20
+ # demonstrated, but are not required to provide this support.
21
+ #
22
+ # This example should run against the Apollo broker. It will *not* currently run against
23
+ # ActiveMQ or RabbitMQ. YMMV depending on your broker.
23
24
  #
24
25
  # See: http://stomp.github.com/stomp-specification-1.1.html#Repeated_Header_Entries
25
26
  #
@@ -30,7 +31,8 @@ class RepeatedHeadersExample
30
31
  # Run example.
31
32
  def run
32
33
  conn = get_connection() # Use helper method to obtain a Stomp#connection
33
- raise "Unexpected protocol level" if conn.protocol != Stomp::SPL_11
34
+ raise "Unexpected protocol level" if conn.protocol == Stomp::SPL_10
35
+ puts "Repeated headers example, host: #{host()}, port: #{port()}"
34
36
  #
35
37
  # The gem supports repeated headers by allowing the 'value' part of a header
36
38
  # to be an Array instance.
@@ -42,7 +44,7 @@ class RepeatedHeadersExample
42
44
  # to hold the repeated values. This is presented the the calling client to
43
45
  # be processed per client requirements.
44
46
  #
45
- qname = "/queue/nodea.nodeb.nodec"
47
+ qname = dest()
46
48
  data = "message payload: #{Time.now.to_f}"
47
49
  key2_repeats = ["key2val3", "key2val2", "key2val1" ]
48
50
  headers = {"key1" => "value1", # A normal header
@@ -52,7 +54,7 @@ class RepeatedHeadersExample
52
54
  #
53
55
  # Ship it.
54
56
  #
55
- conn.publish qname, data , headers
57
+ conn.publish(qname, data , headers)
56
58
  puts "Sent data: #{data}"
57
59
  #
58
60
  # Receive phase.
@@ -84,10 +86,9 @@ class RepeatedHeadersExample
84
86
  #
85
87
  # And finally, disconnect.
86
88
  #
87
- conn.disconnect
89
+ conn.disconnect()
88
90
  end
89
91
  end
90
92
  #
91
- e = RepeatedHeadersExample.new
92
- e.run
93
-
93
+ e = RepeatedHeadersExample.new()
94
+ e.run()
@@ -0,0 +1,189 @@
1
+ # SSL Examples
2
+
3
+ This is to provide additional documentation regarding the gem's
4
+ SSL related examples.
5
+
6
+ This documentation is based on experiments with OpenSSL.
7
+
8
+
9
+ ## Environment Variables
10
+
11
+ You will likely need to use supported environment variables to
12
+ define SSL related data locations on your system. See example
13
+ ssl_common.rb for details of support of this functionality.
14
+
15
+ <table border="2" style="width:100%;border: 2px solid black;">
16
+ <tr>
17
+ <th style="border: 2px solid black;padding-left: 10px;" >
18
+ Environment Variable
19
+ </th>
20
+ <th style="border: 2px solid black;padding-left: 10px;" >
21
+ Description
22
+ </th>
23
+ </tr>
24
+ <!-- -->
25
+ <tr>
26
+ <td style="border: 2px solid black;padding-left: 10px;" >
27
+ CA_FLOC
28
+ </td>
29
+ <td style="border: 2px solid black;padding-left: 10px;" >
30
+ CA cert file location/directory.
31
+ </td>
32
+ </tr>
33
+ <!-- -->
34
+ <tr>
35
+ <td style="border: 2px solid black;padding-left: 10px;" >
36
+ CLI_FLOC
37
+ </td>
38
+ <td style="border: 2px solid black;padding-left: 10px;" >
39
+ Client cert file location/directory.
40
+ </td>
41
+ </tr>
42
+ <!-- -->
43
+ <tr>
44
+ <td style="border: 2px solid black;padding-left: 10px;" >
45
+ CLI_FILE
46
+ </td>
47
+ <td style="border: 2px solid black;padding-left: 10px;" >
48
+ Clent cert file name.
49
+ </td>
50
+ </tr>
51
+ <!-- -->
52
+ <tr>
53
+ <td style="border: 2px solid black;padding-left: 10px;" >
54
+ CLI_KEY
55
+ </td>
56
+ <td style="border: 2px solid black;padding-left: 10px;" >
57
+ Client private key file name. This file should not be
58
+ exposed to the outside world.
59
+ </td>
60
+ </tr>
61
+ <!-- -->
62
+ <tr>
63
+ <td style="border: 2px solid black;padding-left: 10px;" >
64
+ STOMP_HOST
65
+ </td>
66
+ <td style="border: 2px solid black;padding-left: 10px;" >
67
+ The host name of your SSL broker.
68
+ </td>
69
+ </tr>
70
+ <!-- -->
71
+ <tr>
72
+ <td style="border: 2px solid black;padding-left: 10px;" >
73
+ STOMP_PORT
74
+ </td>
75
+ <td style="border: 2px solid black;padding-left: 10px;" >
76
+ The the TCP port number used by your SSL broker.
77
+ </td>
78
+ </tr>
79
+ </table>
80
+
81
+ ## The Four Main SSL Use Cases
82
+
83
+ There are four main SSL use cases. Example code for each of these can be found
84
+ in the 'examples/uc?' subdirectories. Each individual use case is described below.
85
+
86
+ Each 'sxamples/uc?' subdirectory contains two example programs:
87
+
88
+ * A primary demonstration of the example
89
+ * A secondary demonstration of the example where client code overrides the
90
+ default list of ciphers that SSL considers.
91
+
92
+ Note that each use case has two subcases:
93
+
94
+ * Your broker does _not_ require client authentication
95
+ * Your broker _does_ require client authentication
96
+
97
+ ### Use Case 1 - No Authentification by broker or client
98
+
99
+ Subcase A - When your broker does _not_ require client authentication:
100
+
101
+
102
+ * Expect connection success.
103
+ * Expect a verify result of 20 becuase the client did not authenticate the
104
+ server's certificate.
105
+
106
+
107
+ Subcase B - When your broker _does_ require client authentication:
108
+
109
+ * Expect connection failure (broker must be sent a valid client certificate).
110
+
111
+ ### Use Case 2 - No Authentification by broker, authentification by client
112
+
113
+ Subcase A - When your broker does _not_ require client authentication:
114
+
115
+ * Expect connection success
116
+ * Expect a verify result of 0 becuase the client did authenticate the
117
+ server's certificate.
118
+
119
+ Subcase B - When your broker _does_ require client authentication:
120
+
121
+ * Expect connection failure (broker must be sent a valid client certificate).
122
+
123
+ ### Use Case 3 - Authentification by broker, no authentification by broker
124
+
125
+ Subcase A - When your broker does _not_ require client authentication:
126
+
127
+ * Expect connection success
128
+ * Expect a verify result of 20 becuase the client did not authenticate the
129
+ server's certificate.
130
+
131
+ Subcase B - When your broker _does_ require client authentication:
132
+
133
+ * Expect connection success if the server can authenticate the client certificate
134
+ * Expect a verify result of 20 because the client did not authenticate the
135
+ server's certificate.
136
+
137
+ ### Use Case 4 - Authentification by both broker and client
138
+
139
+ Subcase A - When your broker does _not_ require client authentication:
140
+
141
+ * Expect connection success
142
+ * Expect a verify result of 0 becuase the client did authenticate the
143
+ server's certificate.
144
+
145
+ Subcase B - When your broker _does_ require client authentication:
146
+
147
+ * Expect connection success if the server can authenticate the client certificate
148
+ * Expect a verify result of 0 because the client did authenticate the
149
+ server's certificate.
150
+
151
+ ## Miscellaneous SSL Examples
152
+
153
+ The gem provides several other examples of using the built-in SSL
154
+ functionality. These examples are described below.
155
+
156
+ ### Override SSL Context Options
157
+
158
+ This example is in 'examples/misc/ssl_ctxoptions.rb'.
159
+
160
+ The gem provides the capability for the client to supply SSL context options
161
+ to be used during an SSL connect.
162
+
163
+ These options are passed to the gem in the `Stomp::SSLParams` instance.
164
+
165
+ These options are then placed by the gem in the `OpenSSL::SSL::SSLContext` instance used during
166
+ an SSL connect.
167
+
168
+ ### Specify Parameters When SSL Context Options Are Created
169
+
170
+ This example is in 'examples/misc/ssl_newparm.rb'.
171
+
172
+ The gem provides the capability of passing parameters to
173
+ `OpenSSL::SSL::SSLContext.new(..)`.
174
+
175
+ These options are passed to the gem in the connect hash used for open/new.
176
+
177
+ ### Override The Default Cipher List Used BY SSL
178
+
179
+ This example is in 'examples/misc/ssl_ucx_default_ciphers.rb'.
180
+
181
+ Note: this example is _not_ for use in JRuby.
182
+
183
+ The gem allows use of a default list of fairly well known and broker
184
+ supported ciphers found in `Stomp::DEFAULT_CIPHERS`.
185
+
186
+ However, the default list of Ruby ciphers can be requested.
187
+
188
+ This is requested when `Stomp::SSLParams` is created by the client using the
189
+ `:use_ruby_ciphers => true` parameter.
@@ -1,8 +1,16 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  #
4
- require "rubygems"
5
- require "stomp"
4
+ if Kernel.respond_to?(:require_relative)
5
+ require_relative("../ssl_common")
6
+ require_relative("../../stomp_common")
7
+ else
8
+ $LOAD_PATH << File.dirname(__FILE__)
9
+ require "../ssl_common"
10
+ require "../../stomp_common"
11
+ end
12
+ include SSLCommon
13
+ include Stomp1xCommon
6
14
  #
7
15
  # == Demo User Control of SSLContext options contents
8
16
  #
@@ -14,12 +22,15 @@ require "stomp"
14
22
  class ExampleSSLCtxOptions
15
23
  # Initialize.
16
24
  def initialize
25
+ # It is very likely that you will have to specify your specific port number.
26
+ # 61611 is currently my AMQ local port number for ssl client auth not required.
27
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
17
28
  end
18
29
 
19
30
  # Run example 1
20
- def run1
31
+ def run1()
21
32
  require 'openssl' unless defined?(OpenSSL)
22
- puts "run method ...."
33
+ puts "run1 method ...."
23
34
  # Define SSL Options to be used. This code is copied from the defaults
24
35
  # in later versions of Ruby V2.x (which has been backported to 1.9.3).
25
36
  #
@@ -43,9 +54,8 @@ class ExampleSSLCtxOptions
43
54
  ssl_opts = Stomp::SSLParams.new(:ssl_ctxopts => opts, # SSLContext options to set
44
55
  :use_ruby_ciphers => urc,
45
56
  :fsck => true)
46
- sport = ENV["STOMP_PORT"].to_i
47
57
  hash = { :hosts => [
48
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => sport, :ssl => ssl_opts},
58
+ {:login => login(), :passcode => passcode(), :host => host(), :port => @port, :ssl => ssl_opts},
49
59
  ],
50
60
  :reliable => false, # YMMV, to test this in a sane manner
51
61
  }
@@ -56,11 +66,11 @@ class ExampleSSLCtxOptions
56
66
  puts "SSL Verify Result: #{ssl_opts.verify_result}"
57
67
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
58
68
  #
59
- c.disconnect
69
+ c.disconnect()
60
70
  end
61
71
 
62
72
  # Run example 2
63
- def run2
73
+ def run2()
64
74
  puts "run2 method ...."
65
75
  #
66
76
  # Connection / Example 2 of 2, gem supplied options.
@@ -73,9 +83,8 @@ class ExampleSSLCtxOptions
73
83
  ssl_opts = Stomp::SSLParams.new(:ssl_ctxopts => Stomp::Connection::ssl_v2xoptions(),
74
84
  :use_ruby_ciphers => urc,
75
85
  :fsck => true)
76
- sport = ENV["STOMP_PORT"].to_i
77
86
  hash = { :hosts => [
78
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => sport, :ssl => ssl_opts},
87
+ {:login => login(), :passcode => passcode(), :host => host(), :port => @port, :ssl => ssl_opts},
79
88
  ],
80
89
  :reliable => false, # YMMV, to test this in a sane manner
81
90
  }
@@ -86,11 +95,11 @@ class ExampleSSLCtxOptions
86
95
  puts "SSL Verify Result: #{ssl_opts.verify_result}"
87
96
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
88
97
  #
89
- c.disconnect
98
+ c.disconnect()
90
99
  end
91
100
  end
92
101
  #
93
- e = ExampleSSLCtxOptions.new
94
- e.run1
95
- e.run2
102
+ e = ExampleSSLCtxOptions.new()
103
+ e.run1()
104
+ e.run2()
96
105