stomp 1.4.4 → 1.4.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 (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
@@ -0,0 +1,53 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
+ #
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("../ssl_common")
8
+ require_relative("../../stomp_common")
9
+ else
10
+ $LOAD_PATH << File.dirname(__FILE__)
11
+ require "../ssl_common"
12
+ require "../../stomp_common"
13
+ end
14
+ include SSLCommon
15
+ include Stomp1xCommon
16
+ #
17
+ # == Demo override of SSLContext.new parameters.
18
+ #
19
+ # Based roughly on example ssl_uc1.rb.
20
+ #
21
+ #
22
+ class ExampleSSLNewParm
23
+ # Initialize.
24
+ def initialize
25
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
26
+ end
27
+ # Run example.
28
+ def run
29
+ ssl_opts = Stomp::SSLParams.new()
30
+ hash = { :hosts => [
31
+ {:login => login(), :passcode => passcode(), :host => host(), :port => @port, :ssl => ssl_opts},
32
+ ],
33
+ :reliable => false, # YMMV, to test this in a sane manner
34
+ # This parameter is passed by the gem to the new method for ssl context.
35
+ :sslctx_newparm => :TLSv1, # An example, try to force TLSv1
36
+ # If your version of Ruby does not support what you ask for, Ruby openssl code will raise
37
+ # an exception. If Ruby accepts your parms, but your broker does not you will get
38
+ # different errors (depending on broker).
39
+ }
40
+ #
41
+ puts "Connect starts, Demo SSL context new parameters"
42
+ c = Stomp::Connection.new(hash)
43
+ puts "Connect completed"
44
+ puts "SSL Verify Result: #{ssl_opts.verify_result}"
45
+ puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
46
+ #
47
+ c.disconnect()
48
+ end
49
+ end
50
+ #
51
+ e = ExampleSSLNewParm.new()
52
+ e.run()
53
+
@@ -0,0 +1,54 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
+ #
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("../ssl_common")
8
+ require_relative("../../stomp_common")
9
+ else
10
+ $LOAD_PATH << File.dirname(__FILE__)
11
+ require "../ssl_common"
12
+ require "../../stomp_common"
13
+ end
14
+ include SSLCommon
15
+ include Stomp1xCommon
16
+ #
17
+ # == Example: Use Ruby Supplied Ciphers
18
+ #
19
+ # If you use SSLParams, and need the _default_ Ruby ciphers, this is how.
20
+ #
21
+ # NOTE: JRuby users may find that this is a *required* action. YMMV.
22
+ #
23
+ class ExampleRubyCiphers
24
+ # Initialize.
25
+ def initialize
26
+ # It is very likely that you will have to specify your specific port number.
27
+ # 61611 is currently my AMQ local port number for ssl client auth not required.
28
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
29
+ end
30
+ # Run example.
31
+ def run()
32
+ puts "SSLUCXRDF Connect host: #{host()}, port: #{@port}"
33
+ ssl_opts = Stomp::SSLParams.new(:use_ruby_ciphers => true) # Plus other parameters as needed
34
+ puts "SSLOPTS: #{ssl_opts.inspect}"
35
+ #
36
+ # SSL Use Case: Using default Ruby ciphers
37
+ #
38
+ hash = { :hosts => [
39
+ {:login => login(), :passcode => passcode(), :host => host(),
40
+ :port => @port, :ssl => ssl_opts},
41
+ ]
42
+ }
43
+ #
44
+ puts "Connect starts, SSL , Use Default Ruby Ciphers"
45
+ c = Stomp::Connection.new(hash)
46
+ puts "Connect completed"
47
+ #
48
+ c.disconnect()
49
+ end
50
+ end
51
+ #
52
+ e = ExampleRubyCiphers.new()
53
+ e.run()
54
+
@@ -0,0 +1,96 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Common Stomp 1.1 code.
5
+ #
6
+ require "rubygems" if RUBY_VERSION < "1.9"
7
+ require "stomp"
8
+ #
9
+ module SSLCommon
10
+
11
+ # CA Data.
12
+
13
+ # CA cert file location/directory. Change or specify.
14
+ # This is the author's default.
15
+ def ca_loc()
16
+ ENV['CA_FLOC'] || "/ad3/gma/ad3/sslwork/2017-01" # The CA cert location
17
+ end
18
+
19
+ # CA cert file. Change or specify.
20
+ # This is the author's default.
21
+ def ca_cert()
22
+ ENV['CA_FILE'] || "ca.crt" # The CA cert File
23
+ end
24
+
25
+ # CA private key file name. Change or specify.
26
+ # This is the author's default.
27
+ # This file should not be exposed to the outside world.
28
+ # Not currently used/needed in stomp examples.
29
+ def ca_key()
30
+ ENV['CA_KEY'] || nil # The CA private key File
31
+ end
32
+
33
+ # Client Data.
34
+
35
+ # Client cert file location/directory. Change or specify.
36
+ # This is the author's default.
37
+ def cli_loc()
38
+ ENV['CLI_FLOC'] || "/ad3/gma/ad3/sslwork/2017-01" # The client cert location
39
+ end
40
+
41
+ # Client cert file name. Change or specify.
42
+ # This is the author's default.
43
+ def cli_cert()
44
+ ENV['CLI_FILE'] || "client.crt" # The client cert File
45
+ end
46
+
47
+ # Client private key file name. Change or specify.
48
+ # This is the author's default.
49
+ # This file should not be exposed to the outside world.
50
+ def cli_key()
51
+ ENV['CLI_KEY'] || pck() # The client private key File
52
+ end
53
+
54
+ # Server Data.
55
+
56
+ # Server file location/directory. Change or specify.
57
+ # This is the author's default.
58
+ # Not currently used in stomp examples.
59
+ def svr_loc()
60
+ ENV['SVR_FLOC'] || "/ad3/gma/ad3/sslwork/2017-01" # The server cert location
61
+ end
62
+
63
+ # Server cert file. Change or specify.
64
+ # This is the author's default.
65
+ # Not currently used in stomp examples.
66
+ def svr_cert()
67
+ ENV['SVR_FILE'] || "server.crt" # The server cert File
68
+ end
69
+
70
+ # Server private keyfile. Change or specify.
71
+ # This is the author's default.
72
+ # This file should not be exposed to the outside world.
73
+ # Not currently used in stomp examples.
74
+ def svr_key()
75
+ ENV['SVR_KEY'] || nil # The server private key File
76
+ end
77
+ # Show peer cert or not
78
+ def showPeerCert()
79
+ ENV['SHOWPEERCERT'] || false
80
+ end
81
+
82
+ # Ciphers list for the ciphers examples
83
+ def ciphers_list()
84
+ [["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], ["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]]
85
+ end
86
+
87
+ # Private
88
+ private
89
+
90
+ # Client Key File
91
+ def pck()
92
+ "client.key"
93
+ end
94
+
95
+ end
96
+
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ #
3
+ ruby -I ../../lib uc1/ssl_uc1.rb
4
+ echo "=============================="
5
+ ruby -I ../../lib uc1/ssl_uc1_ciphers.rb
6
+ echo "=============================="
7
+ ruby -I ../../lib uc2/ssl_uc2.rb
8
+ echo "=============================="
9
+ ruby -I ../../lib uc2/ssl_uc2_ciphers.rb
10
+ echo "=============================="
11
+ ruby -I ../../lib uc3/ssl_uc3.rb
12
+ echo "=============================="
13
+ ruby -I ../../lib uc3/ssl_uc3_ciphers.rb
14
+ echo "=============================="
15
+ ruby -I ../../lib uc4/ssl_uc4.rb
16
+ echo "=============================="
17
+ ruby -I ../../lib uc4/ssl_uc4_ciphers.rb
@@ -5,12 +5,15 @@
5
5
  #
6
6
  #
7
7
  if Kernel.respond_to?(:require_relative)
8
- require_relative("./ssl_common")
8
+ require_relative("../ssl_common")
9
+ require_relative("../../stomp_common")
9
10
  else
10
11
  $LOAD_PATH << File.dirname(__FILE__)
11
- require "ssl_common"
12
+ require "../ssl_common"
13
+ require "../../stomp_common"
12
14
  end
13
15
  include SSLCommon
16
+ include Stomp1xCommon
14
17
  #
15
18
  # == SSL Use Case 1 - server does *not* authenticate client, client does *not* authenticate server
16
19
  #
@@ -27,18 +30,19 @@ include SSLCommon
27
30
  class ExampleSSL1
28
31
  # Initialize.
29
32
  def initialize # Change the following as needed.
30
- @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
31
- @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
33
+ @host = host()
34
+ # It is very likely that you will have to specify your specific port number.
35
+ # 61611 is currently my AMQ local port number for ssl client auth not required.
36
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
32
37
  end
33
38
  # Run example.
34
39
  def run
35
- puts "Connect host: #{@host}, port: #{@port}"
40
+ puts "SSLUC1 Connect host: #{@host}, port: #{@port}"
36
41
 
37
42
  ssl_opts = Stomp::SSLParams.new # or ssl_opts = true (for this use case)
38
- #### ssl_opts = false # for testing HandShakeDetectedError exception
39
-
43
+ puts "SSLOPTS: #{ssl_opts.inspect}"
40
44
  hash = { :hosts => [
41
- {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
45
+ {:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
42
46
  ],
43
47
  :reliable => false, # YMMV, to test this in a sane manner
44
48
  }
@@ -47,11 +51,11 @@ class ExampleSSL1
47
51
  c = Stomp::Connection.new(hash)
48
52
  puts "Connect completed"
49
53
  puts "SSL Verify Result: #{ssl_opts.verify_result}"
50
- # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
54
+ puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
51
55
  #
52
- c.disconnect
56
+ c.disconnect()
53
57
  end
54
58
  end
55
59
  #
56
- e = ExampleSSL1.new
60
+ e = ExampleSSL1.new()
57
61
  e.run
@@ -0,0 +1,60 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
+ #
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("../ssl_common")
8
+ require_relative("../../stomp_common")
9
+ else
10
+ $LOAD_PATH << File.dirname(__FILE__)
11
+ require "../ssl_common"
12
+ require "../../stomp_common"
13
+ end
14
+ include SSLCommon
15
+ include Stomp1xCommon
16
+ #
17
+ # == SSL Use Case 1 - User Supplied Ciphers
18
+ #
19
+ # If you need your own ciphers list, this is how.
20
+ # Stomp's default list will work in many cases. If you need to use this, you
21
+ # will know it because SSL connect will fail. In that case, determining
22
+ # _what_ should be in the list is your responsibility.
23
+ #
24
+ class ExampleSSL1C
25
+ # Initialize.
26
+ def initialize # Change the following as needed.
27
+ @host = host()
28
+ # It is very likely that you will have to specify your specific port number.
29
+ # 61611 is currently my AMQ local port number for ssl client auth not required.
30
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
31
+ end
32
+ # Run example.
33
+ def run
34
+ puts "SSLUC1C Connect host: #{@host}, port: #{@port}"
35
+
36
+ ssl_opts = Stomp::SSLParams.new(:ciphers => ciphers_list())
37
+ puts "SSLOPTS: #{ssl_opts.inspect}"
38
+
39
+ #
40
+ # SSL Use Case 1
41
+ #
42
+ hash = { :hosts => [
43
+ {:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
44
+ ],
45
+ :reliable => false, # YMMV, to test this in a sane manner
46
+ }
47
+ #
48
+ puts "Connect starts, SSL Use Case 1"
49
+ c = Stomp::Connection.new(hash)
50
+ puts "Connect completed"
51
+ puts "SSL Verify Result: #{ssl_opts.verify_result}"
52
+ puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
53
+ #
54
+ c.disconnect()
55
+ end
56
+ end
57
+ #
58
+ e = ExampleSSL1C.new()
59
+ e.run
60
+
@@ -4,12 +4,15 @@
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
6
  if Kernel.respond_to?(:require_relative)
7
- require_relative("./ssl_common")
7
+ require_relative("../ssl_common")
8
+ require_relative("../../stomp_common")
8
9
  else
9
10
  $LOAD_PATH << File.dirname(__FILE__)
10
- require "ssl_common"
11
+ require "../ssl_common"
12
+ require("../../stomp_common")
11
13
  end
12
14
  include SSLCommon
15
+ include Stomp1xCommon
13
16
  #
14
17
  # == SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server
15
18
  #
@@ -27,23 +30,27 @@ class ExampleSSL2
27
30
  # Initialize.
28
31
  def initialize
29
32
  # Change the following as needed.
30
- @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
31
- @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
33
+ @host = host()
34
+ # It is very likely that you will have to specify your specific port number.
35
+ # 61611 is currently my AMQ local port number for ssl client auth is not required.
36
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
32
37
  end
33
38
  # Run example.
34
39
  def run
35
- puts "Connect host: #{@host}, port: #{@port}"
40
+ puts "SSLUC2 Connect host: #{@host}, port: #{@port}"
36
41
 
37
42
  ts_flist = []
38
43
 
39
44
  # Possibly change/override the cert data here.
40
- ts_flist << "#{ca_loc()}/#{ca_cert()}"
45
+ ts_flist << "#{ca_loc()}/#{ca_cert()}"
46
+ puts "TSFLIST: #{ts_flist.inspect}"
41
47
 
42
48
  ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","),
43
49
  :fsck => true)
50
+ puts "SSLOPTS: #{ssl_opts.inspect}"
44
51
  #
45
52
  hash = { :hosts => [
46
- {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
53
+ {:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
47
54
  ],
48
55
  :reliable => false, # YMMV, to test this in a sane manner
49
56
  }
@@ -52,11 +59,11 @@ class ExampleSSL2
52
59
  c = Stomp::Connection.new(hash)
53
60
  puts "Connect completed"
54
61
  puts "SSL Verify Result: #{ssl_opts.verify_result}"
55
- # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
56
- c.disconnect
62
+ puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
63
+ c.disconnect()
57
64
  end
58
65
  end
59
66
  #
60
- e = ExampleSSL2.new
67
+ e = ExampleSSL2.new()
61
68
  e.run
62
69
 
@@ -0,0 +1,67 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
+ #
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("../ssl_common")
8
+ require_relative("../../stomp_common")
9
+ else
10
+ $LOAD_PATH << File.dirname(__FILE__)
11
+ require "../ssl_common"
12
+ require("../../stomp_common")
13
+ end
14
+ include SSLCommon
15
+ include Stomp1xCommon
16
+ #
17
+ # == SSL Use Case 2 - User Supplied Ciphers
18
+ #
19
+ # If you need your own ciphers list, this is how.
20
+ # Stomp's default list will work in many cases. If you need to use this, you
21
+ # will know it because SSL connect will fail. In that case, determining
22
+ # _what_ should be in the list is your responsibility.
23
+ #
24
+ class ExampleSSL2C
25
+ # Initialize.
26
+ def initialize # Change the following as needed.
27
+ @host = host()
28
+ # It is very likely that you will have to specify your specific port number.
29
+ # 61611 is currently my AMQ local port number for ssl client auth is not required.
30
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61611
31
+ end
32
+ # Run example.
33
+ def run
34
+ puts "SSLUC2C Connect host: #{@host}, port: #{@port}"
35
+ #
36
+ # SSL Use Case 2
37
+ #
38
+ ts_flist = []
39
+
40
+ # Possibly change/override the cert data here.
41
+ ts_flist << "#{ca_loc()}/#{ca_cert()}"
42
+ puts "TSFLIST: #{ts_flist.inspect}"
43
+
44
+ ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","),
45
+ :ciphers => ciphers_list(), # The cipher list
46
+ :fsck => true
47
+ )
48
+ puts "SSLOPTS: #{ssl_opts.inspect}"
49
+ #
50
+ hash = { :hosts => [
51
+ {:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
52
+ ],
53
+ :reliable => false, # YMMV, to test this in a sane manner
54
+ }
55
+ #
56
+ puts "Connect starts, SSL Use Case 2"
57
+ c = Stomp::Connection.new(hash)
58
+ puts "Connect completed"
59
+ puts "SSL Verify Result: #{ssl_opts.verify_result}"
60
+ puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
61
+ c.disconnect()
62
+ end
63
+ end
64
+ #
65
+ e = ExampleSSL2C.new()
66
+ e.run
67
+