bunny 1.7.0 → 2.17.0

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 (141) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE.md +18 -0
  3. data/.gitignore +6 -1
  4. data/.rspec +1 -3
  5. data/.travis.yml +21 -14
  6. data/CONTRIBUTING.md +132 -0
  7. data/ChangeLog.md +745 -1
  8. data/Gemfile +13 -13
  9. data/LICENSE +1 -1
  10. data/README.md +41 -75
  11. data/Rakefile +54 -0
  12. data/bunny.gemspec +4 -10
  13. data/docker-compose.yml +28 -0
  14. data/docker/Dockerfile +24 -0
  15. data/docker/apt/preferences.d/erlang +3 -0
  16. data/docker/apt/sources.list.d/bintray.rabbitmq.list +2 -0
  17. data/docker/docker-entrypoint.sh +26 -0
  18. data/docker/rabbitmq.conf +29 -0
  19. data/examples/connection/automatic_recovery_with_basic_get.rb +1 -1
  20. data/examples/connection/automatic_recovery_with_client_named_queues.rb +1 -1
  21. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +1 -1
  22. data/examples/connection/automatic_recovery_with_republishing.rb +1 -1
  23. data/examples/connection/automatic_recovery_with_server_named_queues.rb +1 -1
  24. data/examples/connection/channel_level_exception.rb +1 -9
  25. data/examples/connection/disabled_automatic_recovery.rb +1 -1
  26. data/examples/connection/heartbeat.rb +1 -1
  27. data/examples/consumers/high_and_low_priority.rb +1 -1
  28. data/examples/guides/extensions/alternate_exchange.rb +2 -0
  29. data/examples/guides/getting_started/hello_world.rb +2 -0
  30. data/examples/guides/getting_started/weathr.rb +2 -0
  31. data/examples/guides/queues/one_off_consumer.rb +2 -0
  32. data/examples/guides/queues/redeliveries.rb +2 -0
  33. data/lib/bunny.rb +6 -2
  34. data/lib/bunny/channel.rb +192 -109
  35. data/lib/bunny/channel_id_allocator.rb +6 -4
  36. data/lib/bunny/concurrent/continuation_queue.rb +34 -13
  37. data/lib/bunny/consumer_work_pool.rb +34 -6
  38. data/lib/bunny/cruby/socket.rb +29 -16
  39. data/lib/bunny/cruby/ssl_socket.rb +20 -7
  40. data/lib/bunny/exceptions.rb +7 -1
  41. data/lib/bunny/exchange.rb +11 -7
  42. data/lib/bunny/get_response.rb +1 -1
  43. data/lib/bunny/heartbeat_sender.rb +3 -2
  44. data/lib/bunny/jruby/socket.rb +23 -6
  45. data/lib/bunny/jruby/ssl_socket.rb +5 -0
  46. data/lib/bunny/queue.rb +12 -10
  47. data/lib/bunny/reader_loop.rb +31 -18
  48. data/lib/bunny/session.rb +389 -134
  49. data/lib/bunny/test_kit.rb +14 -0
  50. data/lib/bunny/timeout.rb +1 -12
  51. data/lib/bunny/transport.rb +114 -67
  52. data/lib/bunny/version.rb +1 -1
  53. data/repl +1 -1
  54. data/spec/config/rabbitmq.conf +13 -0
  55. data/spec/higher_level_api/integration/basic_ack_spec.rb +154 -22
  56. data/spec/higher_level_api/integration/basic_cancel_spec.rb +77 -11
  57. data/spec/higher_level_api/integration/basic_consume_spec.rb +60 -55
  58. data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +6 -6
  59. data/spec/higher_level_api/integration/basic_get_spec.rb +31 -7
  60. data/spec/higher_level_api/integration/basic_nack_spec.rb +22 -19
  61. data/spec/higher_level_api/integration/basic_publish_spec.rb +11 -100
  62. data/spec/higher_level_api/integration/basic_qos_spec.rb +32 -4
  63. data/spec/higher_level_api/integration/basic_reject_spec.rb +94 -16
  64. data/spec/higher_level_api/integration/basic_return_spec.rb +4 -4
  65. data/spec/higher_level_api/integration/channel_close_spec.rb +51 -10
  66. data/spec/higher_level_api/integration/channel_open_spec.rb +12 -12
  67. data/spec/higher_level_api/integration/connection_recovery_spec.rb +412 -286
  68. data/spec/higher_level_api/integration/connection_spec.rb +284 -134
  69. data/spec/higher_level_api/integration/connection_stop_spec.rb +31 -19
  70. data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +17 -17
  71. data/spec/higher_level_api/integration/dead_lettering_spec.rb +14 -14
  72. data/spec/higher_level_api/integration/exchange_bind_spec.rb +5 -5
  73. data/spec/higher_level_api/integration/exchange_declare_spec.rb +32 -31
  74. data/spec/higher_level_api/integration/exchange_delete_spec.rb +12 -12
  75. data/spec/higher_level_api/integration/exchange_unbind_spec.rb +5 -5
  76. data/spec/higher_level_api/integration/exclusive_queue_spec.rb +5 -5
  77. data/spec/higher_level_api/integration/heartbeat_spec.rb +4 -4
  78. data/spec/higher_level_api/integration/message_properties_access_spec.rb +49 -49
  79. data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +2 -2
  80. data/spec/higher_level_api/integration/publisher_confirms_spec.rb +92 -27
  81. data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +19 -19
  82. data/spec/higher_level_api/integration/queue_bind_spec.rb +23 -23
  83. data/spec/higher_level_api/integration/queue_declare_spec.rb +129 -34
  84. data/spec/higher_level_api/integration/queue_delete_spec.rb +2 -2
  85. data/spec/higher_level_api/integration/queue_purge_spec.rb +5 -5
  86. data/spec/higher_level_api/integration/queue_unbind_spec.rb +6 -6
  87. data/spec/higher_level_api/integration/read_only_consumer_spec.rb +9 -9
  88. data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +10 -10
  89. data/spec/higher_level_api/integration/tls_connection_spec.rb +218 -112
  90. data/spec/higher_level_api/integration/toxiproxy_spec.rb +76 -0
  91. data/spec/higher_level_api/integration/tx_commit_spec.rb +1 -1
  92. data/spec/higher_level_api/integration/tx_rollback_spec.rb +1 -1
  93. data/spec/higher_level_api/integration/with_channel_spec.rb +2 -2
  94. data/spec/issues/issue100_spec.rb +11 -12
  95. data/spec/issues/issue141_spec.rb +13 -14
  96. data/spec/issues/issue202_spec.rb +1 -1
  97. data/spec/issues/issue224_spec.rb +5 -5
  98. data/spec/issues/issue465_spec.rb +32 -0
  99. data/spec/issues/issue549_spec.rb +30 -0
  100. data/spec/issues/issue78_spec.rb +21 -24
  101. data/spec/issues/issue83_spec.rb +5 -6
  102. data/spec/issues/issue97_spec.rb +44 -45
  103. data/spec/lower_level_api/integration/basic_cancel_spec.rb +15 -16
  104. data/spec/lower_level_api/integration/basic_consume_spec.rb +20 -21
  105. data/spec/spec_helper.rb +2 -19
  106. data/spec/stress/channel_close_stress_spec.rb +3 -3
  107. data/spec/stress/channel_open_stress_spec.rb +4 -4
  108. data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +7 -7
  109. data/spec/stress/concurrent_consumers_stress_spec.rb +18 -16
  110. data/spec/stress/concurrent_publishers_stress_spec.rb +16 -19
  111. data/spec/stress/connection_open_close_spec.rb +9 -9
  112. data/spec/stress/merry_go_round_spec.rb +105 -0
  113. data/spec/tls/ca_certificate.pem +27 -16
  114. data/spec/tls/ca_key.pem +52 -27
  115. data/spec/tls/client_certificate.pem +27 -16
  116. data/spec/tls/client_key.pem +49 -25
  117. data/spec/tls/generate-server-cert.sh +8 -0
  118. data/spec/tls/server-openssl.cnf +10 -0
  119. data/spec/tls/server.csr +16 -0
  120. data/spec/tls/server_certificate.pem +27 -16
  121. data/spec/tls/server_key.pem +49 -25
  122. data/spec/toxiproxy_helper.rb +28 -0
  123. data/spec/unit/bunny_spec.rb +5 -5
  124. data/spec/unit/concurrent/atomic_fixnum_spec.rb +6 -6
  125. data/spec/unit/concurrent/condition_spec.rb +8 -8
  126. data/spec/unit/concurrent/linked_continuation_queue_spec.rb +2 -2
  127. data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +16 -16
  128. data/spec/unit/exchange_recovery_spec.rb +39 -0
  129. data/spec/unit/version_delivery_tag_spec.rb +3 -3
  130. metadata +42 -35
  131. data/lib/bunny/system_timer.rb +0 -20
  132. data/spec/config/rabbitmq.config +0 -18
  133. data/spec/higher_level_api/integration/basic_recover_spec.rb +0 -18
  134. data/spec/higher_level_api/integration/confirm_select_spec.rb +0 -19
  135. data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +0 -50
  136. data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
  137. data/spec/stress/long_running_consumer_spec.rb +0 -83
  138. data/spec/tls/cacert.pem +0 -18
  139. data/spec/tls/client_cert.pem +0 -18
  140. data/spec/tls/server_cert.pem +0 -18
  141. data/spec/unit/system_timer_spec.rb +0 -10
@@ -13,38 +13,38 @@ unless defined?(JRUBY_VERSION) && !ENV["FORCE_JRUBY_RUN"]
13
13
 
14
14
  n.times do |i|
15
15
  it "can be closed (automatic recovery disabled, take #{i})" do
16
- c = Bunny.new(:automatically_recover => false)
16
+ c = Bunny.new(automatically_recover: false)
17
17
  c.start
18
18
  ch = c.create_channel
19
19
 
20
- c.should be_connected
20
+ expect(c).to be_connected
21
21
  c.stop
22
- c.should be_closed
22
+ expect(c).to be_closed
23
23
  end
24
24
  end
25
25
 
26
26
  n.times do |i|
27
27
  it "can be closed (automatic recovery enabled, take #{i})" do
28
- c = Bunny.new(:automatically_recover => true)
28
+ c = Bunny.new(automatically_recover: true)
29
29
  c.start
30
30
  ch = c.create_channel
31
31
 
32
- c.should be_connected
32
+ expect(c).to be_connected
33
33
  c.stop
34
- c.should be_closed
34
+ expect(c).to be_closed
35
35
  end
36
36
  end
37
37
 
38
38
  context "in the single threaded mode" do
39
39
  n.times do |i|
40
40
  it "can be closed (single threaded mode, take #{i})" do
41
- c = Bunny.new(:automatically_recover => false, :threaded => false)
41
+ c = Bunny.new(automatically_recover: false, threaded: false)
42
42
  c.start
43
43
  ch = c.create_channel
44
44
 
45
- c.should be_connected
45
+ expect(c).to be_connected
46
46
  c.stop
47
- c.should be_closed
47
+ expect(c).to be_closed
48
48
  end
49
49
  end
50
50
  end
@@ -0,0 +1,105 @@
1
+ require "spec_helper"
2
+
3
+ describe "A batch of messages proxied by multiple intermediate consumers" do
4
+ let(:c1) do
5
+ c = Bunny.new(username: "bunny_gem",
6
+ password: "bunny_password",
7
+ vhost: "bunny_testbed",
8
+ heartbeat_timeout: 6)
9
+ c.start
10
+ c
11
+ end
12
+
13
+ let(:c2) do
14
+ c = Bunny.new(username: "bunny_gem",
15
+ password: "bunny_password",
16
+ vhost: "bunny_testbed",
17
+ heartbeat_timeout: 6)
18
+ c.start
19
+ c
20
+ end
21
+
22
+ let(:c3) do
23
+ c = Bunny.new(username: "bunny_gem",
24
+ password: "bunny_password",
25
+ vhost: "bunny_testbed",
26
+ heartbeat_timeout: 6)
27
+ c.start
28
+ c
29
+ end
30
+
31
+ let(:c4) do
32
+ c = Bunny.new(username: "bunny_gem",
33
+ password: "bunny_password",
34
+ vhost: "bunny_testbed",
35
+ heartbeat_timeout: 6)
36
+ c.start
37
+ c
38
+ end
39
+
40
+ let(:c5) do
41
+ c = Bunny.new(username: "bunny_gem",
42
+ password: "bunny_password",
43
+ vhost: "bunny_testbed",
44
+ heartbeat_timeout: 6)
45
+ c.start
46
+ c
47
+ end
48
+
49
+ after :each do
50
+ [c1, c2, c3, c4, c5].each do |c|
51
+ c.close if c.open?
52
+ end
53
+ end
54
+
55
+ [1000, 5_000, 10_000, 20_000, 30_000, 50_000].each do |n|
56
+ # message flow is as follows:
57
+ #
58
+ # x => q4 => q3 => q2 => q1 => xs (results)
59
+ it "successfully reaches its final destination (batch size: #{n})" do
60
+ xs = []
61
+
62
+ ch1 = c1.create_channel
63
+ q1 = ch1.queue("", exclusive: true)
64
+ q1.subscribe(manual_ack: true) do |delivery_info, _, payload|
65
+ xs << payload
66
+ ch1.ack(delivery_info.delivery_tag)
67
+ end
68
+
69
+ ch2 = c2.create_channel
70
+ q2 = ch2.queue("", exclusive: true)
71
+ q2.subscribe do |_, _, payload|
72
+ q1.publish(payload)
73
+ end
74
+
75
+ ch3 = c3.create_channel(nil, 2)
76
+ q3 = ch3.queue("", exclusive: true)
77
+ q3.subscribe(manual_ack: true) do |delivery_info, _, payload|
78
+ q2.publish(payload)
79
+ ch3.ack(delivery_info.delivery_tag)
80
+ end
81
+
82
+ ch4 = c4.create_channel(nil, 4)
83
+ q4 = ch4.queue("", exclusive: true)
84
+ q4.subscribe do |_, _, payload|
85
+ q3.publish(payload)
86
+ end
87
+
88
+ ch5 = c5.create_channel(nil, 8)
89
+ x = ch5.default_exchange
90
+
91
+ n.times do |i|
92
+ x.publish("msg #{i}", routing_key: q4.name)
93
+ end
94
+
95
+ Bunny::TestKit.poll_until(90) do
96
+ xs.size >= n
97
+ end
98
+
99
+ expect(xs.size).to eq n
100
+ expect(xs.last).to eq "msg #{n - 1}"
101
+
102
+ [q1, q2, q3, q4].each { |q| q.delete }
103
+ end
104
+ end
105
+ end
@@ -1,18 +1,29 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
18
29
  -----END CERTIFICATE-----
@@ -1,27 +1,52 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAzfvqL+nOvDEb3wLFiuRXKbyrBvNbQ4jb1lVQTbagR1kpv0cM
3
- HXM8q0kpq2PX+eG1kqcAzMv5W2QJm+xU3J6Fl9Lono6/iBasVAGJfOFg7lh79KaU
4
- qWg9i/1JqXGS0M5FyaFZfu5Nc8ZGinjSqbP5de9ZJJIew/e0dSZ2JbshhbLyACIv
5
- SySeCZUGdckw0o74CtYIHeJC+leQ/fWV1PFZbbnQZM+ZSSK8oN5qxsq2KZIRaX/+
6
- PkuY0iYLMBbL1EAWxR5cptIis+pdI8nB0juM4wb5yGTHyEDA/wKXXMKiD2xCERO8
7
- F0rjJbW7FfGje9UUPXD3w7vQR0ARM3QKxsulRwIDAQABAoIBACniRXZEpoLhwXcR
8
- SzW4xHh6IpShOzd6RqlIY7HJpsGbQb/hJHeAjR+PGuf8v1fSK2eMib8a4rNQnhuU
9
- bJUHrsZ2XlKPWCbF5XiXb2tzMJCGcX4HuUbRKWKjuCy6KU5IAyzCoD4NGral5IYX
10
- l05miB0Q9CFZjOPwJEOF9JQrft9+a6O4Wc4DPGwq0OwK25EjPlEgoiC+GNPaEMDg
11
- RZc4qatfBEMAyDMACsOCoq8cGIAtfPOaeMdjUkwDWhsNi4qsL7+9pv7IYMjGk+XQ
12
- UDGcootTam9PXuRdmLt2IZGBzfeuMKQrNbPvyvItBfBHMH7k+JgLT1H7wJKxrxXj
13
- D/U2xkECgYEA/IcYUIuJdUkfmVa3qJ03yTWyb2xeWPUk9UM+kgJ1tqqc1Qn7ATiu
14
- Pok+Q2nkuT8MmZ8FHcRdwZqiu1GDtlBHDxtJt2z+EyHDW6oqrkVWU7ZBwykhr6qH
15
- TFyJ7Es2ABeDf6JE53NMdXpOKzDtp5nOfj7UqAu+Omrjh+5w4ETv/ZcCgYEA0ND8
16
- FgeMgysNtOn5hr+aRtayMQuR8jR6GTHW0ZO8gxBnQcfF0TNgDppOsn2eQ2ANQ9MY
17
- 7x4P7SEybufq50CWWzsS80oN2sITZeaAuTlGbQF4c9n5KwY9X2fmpe1UjEU1ok5O
18
- d9TgDwn1pCfsarnsn4DmA+1p7BuPLfNnLeIM69ECgYEAr9ZZ5evjoRlzuVAavnwK
19
- 1j5fqxpob8TzIRzbusufr7wJTIaQkv8mxUDHbCWWMC9o1KdX5qxPJHpKiehusEoh
20
- 0LENmX15RVUjNPa+lW6Od+fWztAbNrilUVS2bSTJyzKUTBFvrUIpoTuypnyBX0zH
21
- 7jxN012p7f9zw7kSO/eErK0CgYAqCtmmadCtnB5/XVhi+/LI7nMkEstIs64don44
22
- 5gDfdo8DnIBElY5ygjj0EPyrXgxtqnPruObF/JgV4lXWR5e+OI+hMjjF4atcKeOi
23
- 51g5nEEvOiTDt9blfZrfr4AFWe3phtCfqdmOzZeKfItKFbMBjkdBZSydYBMc0lPk
24
- 1g158QKBgBFCHBAeQ8AHvNXsMv99YmQ4OCJaJWimhcQEvKX0SLb2PCOk4wJ2w2Xi
25
- 41qjdgr4Mqs1v05b2p6gUcRnioJFB1Y9duKpCjI2DRzlF6ohA86cJr86fDG698Li
26
- b8i1kDyMa3xPYwOvuV0NbN0IvvK5awlK7x3NmmxT1IYMU4RMTPnU
27
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN PRIVATE KEY-----
2
+ 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
51
+ uM2skhC6ROJPn3CCWPupNuPV2m7kCo4=
52
+ -----END PRIVATE KEY-----
@@ -1,18 +1,29 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
18
29
  -----END CERTIFICATE-----
@@ -1,27 +1,51 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- m0ecGtkCgYEAxSj6A0hjlZ3//LQ4JI4O4B5r2Ggf9xBhHHx7yKPnu52aGtmhKuEP
14
- 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
- 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
- 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
- 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
- QBtycEmT4GyHqn9ygbukfTW1aVD1/dFRd6Fqn7UCgYAwNxwlD1/jJ/eBOiV8swzq
19
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
27
51
  -----END RSA PRIVATE KEY-----
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ DIRNAME=$(dirname "$0")
4
+
5
+ openssl req -sha256 -new -key $DIRNAME/server_key.pem -out $DIRNAME/server.csr -subj "/CN=mercurio" -config $DIRNAME/server-openssl.cnf
6
+ openssl x509 -sha256 -req -in $DIRNAME/server.csr -CA $DIRNAME/ca_certificate.pem -CAkey $DIRNAME/ca_key.pem -CAcreateserial -CAserial $DIRNAME/ca.srl -out $DIRNAME/server_certificate.pem -days 3650 -extensions v3_req -extfile $DIRNAME/server-openssl.cnf
7
+
8
+ echo "Written new server CSR and certificate"
@@ -0,0 +1,10 @@
1
+ [req]
2
+ req_extensions = v3_req
3
+ distinguished_name = req_distinguished_name
4
+ [req_distinguished_name]
5
+ [ v3_req ]
6
+ basicConstraints = CA:FALSE
7
+ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
8
+ subjectAltName = @alt_names
9
+ [alt_names]
10
+ IP.1 = 127.0.0.1
@@ -0,0 +1,16 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIICkjCCAXoCAQAwEzERMA8GA1UEAwwIbWVyY3VyaW8wggEiMA0GCSqGSIb3DQEB
3
+ AQUAA4IBDwAwggEKAoIBAQCkvvzm5nB3CDqTFEYQnfOy8DwJLm34MvdrKQAThzDy
4
+ qa37sb4IC0YclBFbZfsw8+paK+Rpo2Vlhzclb66z0cGs9SvxuKkJ45w0fk0ctxMg
5
+ tvWISRGZR7LMw5u0q2m61dK0FTGSl+qzJohb5Dklb6BApoGoIPH+eYraVxHR29x2
6
+ x8hqzBt5TpiUW8bu7LPQJbX0mYGhKQDf86kao+sptRQ2045D7vB3jrkPhq0XZVJi
7
+ QymzOSSejYSN1oZ464DtT+dpLBYHEVJoJPu4r4kY/8A7v+93PWQaDERKBfvwWHfV
8
+ U44xn7R/aojSvNT7kQILsf2BnfJlMwoedWQLxPddmB3PAgMBAAGgOjA4BgkqhkiG
9
+ 9w0BCQ4xKzApMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMA8GA1UdEQQIMAaHBH8A
10
+ AAEwDQYJKoZIhvcNAQELBQADggEBAFyfaotajM/h2dyodKJqO6stAIpxiQXTds8V
11
+ 5ZHDozBxzLZkeBIY+hsqh/owmqomk56swui+336WAKIBwIJyJrtIl8C/lupGaTbR
12
+ BouWWbyZOQAE2ExHcUgdGEOVoCN2ieBR4RVQ8Id4GAlHvlFGPqakaLMV6Zc7VqDh
13
+ vxdOLgATEE+MhebTo9yOHj14qdvzhi5w3ZEg1kdfOuGN9I4gJcv4PWwudBhn4wE7
14
+ oHAIP2nixROI7cZcZ9fBrimcdGQsXNZLTXiGzNra4utOXuQ7w5qoiEhHoxXalowE
15
+ KvEA9otLadjtULg6DRd3zYuIyrUiBIRUHZ1p2xSnd/lLekbMfCQ=
16
+ -----END CERTIFICATE REQUEST-----
@@ -1,18 +1,29 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- WtiBJ8g3oWjj99zIvb0CNqp0Xv5jvWgw8DYXG5FZAA7g5sKrihkxKTtpYnKsTZ40
14
- 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
- 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
- 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
- natbZ91esBaJKbWLUxH1U9Aol8wwYD4MzK3rvfImgjgig+htAqhCMxLu1z9VE+o=
2
+ MIIE/zCCAuegAwIBAgIBATANBgkqhkiG9w0BAQsFADAxMSAwHgYDVQQDDBdUTFNH
3
+ ZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDAeFw0xNzA3MTIxNzA1
4
+ MjRaFw0yNzA3MTAxNzA1MjRaMCQxETAPBgNVBAMMCG1lcmN1cmlvMQ8wDQYDVQQK
5
+ DAZzZXJ2ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuwVeq0DrK
6
+ nKQg5zE4Ph9eY1v4ktJiHhTosgS0hE7DHWaulpXqt9SaqrVc8Kp7z+C1GCQRg8Vo
7
+ 73DDQOl63sFwYvNO1uqyeS6mqMPamjgOIQ2/GGPwmTksJi/QlBH7u2lR4BoWA7uB
8
+ 4zr8mxXlIfDzvLWL1Dz7yZZcfrcp28rDId+LoNjajaVrropqrlJ+GoQKN1fB2dkU
9
+ JTJocUFCw5+Pcslrymm3+9pDexB6u8vWyBy/jk27dp8VhDLfHTCkO6UTnvIBLfA3
10
+ 5b7PWX7Q7QiOGhiGtoz7J3bqEoOkaM1cOEjSEO4AkLvcgKpqnQzP0xKmR57COFgA
11
+ UQBNSClOkmoNDI9pGl4ONNx7OnsFGvwqc1DrIUQPRXMZzgcqdjK7DgxAh68Mke3l
12
+ Mu7xkLsy7VWxiwTDFyukKuFNhXOxUrHJ/jI/s5LEZLiAWNvGNhDyJrWxFpTAjpk9
13
+ osNPdJw/rLSzliwYJDmYWdmKOif+mQw0QIhnKxtLnsdiNTbQVtixDlhUBUt+xWv2
14
+ IyFAcSDxZPEA7oLIflJdNG3GaQwIki/ZGDXmxSg2PhPdU42slGRaupPuUpFYFKUg
15
+ PZypjphNuUQkHasPD43Jacj96LyuDSuV/b8FQWQbegOv7sY/kCK3v6y6YQcqovkN
16
+ RWhOZE2zIFXRxT2iPY2LV/clgVkohrxzUwIDAQABoy8wLTAJBgNVHRMEAjAAMAsG
17
+ A1UdDwQEAwIFIDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOC
18
+ AgEAQBCmOD6yXPkGWIBcP35Qaghpyv9oxgv6AnJaU1KylTxR+C7ljT9EnygWBeTf
19
+ 5giFYI2HnTSKOZQRhIk4/LsP9xnWJ6OjfOopC1YjHKcSV7VTVMTvd2OkgFIYPFgT
20
+ EXzfCX+NFkS9fD8D2hn/6ENir+N4opuobcLOq+jveAtwLrO/SrDprCiKa0Ka4n/L
21
+ 10huMlBslqJ4aCQjAud0FZVikEzeZIIfPn/G7vC5Ya+IaV5SxzEv12krZpiktuHh
22
+ w5jkFZcIxQROLww5heC0xsHLRVX5pjqFwN54b8JeP5t+yr0y3aaQ0s525wkUP82/
23
+ QmNTLNLzOgMn+k5JkIygnVHji6avdO7suxt0BOMrdSzMd1pfH58umF4xoCspUSCq
24
+ Ko0ml5f3Kf1KTBQAV/a4iUIixID67tAd3tOaQgNFPEdbHXp09L2nxRvZMrh4Yimq
25
+ jmiX7rTOFnTUES4gfrfpLFSJXxaJlMOM6K08MljkMT0JtExBtiIqMXTnA0GNdkgY
26
+ W5Oa2W+Hvt8l0KDcdFIR64Uiqrgxmw8AirUI3R20kldDHB1XE+5y34CgMVYiHDZ9
27
+ UGf2wIrg+rsWUqvSgUgFO0IVsP4Z+fFJP/qpca5ObbSLCF0rM5tCh6i7P2893+S9
28
+ /eJyRAiTABMrVpFAhvMQGdBtKtXZ8gryJ2M29Kup7JW0OEM=
18
29
  -----END CERTIFICATE-----