fluentd 1.5.2 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +15 -6
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/CHANGELOG.md +29 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +5 -0
- data/Rakefile +6 -1
- data/appveyor.yml +9 -10
- data/lib/fluent/command/fluentd.rb +4 -0
- data/lib/fluent/config/literal_parser.rb +2 -2
- data/lib/fluent/plugin/base.rb +1 -0
- data/lib/fluent/plugin/buffer.rb +22 -0
- data/lib/fluent/plugin/in_forward.rb +2 -2
- data/lib/fluent/plugin/in_monitor_agent.rb +90 -131
- data/lib/fluent/plugin/out_forward.rb +4 -0
- data/lib/fluent/plugin/output.rb +31 -1
- data/lib/fluent/plugin/parser_none.rb +1 -2
- data/lib/fluent/plugin_helper.rb +1 -0
- data/lib/fluent/plugin_helper/cert_option.rb +1 -1
- data/lib/fluent/plugin_helper/http_server.rb +75 -0
- data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
- data/lib/fluent/plugin_helper/http_server/compat/server.rb +81 -0
- data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
- data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
- data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
- data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
- data/lib/fluent/plugin_helper/http_server/server.rb +87 -0
- data/lib/fluent/plugin_helper/socket.rb +8 -2
- data/lib/fluent/supervisor.rb +5 -2
- data/lib/fluent/time.rb +13 -0
- data/lib/fluent/version.rb +1 -1
- data/test/command/test_fluentd.rb +36 -2
- data/test/helper.rb +1 -0
- data/test/helpers/fuzzy_assert.rb +89 -0
- data/test/plugin/test_buf_file.rb +1 -1
- data/test/plugin/test_in_http.rb +2 -5
- data/test/plugin/test_in_monitor_agent.rb +118 -17
- data/test/plugin/test_in_udp.rb +0 -2
- data/test/plugin/test_out_file.rb +15 -12
- data/test/plugin/test_out_forward.rb +18 -0
- data/test/plugin/test_out_secondary_file.rb +6 -4
- data/test/plugin/test_output_as_buffered.rb +4 -0
- data/test/plugin/test_output_as_buffered_retries.rb +0 -2
- data/test/plugin/test_output_as_buffered_secondary.rb +0 -3
- data/test/plugin_helper/data/cert/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
- data/test/plugin_helper/data/cert/cert.pem +19 -0
- data/test/plugin_helper/http_server/test_app.rb +65 -0
- data/test/plugin_helper/http_server/test_route.rb +32 -0
- data/test/plugin_helper/test_cert_option.rb +16 -0
- data/test/plugin_helper/test_http_server_helper.rb +203 -0
- data/test/plugin_helper/test_server.rb +1 -7
- data/test/test_event_time.rb +13 -0
- data/test/test_log.rb +8 -6
- data/test/test_supervisor.rb +3 -0
- metadata +28 -2
@@ -10,6 +10,8 @@ require 'json'
|
|
10
10
|
require_relative '../test_plugin_classes'
|
11
11
|
|
12
12
|
class MonitorAgentInputTest < Test::Unit::TestCase
|
13
|
+
include FuzzyAssert
|
14
|
+
|
13
15
|
def setup
|
14
16
|
Fluent::Test.setup
|
15
17
|
end
|
@@ -118,7 +120,13 @@ EOC
|
|
118
120
|
"plugin_category" => "output",
|
119
121
|
"plugin_id" => "test_out",
|
120
122
|
"retry_count" => 0,
|
121
|
-
"type" => "test_out"
|
123
|
+
"type" => "test_out",
|
124
|
+
"emit_count" => Integer,
|
125
|
+
"emit_records" => Integer,
|
126
|
+
"write_count" => Integer,
|
127
|
+
"rollback_count" => Integer,
|
128
|
+
"slow_flush_count" => Integer,
|
129
|
+
"flush_time_count" => Integer,
|
122
130
|
}
|
123
131
|
output_info.merge!("config" => {"@id" => "test_out", "@type" => "test_out"}) if with_config
|
124
132
|
error_label_info = {
|
@@ -129,14 +137,24 @@ EOC
|
|
129
137
|
"plugin_category" => "output",
|
130
138
|
"plugin_id" => "null",
|
131
139
|
"retry_count" => 0,
|
132
|
-
"type" => "null"
|
140
|
+
"type" => "null",
|
141
|
+
"buffer_available_buffer_space_ratios" => Float,
|
142
|
+
"buffer_queue_byte_size" => Integer,
|
143
|
+
"buffer_stage_byte_size" => Integer,
|
144
|
+
"buffer_stage_length" => Integer,
|
145
|
+
"emit_count" => Integer,
|
146
|
+
"emit_records" => Integer,
|
147
|
+
"write_count" => Integer,
|
148
|
+
"rollback_count" => Integer,
|
149
|
+
"slow_flush_count" => Integer,
|
150
|
+
"flush_time_count" => Integer,
|
133
151
|
}
|
134
152
|
error_label_info.merge!("config" => {"@id"=>"null", "@type" => "null"}) if with_config
|
135
153
|
opts = {with_config: with_config}
|
136
154
|
assert_equal(input_info, d.instance.get_monitor_info(@ra.inputs.first, opts))
|
137
|
-
|
138
|
-
|
139
|
-
|
155
|
+
assert_fuzzy_equal(filter_info, d.instance.get_monitor_info(@ra.filters.first, opts))
|
156
|
+
assert_fuzzy_equal(output_info, d.instance.get_monitor_info(test_label.outputs.first, opts))
|
157
|
+
assert_fuzzy_equal(error_label_info, d.instance.get_monitor_info(error_label.outputs.first, opts))
|
140
158
|
end
|
141
159
|
|
142
160
|
test "fluentd opts" do
|
@@ -186,16 +204,29 @@ EOC
|
|
186
204
|
"plugin_category" => "output",
|
187
205
|
"type" => "relabel",
|
188
206
|
"output_plugin" => true,
|
189
|
-
"retry_count" => 0
|
207
|
+
"retry_count" => 0,
|
208
|
+
"emit_count" => Integer,
|
209
|
+
"emit_records" => Integer,
|
210
|
+
"write_count" => Integer,
|
211
|
+
"rollback_count" => Integer,
|
212
|
+
"slow_flush_count" => Integer,
|
213
|
+
"flush_time_count" => Integer,
|
214
|
+
}
|
190
215
|
expect_test_out_record = {
|
191
216
|
"plugin_id" => "test_out",
|
192
217
|
"plugin_category" => "output",
|
193
218
|
"type" => "test_out",
|
194
219
|
"output_plugin" => true,
|
195
|
-
"retry_count" => 0
|
220
|
+
"retry_count" => 0,
|
221
|
+
"emit_count" => Integer,
|
222
|
+
"emit_records" => Integer,
|
223
|
+
"write_count" => Integer,
|
224
|
+
"rollback_count" => Integer,
|
225
|
+
"slow_flush_count" => Integer,
|
226
|
+
"flush_time_count" => Integer,
|
196
227
|
}
|
197
|
-
|
198
|
-
|
228
|
+
assert_fuzzy_equal(expect_relabel_record, d.events[1][2])
|
229
|
+
assert_fuzzy_equal(expect_test_out_record, d.events[3][2])
|
199
230
|
end
|
200
231
|
end
|
201
232
|
|
@@ -303,7 +334,17 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
303
334
|
"plugin_category" => "output",
|
304
335
|
"plugin_id" => "null",
|
305
336
|
"retry_count" => 0,
|
306
|
-
"type" => "null"
|
337
|
+
"type" => "null",
|
338
|
+
"buffer_available_buffer_space_ratios" => Float,
|
339
|
+
"buffer_queue_byte_size" => Integer,
|
340
|
+
"buffer_stage_byte_size" => Integer,
|
341
|
+
"buffer_stage_length" => Integer,
|
342
|
+
"emit_count" => Integer,
|
343
|
+
"emit_records" => Integer,
|
344
|
+
"write_count" => Integer,
|
345
|
+
"rollback_count" => Integer,
|
346
|
+
"slow_flush_count" => Integer,
|
347
|
+
"flush_time_count" => Integer,
|
307
348
|
}
|
308
349
|
expected_null_response.merge!("config" => {"@id" => "null", "@type" => "null"}) if with_config
|
309
350
|
expected_null_response.merge!("retry" => {}) if with_retry
|
@@ -311,7 +352,21 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
311
352
|
test_in_response = response["plugins"][0]
|
312
353
|
null_response = response["plugins"][5]
|
313
354
|
assert_equal(expected_test_in_response, test_in_response)
|
314
|
-
|
355
|
+
assert_fuzzy_equal(expected_null_response, null_response)
|
356
|
+
end
|
357
|
+
|
358
|
+
test "/api/plugins.json/not_found" do
|
359
|
+
d = create_driver("
|
360
|
+
@type monitor_agent
|
361
|
+
bind '127.0.0.1'
|
362
|
+
port #{@port}
|
363
|
+
tag monitor
|
364
|
+
")
|
365
|
+
d.instance.start
|
366
|
+
resp = get("http://127.0.0.1:#{@port}/api/plugins.json/not_found")
|
367
|
+
assert_equal('404', resp.code)
|
368
|
+
body = JSON.parse(resp.body)
|
369
|
+
assert_equal(body['message'], 'Not found')
|
315
370
|
end
|
316
371
|
|
317
372
|
data(:with_config_and_retry_yes => [true, true, "?with_config=yes&with_retry"],
|
@@ -341,7 +396,17 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
341
396
|
"plugin_category" => "output",
|
342
397
|
"plugin_id" => "null",
|
343
398
|
"retry_count" => 0,
|
344
|
-
"type" => "null"
|
399
|
+
"type" => "null",
|
400
|
+
"buffer_available_buffer_space_ratios" => Float,
|
401
|
+
"buffer_queue_byte_size" => Integer,
|
402
|
+
"buffer_stage_byte_size" => Integer,
|
403
|
+
"buffer_stage_length" => Integer,
|
404
|
+
"emit_count" => Integer,
|
405
|
+
"emit_records" => Integer,
|
406
|
+
"write_count" => Integer,
|
407
|
+
"rollback_count" => Integer,
|
408
|
+
"slow_flush_count" => Integer,
|
409
|
+
"flush_time_count" => Integer,
|
345
410
|
}
|
346
411
|
expected_null_response.merge!("config" => {"@id" => "null", "@type" => "null"}) if with_config
|
347
412
|
expected_null_response.merge!("retry" => {}) if with_retry
|
@@ -349,7 +414,7 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
349
414
|
test_in_response = response["plugins"][0]
|
350
415
|
null_response = response["plugins"][5]
|
351
416
|
assert_equal(expected_test_in_response, test_in_response)
|
352
|
-
|
417
|
+
assert_fuzzy_include(expected_null_response, null_response)
|
353
418
|
end
|
354
419
|
|
355
420
|
test "/api/plugins.json with 'with_ivars'. response contains specified instance variables of each plugin" do
|
@@ -377,13 +442,23 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
377
442
|
"plugin_id" => "null",
|
378
443
|
"retry_count" => 0,
|
379
444
|
"type" => "null",
|
380
|
-
"instance_variables" => {"id" => "null", "num_errors" => 0}
|
445
|
+
"instance_variables" => {"id" => "null", "num_errors" => 0},
|
446
|
+
"buffer_available_buffer_space_ratios" => Float,
|
447
|
+
"buffer_queue_byte_size" => Integer,
|
448
|
+
"buffer_stage_byte_size" => Integer,
|
449
|
+
"buffer_stage_length" => Integer,
|
450
|
+
"emit_count" => Integer,
|
451
|
+
"emit_records" => Integer,
|
452
|
+
"write_count" => Integer,
|
453
|
+
"rollback_count" => Integer,
|
454
|
+
"slow_flush_count" => Integer,
|
455
|
+
"flush_time_count" => Integer,
|
381
456
|
}
|
382
457
|
response = JSON.parse(get("http://127.0.0.1:#{@port}/api/plugins.json?with_config=no&with_retry=no&with_ivars=id,num_errors").body)
|
383
458
|
test_in_response = response["plugins"][0]
|
384
459
|
null_response = response["plugins"][5]
|
385
460
|
assert_equal(expected_test_in_response, test_in_response)
|
386
|
-
|
461
|
+
assert_fuzzy_equal(expected_null_response, null_response)
|
387
462
|
end
|
388
463
|
|
389
464
|
test "/api/config" do
|
@@ -394,7 +469,7 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
394
469
|
tag monitor
|
395
470
|
")
|
396
471
|
d.instance.start
|
397
|
-
expected_response_regex = /pid:\d+\tppid:\d+\tconfig_path:\/etc\/fluent\/fluent.conf\tpid_file:\tplugin_dirs
|
472
|
+
expected_response_regex = /pid:\d+\tppid:\d+\tconfig_path:\/etc\/fluent\/fluent.conf\tpid_file:\tplugin_dirs:\/etc\/fluent\/plugin\tlog_path:/
|
398
473
|
|
399
474
|
assert_match(expected_response_regex,
|
400
475
|
get("http://127.0.0.1:#{@port}/api/config").body)
|
@@ -427,6 +502,20 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
427
502
|
assert_true !get("http://127.0.0.1:#{@port}/api/config.json").body.include?("\n")
|
428
503
|
assert_true get("http://127.0.0.1:#{@port}/api/config.json?debug=1").body.include?("\n")
|
429
504
|
end
|
505
|
+
|
506
|
+
test "/api/config.json/not_found" do
|
507
|
+
d = create_driver("
|
508
|
+
@type monitor_agent
|
509
|
+
bind '127.0.0.1'
|
510
|
+
port #{@port}
|
511
|
+
tag monitor
|
512
|
+
")
|
513
|
+
d.instance.start
|
514
|
+
resp = get("http://127.0.0.1:#{@port}/api/config.json/not_found")
|
515
|
+
assert_equal('404', resp.code)
|
516
|
+
body = JSON.parse(resp.body)
|
517
|
+
assert_equal(body['message'], 'Not found')
|
518
|
+
end
|
430
519
|
end
|
431
520
|
|
432
521
|
sub_test_case "check retry of buffered plugins" do
|
@@ -482,6 +571,18 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
482
571
|
"plugin_category" => "output",
|
483
572
|
"plugin_id" => "test_out_fail_write",
|
484
573
|
"type" => "test_out_fail_write",
|
574
|
+
"buffer_newest_timekey" => output.calculate_timekey(event_time),
|
575
|
+
"buffer_oldest_timekey" => output.calculate_timekey(event_time),
|
576
|
+
"buffer_available_buffer_space_ratios" => Float,
|
577
|
+
"buffer_queue_byte_size" => Integer,
|
578
|
+
"buffer_stage_byte_size" => Integer,
|
579
|
+
"buffer_stage_length" => Integer,
|
580
|
+
"emit_count" => Integer,
|
581
|
+
"emit_records" => Integer,
|
582
|
+
"write_count" => Integer,
|
583
|
+
"rollback_count" => Integer,
|
584
|
+
'slow_flush_count' => Integer,
|
585
|
+
'flush_time_count' => Integer,
|
485
586
|
}
|
486
587
|
output.emit_events('test.tag', Fluent::ArrayEventStream.new([[event_time, {"message" => "test failed flush 1"}]]))
|
487
588
|
# flush few times to check steps
|
@@ -497,7 +598,7 @@ plugin_id:test_filter\tplugin_category:filter\ttype:test_filter\toutput_plugin:f
|
|
497
598
|
# remove dynamic keys
|
498
599
|
response_retry_count = test_out_fail_write_response.delete("retry_count")
|
499
600
|
response_retry = test_out_fail_write_response.delete("retry")
|
500
|
-
|
601
|
+
assert_fuzzy_equal(expected_test_out_fail_write_response, test_out_fail_write_response)
|
501
602
|
assert{ response_retry.has_key?("steps") }
|
502
603
|
# it's very hard to check exact retry count (because retries are called by output flush thread scheduling)
|
503
604
|
assert{ response_retry_count >= 1 && response_retry["steps"] >= 0 }
|
data/test/plugin/test_in_udp.rb
CHANGED
@@ -194,7 +194,6 @@ class UdpInputTest < Test::Unit::TestCase
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
|
-
expected = {'message' => 'test'}
|
198
197
|
assert_equal 1, d.events.size
|
199
198
|
assert_equal "udp", d.events[0][0]
|
200
199
|
assert d.events[0][1].is_a?(Fluent::EventTime)
|
@@ -214,7 +213,6 @@ class UdpInputTest < Test::Unit::TestCase
|
|
214
213
|
end
|
215
214
|
end
|
216
215
|
|
217
|
-
expected = {'message' => 'test'}
|
218
216
|
assert_equal 1, d.events.size
|
219
217
|
assert_equal "udp", d.events[0][0]
|
220
218
|
assert d.events[0][1].is_a?(Fluent::EventTime)
|
@@ -72,10 +72,12 @@ class FileOutputTest < Test::Unit::TestCase
|
|
72
72
|
create_driver %[path #{TMP_DIR}/test_dir/foo/bar/baz]
|
73
73
|
end
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
if Process.uid.nonzero?
|
76
|
+
assert_raise(Fluent::ConfigError) do
|
77
|
+
FileUtils.mkdir_p("#{TMP_DIR}/test_dir")
|
78
|
+
File.chmod(0555, "#{TMP_DIR}/test_dir")
|
79
|
+
create_driver %[path #{TMP_DIR}/test_dir/foo/bar/baz]
|
80
|
+
end
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
@@ -102,15 +104,17 @@ class FileOutputTest < Test::Unit::TestCase
|
|
102
104
|
end
|
103
105
|
end
|
104
106
|
|
105
|
-
|
106
|
-
|
107
|
-
|
107
|
+
if Process.uid.nonzero?
|
108
|
+
test 'configuration error raised if specified directory via template is not writable' do
|
109
|
+
Timecop.freeze(Time.parse("2016-10-04 21:33:27 UTC")) do
|
110
|
+
conf = config_element('match', '**', {
|
108
111
|
'path' => "#{TMP_DIR}/prohibited/${tag}/file.%Y%m%d.log",
|
109
112
|
}, [ config_element('buffer', 'time,tag', {'timekey' => 86400, 'timekey_zone' => '+0000'}) ])
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
113
|
+
FileUtils.mkdir_p("#{TMP_DIR}/prohibited")
|
114
|
+
File.chmod(0555, "#{TMP_DIR}/prohibited")
|
115
|
+
assert_raise Fluent::ConfigError.new("out_file: `#{TMP_DIR}/prohibited/a/file.20161004.log_**.log` is not writable") do
|
116
|
+
create_driver(conf)
|
117
|
+
end
|
114
118
|
end
|
115
119
|
end
|
116
120
|
end
|
@@ -635,7 +639,6 @@ class FileOutputTest < Test::Unit::TestCase
|
|
635
639
|
|
636
640
|
test '${chunk_id}' do
|
637
641
|
time = event_time("2011-01-02 13:14:15 UTC")
|
638
|
-
formatted_lines = %[2011-01-02T13:14:15Z\ttest\t{"a":1}\n] + %[2011-01-02T13:14:15Z\ttest\t{"a":2}\n]
|
639
642
|
|
640
643
|
write_once = ->(){
|
641
644
|
d = create_driver %[
|
@@ -78,6 +78,7 @@ class ForwardOutputTest < Test::Unit::TestCase
|
|
78
78
|
assert_equal 60, d.instance.send_timeout
|
79
79
|
assert_equal :transport, d.instance.heartbeat_type
|
80
80
|
assert_equal 1, nodes.length
|
81
|
+
assert_nil d.instance.connect_timeout
|
81
82
|
node = nodes.first
|
82
83
|
assert_equal "test", node.name
|
83
84
|
assert_equal '127.0.0.1', node.host
|
@@ -102,6 +103,23 @@ EOL
|
|
102
103
|
assert_equal( 10*1024*1024, instance.buffer.chunk_limit_size )
|
103
104
|
end
|
104
105
|
|
106
|
+
test 'configure timeouts' do
|
107
|
+
@d = d = create_driver(%[
|
108
|
+
send_timeout 30
|
109
|
+
connect_timeout 10
|
110
|
+
hard_timeout 15
|
111
|
+
ack_response_timeout 20
|
112
|
+
<server>
|
113
|
+
host #{TARGET_HOST}
|
114
|
+
port #{TARGET_PORT}
|
115
|
+
</server>
|
116
|
+
])
|
117
|
+
assert_equal 30, d.instance.send_timeout
|
118
|
+
assert_equal 10, d.instance.connect_timeout
|
119
|
+
assert_equal 15, d.instance.hard_timeout
|
120
|
+
assert_equal 20, d.instance.ack_response_timeout
|
121
|
+
end
|
122
|
+
|
105
123
|
test 'configure_udp_heartbeat' do
|
106
124
|
@d = d = create_driver(CONFIG + "\nheartbeat_type udp")
|
107
125
|
assert_equal :udp, d.instance.heartbeat_type
|
@@ -88,10 +88,12 @@ class FileOutputSecondaryTest < Test::Unit::TestCase
|
|
88
88
|
create_driver %[directory #{TMP_DIR}/test_dir/foo/bar/]
|
89
89
|
end
|
90
90
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
if Process.uid.nonzero?
|
92
|
+
assert_raise Fluent::ConfigError.new("out_secondary_file: `#{TMP_DIR}/test_dir/foo/bar/` should be writable") do
|
93
|
+
FileUtils.mkdir_p("#{TMP_DIR}/test_dir")
|
94
|
+
File.chmod(0555, "#{TMP_DIR}/test_dir")
|
95
|
+
create_driver %[directory #{TMP_DIR}/test_dir/foo/bar/]
|
96
|
+
end
|
95
97
|
end
|
96
98
|
end
|
97
99
|
|
@@ -741,8 +741,6 @@ class BufferedOutputSecondaryTest < Test::Unit::TestCase
|
|
741
741
|
assert{ @i.num_errors > 0 }
|
742
742
|
|
743
743
|
prev_write_count = @i.write_count
|
744
|
-
prev_num_errors = @i.num_errors
|
745
|
-
|
746
744
|
first_failure = @i.retry.start
|
747
745
|
|
748
746
|
20.times do |i| # large enough
|
@@ -757,7 +755,6 @@ class BufferedOutputSecondaryTest < Test::Unit::TestCase
|
|
757
755
|
break if @i.buffer.queue.size == 0
|
758
756
|
|
759
757
|
prev_write_count = @i.write_count
|
760
|
-
prev_num_errors = @i.num_errors
|
761
758
|
end
|
762
759
|
|
763
760
|
# retry_timeout == 60(sec), retry_secondary_threshold == 0.8
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpQIBAAKCAQEArbUTk5n5RruIQGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIx
|
3
|
+
yHBMqx4WaTyA4zjT2VJO5tRBe385zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+V
|
4
|
+
XJfA+s5vAAyzBHY/BA7xxh/QqCI8a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXo
|
5
|
+
fa6YIBQuDjfqa7FRPj+bEWDO5PUqOMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1
|
6
|
+
oNFa7myVmjBuNtkG88Fkd7YNzGa+sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfM
|
7
|
+
I3jFFOJAMmEKd8QXxO5FgIuEnaNOhVRVH/e9wwIDAQABAoIBAQCcYYAWSW/Y9ctb
|
8
|
+
8IguIn8ZF77vNkVYOe1kGfQexjErxPiCvKcEw9TB2HxkkUuXQ/m0lBzkQgIRpB/u
|
9
|
+
VoaN47OdJW70M7UjvVVK0HeCascpd6irpvbYPOZG5MGZUdV4Ftv0U1/l9Y5rTycG
|
10
|
+
KzxM1+rcGjuH8+z5zjlj/FzV1Jx75pgH2vwE7tBC9hMIefKJVxsnj+1I2BWwT3Ra
|
11
|
+
tFayaKW80UYvGQeQjMHyWzEAHAAco5EVTNU9q4xkeKubZx/dod8b05S0Oral0SHY
|
12
|
+
AFzXJCp6k29w0m3saEtVQBTImwNut8scJ4KoryGRp9fj9a/dBb1RHe/6EXZ8kDRe
|
13
|
+
zhB2/XWBAoGBANpaAPdcIXFyke4DRB07JGin4NU+yzIZy+RwsHme1OIwu9jUYQ1j
|
14
|
+
SzcrnJ9adkjgHl4z2psXyeSz/lSUGj7ZjcMVaDu49JSYMPP3heXGkHdtlVyB7KFR
|
15
|
+
OBt1rgNdXYfOLOBg6j7mf5G5fXUIATM8fNw5nDYIivD7U3cl9TdUe3OJAoGBAMuo
|
16
|
+
e/pmRMEaaDmXuNkDGv/ZoOC4j9tO1fGheSdna9gZWoOyY+MUTFNBQuz/8aw6VsKS
|
17
|
+
c7RXY0QI6NsgdLD1OGVgH9AXhDqvgfOBXDWdr/DNJa0wDFNaWRrMFeNQLm7Xhxuf
|
18
|
+
OBQycq6vUiWJ6XTqcdk+xErcWRbsQPsGozCEcHfrAoGBAI+sl2QsMClI/PLDHWeq
|
19
|
+
ict/Y3aNigCebsYSzFxKgcOP05raLD417sEPplBIovpS1kigECDrJ0KgmSIoDZj7
|
20
|
+
Z8dM57gcfHrmJZfycB2AaYDcD2K+bui625Nd/LFkFu4MYQUHYDshSiGmDwIZ0UhY
|
21
|
+
bcQu+DWpq1rj1Mjaph7RLSYZAoGBAMAJNiZt6qT/ZonwA/A1mm7oYmekAJo2I0y+
|
22
|
+
CwTZ43oYph4Kx19nU3Up05aw3MyfEhJUkF/cCxErKY7+cqouAKiu1DCfDCNePTZE
|
23
|
+
o5M3BqEUgFNnPCgYyG6ZRIZco/wGpTKplvKMg1EuplIZUhbZvtKv+d3xGtyfl8Jc
|
24
|
+
huKH75lTAoGAHQ3Sy56zgQEJ3QFrIw4puztf/KXpSgLA+aSDh6Ti4IY7L+CwZmuW
|
25
|
+
JyVbgF33CwSIKEhacmALs1ZZsDc1ZXov1HWwePxe4/m7smoqZDtrRXQsbRB5COzA
|
26
|
+
U30iEMW/rwI3WmHhiIWZYje85+VJZqBc5QS8guv4/XrS/FE7C8Suksc=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE
|
3
|
+
ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX
|
4
|
+
DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j
|
5
|
+
YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI
|
6
|
+
QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385
|
7
|
+
zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8
|
8
|
+
a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq
|
9
|
+
OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+
|
10
|
+
sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO
|
11
|
+
hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
|
12
|
+
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB
|
13
|
+
7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk
|
14
|
+
D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs
|
15
|
+
dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH
|
16
|
+
tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU
|
17
|
+
OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF
|
18
|
+
XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv
|
19
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE
|
3
|
+
ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX
|
4
|
+
DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j
|
5
|
+
YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI
|
6
|
+
QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385
|
7
|
+
zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8
|
8
|
+
a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq
|
9
|
+
OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+
|
10
|
+
sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO
|
11
|
+
hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
|
12
|
+
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB
|
13
|
+
7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk
|
14
|
+
D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs
|
15
|
+
dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH
|
16
|
+
tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU
|
17
|
+
OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF
|
18
|
+
XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv
|
19
|
+
-----END CERTIFICATE-----
|