fluentd 1.9.0-x86-mingw32 → 1.9.1-x86-mingw32
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/PULL_REQUEST_TEMPLATE.md +2 -1
- data/CHANGELOG.md +24 -0
- data/Gemfile +0 -2
- data/appveyor.yml +5 -14
- data/fluentd.gemspec +2 -1
- data/lib/fluent/config/section.rb +4 -0
- data/lib/fluent/plugin/in_monitor_agent.rb +1 -1
- data/lib/fluent/plugin/in_tail.rb +12 -139
- data/lib/fluent/plugin/in_tail/position_file.rb +171 -0
- data/lib/fluent/plugin/out_forward.rb +3 -2
- data/lib/fluent/plugin/out_http.rb +10 -4
- data/lib/fluent/plugin/output.rb +1 -1
- data/lib/fluent/plugin/parser_syslog.rb +5 -2
- data/lib/fluent/plugin_helper/cert_option.rb +5 -2
- data/lib/fluent/plugin_helper/http_server.rb +62 -2
- data/lib/fluent/plugin_helper/http_server/compat/server.rb +14 -3
- data/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -0
- data/lib/fluent/plugin_helper/http_server/server.rb +14 -8
- data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
- data/lib/fluent/plugin_helper/server.rb +5 -10
- data/lib/fluent/plugin_helper/socket.rb +4 -8
- data/lib/fluent/tls.rb +81 -0
- data/lib/fluent/version.rb +1 -1
- data/test/config/test_section.rb +0 -2
- data/test/plugin/in_tail/test_position_file.rb +192 -0
- data/test/plugin/test_in_tail.rb +13 -0
- data/test/plugin/test_out_http.rb +15 -2
- data/test/plugin/test_output_as_buffered_backup.rb +2 -1
- data/test/plugin/test_parser_syslog.rb +36 -0
- data/test/plugin_helper/data/cert/generate_cert.rb +87 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
- data/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/without_ca/cert.pem +20 -0
- data/test/plugin_helper/test_http_server_helper.rb +168 -7
- data/test/plugin_helper/test_server.rb +40 -9
- data/test/test_tls.rb +65 -0
- metadata +52 -4
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
3
|
+
DEK-Info: AES-256-CBC,8C5793DC2044D52EF3249993DB56034A
|
4
|
+
|
5
|
+
00Ew3GVB6iOesF0uniabI127Yvwdr9auPDb3cFd8saZF29buGkn0L6ZxYJXYdBTn
|
6
|
+
Yz65W8CH99G7DS8KH5+QJ3SirrQeWIuXDdBZo36RqLoQkOuC8MnPmQVOFCnOOaSP
|
7
|
+
DrtjQuRX8I8WsEO6WumpAU/phjjQTnPSg3TbzeAFvPpKN116IiW0n8nLOGjo11fu
|
8
|
+
bNzHZ6Z5Da0BDXJm/P1Zgn8L39jxVLp2bCZnzSIKD+ipWUPs2HWYKLs1Z6V345ME
|
9
|
+
QBiG8fF2tL3+DARAqVqQ2pd8xkK1m4VMz3ajHdRMkXQj2cJsAkAu+cXsKxbbz9WN
|
10
|
+
9GV45tlbVYH1VQJyeeVQyC+bDsgq0N6HG8iEoHD4fpx3fOU958J81OKJe05Qn1uF
|
11
|
+
1HSfKBPRyaEmYKdzT02WWcz8l4ACpnMRGyC4dho41l6beNOEvMqIqeuEvvL5Bf67
|
12
|
+
cuGsmt36TQEcVjHS5fV1FrWwkPxoC+8ptBJjHQ2Lp8Cb4abQsW7n+c/IPIq94AAe
|
13
|
+
azMx8Xf89jR2n5zvQNaAE/NRUL49Sgc+5cGZ4EUJH8mtN1mEgMqxrci1oxRy/Q2P
|
14
|
+
rxslZZ5ynp7ii6n+V6cg0Emo35LJBNqtISrSMLkzpvqfx0UFhaWn3C+d1OfvfuGt
|
15
|
+
rp882hj7Yo6n6x/ZX9iXRUGgTxGSyqJoAnpLUhm1ijU850w7V/MNI6huL/6jwgR9
|
16
|
+
R5lYdjQXEJRxZO/XZvHc+2wY/ZAQX1ZaIvFlTHNiHjwrCKk4IxpekHsXFn14wQii
|
17
|
+
RAnD5PdhOalcyc8omSxOXjIOr8dXwhxdzpjmd+qSsIKtXQER0BSVEl4W9WMYhxbN
|
18
|
+
4Mdsil9ZD3QzX/eYfEE0aVi8okpRYlC5mZuhFWquzdWP9IDOfoGw3VB05wRCOMAQ
|
19
|
+
TnUP8T/2UyEa5H4Z2zpVwGzPdZLIjD/K/0zyVGKr2/p6vHjKHEhQ3ojIcg54Zc1O
|
20
|
+
MgjuXsDcJp3LRW3Iul8L3iSpcR2QhbAidE/MgLGoYMZSC/ycXZ5nOOsgkv3oyREI
|
21
|
+
kOW3cDgSss56yhcxpqaAh94K2orj9PhRZMi/Vu9KPVASd4irnvu4VMMF2cmgNuPI
|
22
|
+
a84KbpFUnt8Hw1aTAaKNbduxAZ0sZ72bNHxjidY/uDDCXxBtcEaYMzJXwAB3kEhG
|
23
|
+
O+B6oYaErdkrEs5kv+AOB0NosoFSW3nYEcDPL20nI14+lv9xnlwEfoX4JfoREyHH
|
24
|
+
IRGK+741ZS2Gut66S4o/CX/Xpb/7PwnUJqdbq4jpHs5TPzV8gxbFBp7jlbpAOqQ+
|
25
|
+
MWCZhwIHzd4B4k97CllHMgm2ERhp0Trp0xOYQDgexjABYHsBdju6bi81ovr7EQnQ
|
26
|
+
tVV8LFjB4NNaa8AcNKb3VU4SA0jSGLNeuzviQyviVk+aVETIOhcos7gSsdMsJEiw
|
27
|
+
WJgqqz+hj0pi4FKhhucYcsOlPPbc2MAc4WM6gj5UsHYVmeLBtl/jdvQIJLCURkFq
|
28
|
+
Ya62uq8WDSefPJKLS8D7v8lbmjVubPB/Gi9ZuwjhTIRb0ZxfIXnWsOl8jQUhiXzp
|
29
|
+
dhGctbAdXLuOCGXK9fbo/9qOonAzRZaGvkNFSaUblLidrzf4QaK1+pKPEfnlwAmS
|
30
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEogIBAAKCAQEAq0TVfjX505ziwYo9P4AvoJ3mipH/EczuXsan5optw/evmJFK
|
3
|
+
aNw7ZdjZpTl2TA5zWzhHVO87u3eDbA/pLcyGkr9MgiP0R0MzV+H5M2+dqa4sNNDG
|
4
|
+
KbbEP8sM4zONvn2YOr+nZWG4Z62PF2ZSDa/bUUuNFq077IbIJH9P0Ad3camC1IOJ
|
5
|
+
WVKi/nJEmrWhO1VUfalcJwV/PZP3uU73UkZ/57A10arsn3UQauR1Lbo9ml4D3Bcy
|
6
|
+
IuTGmvzdMd57LHETlqtfLPmhBK+wwMzvaaJfve605vTwyVQDd/tOuoHkblwm/qwk
|
7
|
+
p+qfqpLirQHOC7AhsBDMmpQTWBhE5tUDwZBFTwIDAQABAoIBAA71aCAp3rQY08VL
|
8
|
+
qaXOMFq679PShJCtcXRdrXR5SrT/ARs2NWWLNrTih7/ikO57pJ+m/rPwYSsyeQwL
|
9
|
+
J7aUUnymsKv9L+y5ddaLKhTP/tk/GSVTxrsF94YK2glOC2dD2PPooVo9ermzcvf8
|
10
|
+
O9ZuMZ2cF6qPXth9vSVS6UmmHUyT+N545FladLKhctz6AwXLYaN/yOeHXEsfy71S
|
11
|
+
v/hkFukDPFpSwXnpgLBTUyZHCw3slUBN6Pk4FwHn1ZtAGmRp5kgvIv+pBqLJVmAq
|
12
|
+
nVtwQt5ECYC8AsCwr6BCTkJ4CWk4c2m3FDx2u8LBoiuAdVFamFz7Bt7JaPPs9s27
|
13
|
+
4hyDUYECgYEA5FNKKMQcf8h5HQIZHJveag/STp5tmmL04hiZ05ZFIWijXcN4QTxw
|
14
|
+
u5I9/7Knak6PTQHJL1e4eggWz8ETT0IW08eYYUQQ1CEyru7XbB0OKEyPNEtMgART
|
15
|
+
gSO8Q3vjceKGRVAFDlGH4dt3O+f5IQz8MYA72M5l5hv4hWxw96E5UrECgYEAwAcj
|
16
|
+
bQFRarh4o//LkVVLSl4IlscEIkh1oac3I5gLayYK/nLG+65gtEuAMtwdra9KMHZW
|
17
|
+
5gfFbIHGxH30mheZowC+aR9K6Vdp/f7/Guk4KTJzXsMgUtzR+2Y6dXlfe0GCqqoR
|
18
|
+
nzaWnHe+lYt9oxMZ1QN+McsYLySaWTU3glvZF/8CgYAi78utKTTjKJ2/no6RHhiO
|
19
|
+
ShV4Ci3jLbkiz3jaM2gokIZO1pYUBVeKm/n4ojGTxqmOsvNB1z5XDd3PtE9sFUTA
|
20
|
+
6w2Z9HxOuTW0Jr+3v0pnSC+xZMQz4nWUkQ9BlDddObgp6vCbHEaafKZl+Dzanc4J
|
21
|
+
FQITTqGw8B6667jtazIGQQKBgGAM8gZbK2tTPFzj3OIkJNXc9TTd9U5kqhoituzh
|
22
|
+
54w/6i3eIXPQhGSKg2RtP5cZ3+UfvFWxO2oL++1bB1dwSJQFEjkowuK2q7i1rMq8
|
23
|
+
LzBEIPscZPWtqIa0WrdZ742Kdh6BlPDrcChxqO3KaRyBuGEZLy0e5kjmaSIIAWz+
|
24
|
+
HjfnAoGAKuvFJKBV9jIoDJGP/hRgBdKWaZdGhvSFVMgOPt054mozs97OXW5lyH0d
|
25
|
+
HH612GWksELxQAJ0yZjCWXcEAHSRk9oqg8X5YKY9WWZDjUpRq6FVH+wFc44Eogqh
|
26
|
+
YNJhGzaPYRhSepQXyrt/wwOQuJWYjlLzz9zFcNzu2LcB10KcYhM=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDOzCCAiOgAwIBAgILANKwmEMr6Kq7374wDQYJKoZIhvcNAQELBQAwUzELMAkG
|
3
|
+
A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8w
|
4
|
+
HQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQub3JnMB4XDTcwMDEwMTAwMDAwMFoX
|
5
|
+
DTIwMDIyMTA3MTMyOFowUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYD
|
6
|
+
VQQHDA1Nb3VudGFpbiBWaWV3MR8wHQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQu
|
7
|
+
b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoVzENDHAv8h/1I3B
|
8
|
+
XWFrGDG1Er1tWktQ/6SfNna1cTPX9ifDOyzi/T06a/zPptqzS+POfSBNHI3V6Kg0
|
9
|
+
A1xvWnRPq0PIxthgv/PPCrY/PpcWLeWM0NnJyo02B3mLeWl7Zyc6xRXsCHvVJjlR
|
10
|
+
Kbtu+/FvCfwaKtSl4daNdy16LIuSK1MI7uHlJqiaBqouL63wCIr2NSFvuMkJs7so
|
11
|
+
WEDVaBA3nHtMmkSB/pXUwMB42IZSVWL8cQEKXkfch3nvjE5TEyNtXyTttyj8UYOv
|
12
|
+
5v/6SgEMrd1yrUB6hGsJYSUJiGp2S0p+XthPXrX9EKVjTDJWtZ5xmkKHxVLg6Nyi
|
13
|
+
wikwSQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBP
|
14
|
+
dQwfyIV+XYJGv1S8wCfFO9XNSi0jwnSz+XnkNBgOH7OC1dmW50zIBGb0ZUbdoJ6L
|
15
|
+
6hlZFyJz5AeGiYB2YBieb1Ds1P4WSJdE4fBWsGIuv8d3fT+VOhR6e0nvyusHVYaG
|
16
|
+
JtZysNMeVrdvZJVUj83pI0EOIxP9YBczJmJ+PB3LWtbRHHprnZ+z8GtmdU5Py6+E
|
17
|
+
cJJXEDqO99COVe6Ux+8PRblUSQBETJJnfLIEX1Pm1f2v2o8AxXLzpmkgXgfk59T5
|
18
|
+
W5yudJBslEmHCdzoLePNoCyFS2b6FJYrf30/ONMmGmUKhu6PuaChkiqhsqgbNnIh
|
19
|
+
fAUsiARADQG9gmvMFCMO
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDOzCCAiOgAwIBAgILAKIMaSBKt5Lq0kYwDQYJKoZIhvcNAQELBQAwUzELMAkG
|
3
|
+
A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8w
|
4
|
+
HQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQub3JnMB4XDTcwMDEwMTAwMDAwMFoX
|
5
|
+
DTIwMDIyMTA3MTMyOFowUzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYD
|
6
|
+
VQQHDA1Nb3VudGFpbiBWaWV3MR8wHQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQu
|
7
|
+
b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq0TVfjX505ziwYo9
|
8
|
+
P4AvoJ3mipH/EczuXsan5optw/evmJFKaNw7ZdjZpTl2TA5zWzhHVO87u3eDbA/p
|
9
|
+
LcyGkr9MgiP0R0MzV+H5M2+dqa4sNNDGKbbEP8sM4zONvn2YOr+nZWG4Z62PF2ZS
|
10
|
+
Da/bUUuNFq077IbIJH9P0Ad3camC1IOJWVKi/nJEmrWhO1VUfalcJwV/PZP3uU73
|
11
|
+
UkZ/57A10arsn3UQauR1Lbo9ml4D3BcyIuTGmvzdMd57LHETlqtfLPmhBK+wwMzv
|
12
|
+
aaJfve605vTwyVQDd/tOuoHkblwm/qwkp+qfqpLirQHOC7AhsBDMmpQTWBhE5tUD
|
13
|
+
wZBFTwIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB7
|
14
|
+
0p/K0NwkDLTQSX55G+5m4Tjjgw55jQaSTZ9I5lVrIppOeIB337AlAejGMU+37Qxu
|
15
|
+
tY07B8j8d7ymGjM23JCIlNXjEcWlIY8w1eDPN5i6KFawXBQbqvWiAsJjbNcy045B
|
16
|
+
HglWhayG5yvlA9Fxhxf87Riog4sKGJvJdSw7E87fW0dx+Hi7ZyzXwI/XlXcDLd1Z
|
17
|
+
3Z/cM6jEz8w5UwN3DQzD74TS4nK/oFrcZk+syKDEXDeArMqE9sy0eOZ17c+aS27B
|
18
|
+
t0yUKiAEBfY5R5Goqo3p6kZ8qhRIqyB8op4f24GoQeZ5CvqwqlPOsaI6FLIn0rfJ
|
19
|
+
cie9jnR4W5AgF22tJOPP
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
3
|
+
DEK-Info: AES-256-CBC,F34CEE87EF3B4EB12D41896B88BCC81A
|
4
|
+
|
5
|
+
541xls0z/Nw8uf+rv7SPgLj9PgCuY4fbjO0QEsQzdtjxXco9rrM9rMm9O1wCHoc0
|
6
|
+
LWeZYTK0YzrAwHo9mVuJZ3bhRQUVr2j8k7z0G21rxaoaLuonEugeQIC1pwJgj3at
|
7
|
+
kSF32dSLExv4XLdZbZziLverPQ9eaME83cq76M2W7ahjq4hMENYjfiUyhLyLGQ+2
|
8
|
+
6J1wxzcjhmp6M1PImrV5hN9e8HPp5gcljalmRRjYycI7UE22ZDiK4yJ2Qdy1Agil
|
9
|
+
44kgzie+BZvyTIquQxBdPyFhEQRA1TQ4RNEDB+ZIdVAQkQKbvdZVURSYGYIw42cX
|
10
|
+
Ufv2klZY9r9MBUJ/Bp8U1dgPlbi4GsKNFo1aL5H3KX0FxEvdAoQQe7sEVGSDpFtN
|
11
|
+
ns7KWvllfO5OABSgST+UhtW5IuMecx6x6JNosX3FlOwz58i+6eSEyr/uPNr3pNFu
|
12
|
+
BglIgBxQpLrK9dSxf87LRloOc8/1Z5yFzTz4H0r2RWYgI4JGYIrU7vanyxcgcJtH
|
13
|
+
lWEYMW9o9vqG7DoeetUrCxVXXwgCG+61XV3lVdkWaVpC0FdLGHEyc9vZtvkKigOu
|
14
|
+
7YfwcY5R7Qt0J4Rjclc6DjsZrKT1JEs7Fu2YG/tpLYvIy78U5p7r/nbq/n4OSZof
|
15
|
+
5WjGK8zaXlc+rcxrel2JHHmdxkOHmuyOLJwNi4WnpXz+hoJbuujb1iu00/eh6muy
|
16
|
+
nbhLfWePCu4RyzbXWZLnjMUbAZUKgwIGoij+jMhtGYEIutFSX+ubBVn0NwA1ibvZ
|
17
|
+
11V62kIWxfXVLRWyXxxYHfMKlcraPynQBmORe/wnS8bTcnCHNmahjcDyxkA+C8Em
|
18
|
+
zK1vfze0vRxrbOGbT0HcFFcKm9SfhAGeqdbuBshayqk45CRBGceEhjbiYx0N6Vz9
|
19
|
+
KfratcoRnGO6RtI0A9aasILvTSH+mgDRhU1ahk+54zxXCdHatGtrofE17kd7zB48
|
20
|
+
9n4XCQgivDCNjU+/ac9IS9B64wQYk7nL+EUylMLOd0psKoNrRVotjWyEOJQS6/uv
|
21
|
+
df4sC1IzPVG/TsRO1Qc+y5O3YjjsthH4bQem1jzaTuVXKZB8lenrYe3FXVtdLJ1M
|
22
|
+
f2mzE6DiAe0UMa43GaQzLCNd9dxzWrlElUkX1MiJNHHQW5ejPZuUilLbg5ChYDFF
|
23
|
+
zJYj2b91Tp7CAYvvzJ2B7IA31jxSkjpLfpR/Ry0v/Mq7ySHN2BaSCA7GUf1dYtvO
|
24
|
+
6maEhB8ys6uZTUES8NuB+EoOLRb23yPRnLfAq/E2ov736ArRJUmJhmPjSKKdsjvN
|
25
|
+
MJmsX4NY3vXkP9iSKOiJn6GdTkgJksgqa6XrxzM5MEjlpBIwR4S623jXEQeeAZSL
|
26
|
+
jn2xLJrW7gjrZthjhjjxEeFKoVxnO9F6MxOf7WkToVYkn4sW7PTNA4yngpjgtSWg
|
27
|
+
6XpYoW25qMxtdKRd/zGijQxsm6ca0XadhKFG2Nf/po8zgs2wmsnom4ownl+WKdkW
|
28
|
+
GmYkRBBn5rZ87azQ3HKkvkpzuQ6z+R1i5kn2QGvYwAwjGnPovM0IMkbEj4slXrG6
|
29
|
+
zDfHapR8PPLx0dCzet918vIZtBHMl9obEnxnwlcgVYlqXzYDaeWlK161YnIRW5Gd
|
30
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAm/8eZzoWZIUzOFSLoWoy6oMtjli/wfTt0D24ene5HNAg4haO
|
3
|
+
IEbILGsw3Uab+LyXEpjwtdpLH1Rk5Goj+FeI477k7M6sVn0XsyamSxDakbjFahQI
|
4
|
+
E5VyvsloZs0UQqJy2Mzv0E59Rr+V5ZMGro104bqVekXwbVR/gFPAGb8dk5v9xunZ
|
5
|
+
vK/7jtpWQ5xk3pw6Rq3M7q6XtaZccKcKBAID2DvOEv+Hm9FcOhbs7aTEvcpEDFto
|
6
|
+
dAkqn/5e4jFsVOqjHzrPvRwE3Qdm5yXhNCFoFZC215vs2sIl5pE157bJyGrFIODl
|
7
|
+
O4Bx082fEEeRLZV/f3qOvPACBzBxHmdlA8jfHQIDAQABAoIBACxdt3jmVV4LYBDi
|
8
|
+
QsAKoyZ9XmSAqzDvhv9VvnTePgCK1P9YKN3XI7E2XzRfk5Z/lHvOkY824WyspPEt
|
9
|
+
msNTqfQT46nR8cO7WhUypdLtnSwan9LWlaF0PKk0QQQTyXJWH1G3n3DgEdMgQ/KC
|
10
|
+
CUF1q8tTNJYM9B80C/skVps79p53Kl6YbxkbtL0FQbGs9fsEP+tGpIrM2sSctHEA
|
11
|
+
E7jtY7yFNpCgy8a5XlkNG9k+2UtsA0ioThwjmMc7sVmCdGEPmguinA8yloQy9MVW
|
12
|
+
RNZu0fOkxJ80uHhpg2eQTFPEWC89NepqBOKeSKqREVY6KKN/Vo07akPrnAm9z60c
|
13
|
+
QDgkvuUCgYEAyRnPHVJZJrsTx4pXlmOeSFReVB/BFnuxsbOYeXabiNab53JwMAee
|
14
|
+
2UEFlEUeJo/T3VhLr2UnfeaVYnKDWPt1UPHecGpYHXp18bb08Y/e55yGZqECWgec
|
15
|
+
c7Jhz3ZVl0Qviupc3hIMeaMCMl9VLeJNisja4f7ZZ4KMCP/ju3pmRZsCgYEAxpUj
|
16
|
+
4zHPYeZGuCl8TJsgvF/LmCiN+Pjqa5AtvwC6g37fG0Y1X+ifRndPcSfyP7V94jy9
|
17
|
+
kMEsymS3QHYOODhKFTg3R38QdvTH3HD2k0C3PbPNChkpb0OUSjtGvKB681C/nQ12
|
18
|
+
uo4ZH+nKSTJjlzO2dtPZ/Dhloh9PYi/ZMnOvVacCgYEAsUuayPwX80iN6Kc0Dzem
|
19
|
+
jZgsTbhtMFg/Ui7HZ5bFC0BB1SyUchPV3S4xMAY7zb2SCRxWJb1lst7+pvvUhzey
|
20
|
+
t3l2Jd/r7ZlQsJkfnHS+Da5247Zh72O0cGA9UX2/egw4ah2zYGnDK94mCqj33Ose
|
21
|
+
eBQavZJEs7hpo2mOqnQABK8CgYAseDF1Ky5ZqgukKgYf0Y1fIcSh6lMAsh0swTi9
|
22
|
+
URhzYfHsVaiWNa2VRhqQKHXjNm1eQGPjCp9RI4S19rnwdQqB/fjDFf1F5kLrZpCR
|
23
|
+
ISjntF/yJvhUZjnK9cM9cmKWIjsGnIE9/Zw6vUwDYDlVHst5iK+D/80ipQhN4JEu
|
24
|
+
7yEQeQKBgBtiAgItkCRrHj0oPPqzGOIFJCnq9VL+xPclzntfNjIQu+hvTVwk/fDX
|
25
|
+
vw03uikd6M++8DAY/QXN8JjGH8+JgOjHuJnEEE5E2dYtl2rWJIXQEVDIiPK6j8LN
|
26
|
+
bFB/Nd504eGsAcD4p+ufNp5Kp5RaUjav1VMmr99ZDJzx8N5dZzi/
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIKITVRNCTUgOhrbDANBgkqhkiG9w0BAQsFADBTMQswCQYD
|
3
|
+
VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
|
4
|
+
BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwHhcNNzAwMTAxMDAwMDAwWhcN
|
5
|
+
MjAwMjIxMDcxMzI5WjBXMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNV
|
6
|
+
BAcMDU1vdW50YWluIFZpZXcxIzAhBgNVBAMMGnNlcnZlci50ZXN0aW5nLmZsdWVu
|
7
|
+
dGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBBE1ryHwGHU
|
8
|
+
feCS/8kPOwIuiP6nXJnKwMXqllOuMLWf5IzZwXT4BH1NtavXO3vedPoMLDcCn5MT
|
9
|
+
PQFXcd3MdyZbxyHzbH22HKIgMgZwuYJz65QFD0cPTGf0seTLI2lOUneRaCorffB5
|
10
|
+
MzlgTgxpMulayRqPhBOcQQ6x67R93SHi4LiQWRV3BixEBIu0YIEvUO3BSaPIlYJU
|
11
|
+
mSmYUe1ah6K9t2jVqLIKGlQyvA/fwEa8tOlYWtFv7OheFBTqWjW5gLj/wcSDtUQB
|
12
|
+
BIQT8re6SVyOmyVFmASIpfqQXCF7+IkjJA7tjGmuewJBv17WMK3slZa5PFb130/v
|
13
|
+
jLJ45bIZFwIDAQABo0IwQDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAL
|
14
|
+
BgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQAD
|
15
|
+
ggEBAD2cKdiKz0eTj7z+LZiXY9/EBBXYJQrMDb7S43RFzVtBNVUCbVtP8Q8eKXHV
|
16
|
+
5De6qOHwIHQqh9wE03G6lZxmJGtZHIGIBbN6VdK5PV2H+rOcQ4/4dym5TGMf3J1C
|
17
|
+
1D/uaP1VWKxCR099r1WyJNKEqXqE2LWxtVhb1SvqyzW/DprgZaDG218jiqFOdian
|
18
|
+
j45WH3wilGgbNJzh+d00ZEeU21kGqcqrwpVhsC86vh2YdjQaY00wQEUkm0K84trF
|
19
|
+
OGllMDX2m0pSOQhdrNkHgHHcLvVOpPQZQOnfJ+bpqwWSYl9YOZdGDXGBXMkxguh5
|
20
|
+
vieQv/dHPrFifJyfS6ZpMT3uR2M=
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIKGyBGDBfrjFt5WDANBgkqhkiG9w0BAQsFADBTMQswCQYD
|
3
|
+
VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
|
4
|
+
BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwHhcNNzAwMTAxMDAwMDAwWhcN
|
5
|
+
MjAwMjIxMDcxMzI4WjBXMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNV
|
6
|
+
BAcMDU1vdW50YWluIFZpZXcxIzAhBgNVBAMMGnNlcnZlci50ZXN0aW5nLmZsdWVu
|
7
|
+
dGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm/8eZzoWZIUz
|
8
|
+
OFSLoWoy6oMtjli/wfTt0D24ene5HNAg4haOIEbILGsw3Uab+LyXEpjwtdpLH1Rk
|
9
|
+
5Goj+FeI477k7M6sVn0XsyamSxDakbjFahQIE5VyvsloZs0UQqJy2Mzv0E59Rr+V
|
10
|
+
5ZMGro104bqVekXwbVR/gFPAGb8dk5v9xunZvK/7jtpWQ5xk3pw6Rq3M7q6XtaZc
|
11
|
+
cKcKBAID2DvOEv+Hm9FcOhbs7aTEvcpEDFtodAkqn/5e4jFsVOqjHzrPvRwE3Qdm
|
12
|
+
5yXhNCFoFZC215vs2sIl5pE157bJyGrFIODlO4Bx082fEEeRLZV/f3qOvPACBzBx
|
13
|
+
HmdlA8jfHQIDAQABo0IwQDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAL
|
14
|
+
BgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQAD
|
15
|
+
ggEBAHK2gxBHMkkD2vSQGriXskVcFSUYZ93YnNRLVODKtAVt0DKfIJMW4vveLo+s
|
16
|
+
NW5M0qxTwIG7K2W6Iu5PZtaBqWmDlHqI7FHg316K24OmQY0vxENhZasDLzj/fSPv
|
17
|
+
sFBJfGitBItIni5aSnrDj9IqK+gV6z2c5+oaxuqUILccZgR6lXM2IldmOhlhBvhD
|
18
|
+
dL4pBABjsPZtUtnzCMfvZuJ8ouvduFE3F/oswwq+NakLCk3Sdv/0CWESxHFjiwO0
|
19
|
+
6q2GuxNwhslxdy+6+gp6bSqBgIwQnhU4Xe6HrPMFc/5TLaHuIX0Sq5UrhaGSXYaA
|
20
|
+
woGilBZPBk0cDrn6p3eMPtyZ0Pw=
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
3
|
+
DEK-Info: AES-256-CBC,F6470F3429E9E27737D06D8D7B2CB9CF
|
4
|
+
|
5
|
+
pPtogs2ztVl3UETuyaHhfLCeaeE2nqkiQXmqLSlyJ8YB26bQ0cDx2DJ23tHnJ4LX
|
6
|
+
0FawLsIChTdkO3u6B0E0CqRg/wMNuACbqGazIrtJz0C1fVFoiJD5gAnGOsnWu5/j
|
7
|
+
cz0JTH7aDkkyy/5ecBGCNZA1NKOD4qOFppqFVwOvtXKHJSab19PFaZUyv2AFSUwU
|
8
|
+
tau3ak7Asb9i07Ns4lhA0Aog7TWFD1eVqz/oECq0bByBeNYM1a0rk9a8plYYzI3s
|
9
|
+
33jd8scpKpIJq8ZSy0VL3zuyQ3ncQ1/6xZmNlSK6uZsBWp1JpqkNr+zSj/ymJgds
|
10
|
+
Dhgbsm3Jq+XibMXhGDIdFzWa5st37YLcpZ/7uF1+WajWH8xTX2wKbzTz+n900nTk
|
11
|
+
ORnP0EKE9p9Bl3lDmkP4OKFAccTPMYdIuOLdFopRi6REOfdWMGz92kDu8sD/ayHc
|
12
|
+
cFeQLA2/qS4l1zPsHvkb2TMoJuqVmm9pzEluKKEAShJAN7OUUj81vfJXvEDecGK+
|
13
|
+
2g8HDVMyqPOIgo0abhv0dJHBLGZr2PbBaSgI8Jh9o08REYsqusLUtw5EMHKzA7ed
|
14
|
+
dENxOB8escMZFl/iVQtUTgKF0SXePgrNC8LR8i/G3UUIDBK9E3X16B3WELU8/srY
|
15
|
+
KBEeDnBKlwoBkLWIGhDoL1KcKhrH623gC286CkqdPeB7ikDQEvSTa5PhV+dmQ784
|
16
|
+
SYcWY3hO3ovRjycqXJfGmV6IPAgOIVFQES52aT7JOc0ERwNJTwTBOIOj6J2bNvvh
|
17
|
+
1YDhGVUNoDEW9tbFHiqIilU4fsXXykFK+RJjJjYoQpX1UtBTX3jzPd7qWSdmxb8W
|
18
|
+
RaBbMm99cG/w4d5P0yh1zWmxaPBaR8xgmRH7MkPcwOSPeLebz+pqPSn/nVcu1wAf
|
19
|
+
K3EfWNavM2sWjx7aASyuCSAdyYkq8K9C8MoiPYDzEnI19MkTnzPNJ1H+Xhz3+XBZ
|
20
|
+
sMqn62dQf7dya7WTbaWMyK+UmAMruHMCKfdDKiSt++AtleyKYY+yAQOlX85Uexh0
|
21
|
+
NvXF2dxBWU7BUVaOP8cVWv7az0FtQ3IxVPHWIw3ggal7bmtxnYkID3xLBGrlD0Z9
|
22
|
+
SSjRrQBCMknAAxasfes+b1QYQh4vrbBuQv+X+b/ryLP4BEWKc6xbWhlfpdVBndrX
|
23
|
+
Gx+M+76/+bQGLaiJbvsx8jJGFZTHy+UySKUVf3i7XKpyB7NVZuXsuA3vMK0SsdBl
|
24
|
+
M+HA6vOcl62IbLZf3U/kaEzX6FzkniWgowI1KZ+RO3seCxB9xCyD78IKKaO6M9vX
|
25
|
+
Ib8PtnJzBf+m+FqqH260IR3ZkQjjhLQKRH/WFh1TrZ6onRVcPVM7lC0QtXyJX4pJ
|
26
|
+
NfBY2ZahFdCQgmF4bijPvL2XePbd6/AXxa+lCGslZKO+GYfMBCu5x/mXjKCb5RCC
|
27
|
+
7oUgyxkqu6FoCoVMInv2JARV1kRqW8bgStbSKh8ImsAZHFW3XphhVeYA22M1pEVG
|
28
|
+
bKC/jK2WFqqPt5sM6XzHCLDZqPVOLFisfovaKRHpOFWDUDIdKqWjCadO4rAYNj7G
|
29
|
+
Z8E/ZH4o9NAZScsj7Adi4ObDBUF09kLqtkGfcfMh5r4d98gMK4pM/J2lmP85SwR0
|
30
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEA2gEIlFT3uCxaeN/P51Pn0xCGqqSvbQ/YBf4ITugnvKWawebl
|
3
|
+
x+8Qk+1BjtvWD7c6DX6Li/Z8DDlmbr2y1djEOH4dswuxrzOccmL5ZJkl6n42pz0z
|
4
|
+
ab13FzFEHG3HmQWthGxxZYHsPL1H+eyKfIS9q2yOne2DwV0NDV+kLA+ORIO7xsrp
|
5
|
+
TvhOmjVr5AHUEzLOtic/HjenpndTbg6eZEuQyi8MfHLl5nURGawA3+++zXx244vr
|
6
|
+
oQZNBCriCCDJcbzwibMm8mGnyhkKLF0Fll+qypQpzJi1Jxu2V5Akfo9V2K3ap1ed
|
7
|
+
6qRb+iC69okhbNbfRjqueOx0QcEl9KCr9KaFuQIDAQABAoIBAQCFRfZ5wAwFAtB4
|
8
|
+
btMJ56ikxsidD7rTIMl+uFNZ8eFBGbina8Hz3Xm0BWp7rHeL+ga6cy9abGBflMPD
|
9
|
+
VaM7yp4Cr072w2Jn6lRtNYajcmDUnz5INUj2Dsb8Xbj27EIGkYsHlsgoNyo1471Z
|
10
|
+
07rB7uCJKP9zGt3eW0V8dIjICuZ9iS31Flgqoqy3Scda0m6Gk+CZI/dhS2J9kFS3
|
11
|
+
e2yJOxNGJbWxd3iojGMmgm59YYG8kiRDRIExv3Zkqncwb67bqru2De/6Q3TrYsnl
|
12
|
+
cEFJ8v+GH4EUeVPCSdfCvusiBeHxVxlFWfQYWdwuce/9Z6KlxccuEXIY7cSemGzI
|
13
|
+
G3nz8MyBAoGBAPoSJlAIwL0Ozrl4rFvbDVcXevd7cAIIAVk8/urykdleW/X3bR/P
|
14
|
+
2endON5DB6J1F7aD5G3RnbgjCgzKYdnZeN8MS/p8OXwV2eIbFb0oKLkCTglO2slW
|
15
|
+
o5CHJZuRDhT8svSO3epyIBZLn+ZXvbaUZJqIhg+qt3gFRb+DVhoUd83RAoGBAN8s
|
16
|
+
P47fQx5kHvtvnCFSCnhSk05OEV2GeA78EkNY1YBv5rfHlqn3rHOuoobpdE33cDPl
|
17
|
+
MuDDuwG4JWpOIS/qtRQ9HoyRBcFMfnTmtBZKNrR8Z0gGHOUZ7uyKTG2Coc8FPNEL
|
18
|
+
mvMkL9LYc0gi0BgfdtgCiXHTm2hISIr0r4toIStpAoGAUPFg/1Tl9gv98+DQgWb0
|
19
|
+
+XS7M7H7vlyS+yyYIrpjZSV6xLHS25IuqdkWWDMAHKCkDUrBvJ412+1TinJTm+0d
|
20
|
+
h6z2RtzAyp5UCTDVJ4YBMGlDkxW4EaV+igCEtscL9NUao7g+sm1AX5cY6bkKyjdc
|
21
|
+
HP0Fz7plam7idavwSb7ITJECgYAgyUNdHfeiU1sp3S+2xXK8UoVJj7aFYufoa6fT
|
22
|
+
NQ3InKfsf+nmdnhjVliSMWHgwmU9eoKK+rZSflcg0vGVNIn9uyztwbBywWYijnIO
|
23
|
+
hECdK1mQ/zTng3PSVE7+F57l5wMUQvw0lDBibWIiStr/cD/pZBYFHu1J2LSvlVrk
|
24
|
+
xBt7YQKBgHfYhl8+KcAdDt1fk0adunwJd8gACzoRCPKh/oxwWSCvOG5R1D/ZUt4w
|
25
|
+
AfPxYGlIPyvtn9ZL1jPdaXqZSRazvMoWFz9CiuZvLPDcJI7o9QFJZDmahzENIqAW
|
26
|
+
vVKX2L6r9O+mLxRBNPfEADgIRjmo0UUtde9SMGfYiYhTfkmDh/vl
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDUjCCAjqgAwIBAgIKQ+POFD6HUJyiwzANBgkqhkiG9w0BAQsFADBXMQswCQYD
|
3
|
+
VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxIzAh
|
4
|
+
BgNVBAMMGnNlcnZlci50ZXN0aW5nLmZsdWVudGQub3JnMB4XDTcwMDEwMTAwMDAw
|
5
|
+
MFoXDTIwMDIyMTA3MTMyOFowVzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYw
|
6
|
+
FAYDVQQHDA1Nb3VudGFpbiBWaWV3MSMwIQYDVQQDDBpzZXJ2ZXIudGVzdGluZy5m
|
7
|
+
bHVlbnRkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKjSUpCB
|
8
|
+
kWzcSyOJel1pwrn8Y6TjpCJlALf4hnBUNyZbwS85uhfEPe+oo7WCmVRnSJr9uaLF
|
9
|
+
HsSEggdnRCEj1T7lhrkLFDMFonlXNe0fnHGTHr4AYbWlv5RLAJj73HmkWjrOEB0e
|
10
|
+
ZJPHWu32CSCl+CaqiATJS1WWRYMm8LH50k7WyQX49UZ/hNmAs5J2znwIBZX+meYB
|
11
|
+
XcD09jWUkzyEO4o284PGlPYmoxbghujRw5ISm+FqjtHWS0yynB+OtVC86kKNCSVw
|
12
|
+
jat96wg0ZR5TPe2/jYrvgjDb9MsH1emMrUWUb4530Czfe3Z5qXxrCmkvmPemNW1z
|
13
|
+
jfUGJLv7EOtwHBECAwEAAaMgMB4wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMC
|
14
|
+
BkAwDQYJKoZIhvcNAQELBQADggEBAD+gVQOuAjhy8rJNRcRXdUQtj6MPaEtm0UlL
|
15
|
+
UvpBhtd/ovw75Uj/2kg7s+piVkKstMJiQDjBask5o7TjFBIwJmhRusmle+A6G5pz
|
16
|
+
lSo9gaBzF1gwzGTTSkGahDRABM/3giqKpPcHDmqbtuB5VCWpw+5ujeZlReXTZurr
|
17
|
+
r4Wuruq7+b2EhB8hRpmQ9TY8QthnJl0ShRo+12OuDn7f4ZkDTorvFg4c7Q4EuwP8
|
18
|
+
m7VU1UJAyrDWlwVHW1YcCvFXWfYqnByuFVlmdPA94NYBfsGOPbQ1tCDbjX8WNRhE
|
19
|
+
cjK/CzOkIYGXDb72xKHYBq6Tf3W7cq2G5sZJQEKynnXRw/3sq54=
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDUzCCAjugAwIBAgILAL/IBPUBfvN0YjkwDQYJKoZIhvcNAQELBQAwVzELMAkG
|
3
|
+
A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MSMw
|
4
|
+
IQYDVQQDDBpzZXJ2ZXIudGVzdGluZy5mbHVlbnRkLm9yZzAeFw03MDAxMDEwMDAw
|
5
|
+
MDBaFw0yMDAyMjEwNzEzMjhaMFcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEW
|
6
|
+
MBQGA1UEBwwNTW91bnRhaW4gVmlldzEjMCEGA1UEAwwac2VydmVyLnRlc3Rpbmcu
|
7
|
+
Zmx1ZW50ZC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaAQiU
|
8
|
+
VPe4LFp438/nU+fTEIaqpK9tD9gF/ghO6Ce8pZrB5uXH7xCT7UGO29YPtzoNfouL
|
9
|
+
9nwMOWZuvbLV2MQ4fh2zC7GvM5xyYvlkmSXqfjanPTNpvXcXMUQcbceZBa2EbHFl
|
10
|
+
gew8vUf57Ip8hL2rbI6d7YPBXQ0NX6QsD45Eg7vGyulO+E6aNWvkAdQTMs62Jz8e
|
11
|
+
N6emd1NuDp5kS5DKLwx8cuXmdREZrADf777NfHbji+uhBk0EKuIIIMlxvPCJsyby
|
12
|
+
YafKGQosXQWWX6rKlCnMmLUnG7ZXkCR+j1XYrdqnV53qpFv6ILr2iSFs1t9GOq54
|
13
|
+
7HRBwSX0oKv0poW5AgMBAAGjIDAeMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQD
|
14
|
+
AgZAMA0GCSqGSIb3DQEBCwUAA4IBAQBNTGk7fRzm/5iUH52xvJWcDk3s2ch/VNUS
|
15
|
+
satPLl/pgc/lPnQzMGZAT++3KRx0TZ3hSiFHvrzOeIQW7uUpGoM4/URtXtdD/Zwh
|
16
|
+
2U5p+kc63az8gkfos8S3zKu2m5qY+c8Z+c9UCqfAEq58byY64yGclxU3I1MKyJiK
|
17
|
+
bETvNLJDMT2SXxLoWLKk87ezlN0mkwhs9rhOwTp5OPxvTi1Y/afOX3V/lhnw24gX
|
18
|
+
0mauGW7aaY7MFqolZOO3mTMhIDvMZVCCSjPBULB4OcpF8dpfpM0OvdPnGgiK8Cz3
|
19
|
+
Lm8burtm57n3nme/hX/8qLIDs91HCrPP1R/jEbugapHJ3f6JRdTJ
|
20
|
+
-----END CERTIFICATE-----
|
@@ -5,18 +5,24 @@ require 'fluent/plugin/output'
|
|
5
5
|
require 'fluent/event'
|
6
6
|
require 'net/http'
|
7
7
|
require 'uri'
|
8
|
+
require 'openssl'
|
9
|
+
require 'async'
|
8
10
|
|
9
11
|
class HtttpHelperTest < Test::Unit::TestCase
|
10
12
|
PORT = unused_port
|
11
13
|
NULL_LOGGER = Logger.new(nil)
|
14
|
+
CERT_DIR = File.expand_path(File.dirname(__FILE__) + '/data/cert/without_ca')
|
15
|
+
CERT_CA_DIR = File.expand_path(File.dirname(__FILE__) + '/data/cert/with_ca')
|
12
16
|
|
13
17
|
class Dummy < Fluent::Plugin::TestBase
|
14
18
|
helpers :http_server
|
15
19
|
end
|
16
20
|
|
17
|
-
def on_driver
|
21
|
+
def on_driver(config = nil)
|
22
|
+
config ||= Fluent::Config.parse(config || '', '(name)', '')
|
18
23
|
Fluent::Test.setup
|
19
24
|
driver = Dummy.new
|
25
|
+
driver.configure(config)
|
20
26
|
driver.start
|
21
27
|
driver.after_start
|
22
28
|
|
@@ -47,6 +53,12 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
47
53
|
end
|
48
54
|
end
|
49
55
|
|
56
|
+
def on_driver_transport(opts = {}, &block)
|
57
|
+
transport_conf = config_element('transport', 'tls', opts)
|
58
|
+
c = config_element('ROOT', '', {}, [transport_conf])
|
59
|
+
on_driver(c, &block)
|
60
|
+
end
|
61
|
+
|
50
62
|
%w[get head].each do |n|
|
51
63
|
define_method(n) do |uri, header = {}|
|
52
64
|
url = URI.parse(uri)
|
@@ -56,6 +68,14 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
56
68
|
http.request(req)
|
57
69
|
end
|
58
70
|
end
|
71
|
+
|
72
|
+
define_method("secure_#{n}") do |uri, header = {}, verify: true, cert_path: nil, selfsigned: true, hostname: false|
|
73
|
+
url = URI.parse(uri)
|
74
|
+
headers = { 'Content-Type' => 'application/x-www-form-urlencoded/' }.merge(header)
|
75
|
+
start_https_request(url.host, url.port, verify: verify, cert_path: cert_path, selfsigned: selfsigned) do |https|
|
76
|
+
https.send(n, url.path, headers.to_a)
|
77
|
+
end
|
78
|
+
end
|
59
79
|
end
|
60
80
|
|
61
81
|
%w[post put patch delete options trace].each do |n|
|
@@ -70,10 +90,62 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
70
90
|
end
|
71
91
|
end
|
72
92
|
|
93
|
+
# wrapper for net/http
|
94
|
+
Response = Struct.new(:code, :body, :headers)
|
95
|
+
|
96
|
+
# Use async-http as http client since net/http can't be set verify_hostname= now
|
97
|
+
# will be replaced when net/http supports verify_hostname=
|
98
|
+
def start_https_request(addr, port, verify: true, cert_path: nil, selfsigned: true, hostname: nil)
|
99
|
+
context = OpenSSL::SSL::SSLContext.new
|
100
|
+
context.set_params({})
|
101
|
+
if verify
|
102
|
+
cert_store = OpenSSL::X509::Store.new
|
103
|
+
cert_store.set_default_paths
|
104
|
+
if selfsigned && OpenSSL::X509.const_defined?('V_FLAG_CHECK_SS_SIGNATURE')
|
105
|
+
cert_store.flags = OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE
|
106
|
+
end
|
107
|
+
|
108
|
+
if cert_path
|
109
|
+
cert_store.add_file(cert_path)
|
110
|
+
end
|
111
|
+
|
112
|
+
context.cert_store = cert_store
|
113
|
+
if !hostname && context.respond_to?(:verify_hostname=)
|
114
|
+
context.verify_hostname = false # In test code, using hostname to be connected is very difficult
|
115
|
+
end
|
116
|
+
|
117
|
+
context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
118
|
+
else
|
119
|
+
context.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
120
|
+
end
|
121
|
+
|
122
|
+
client = Async::HTTP::Client.new(Async::HTTP::Endpoint.parse("https://#{addr}:#{port}", ssl_context: context))
|
123
|
+
reactor = Async::Reactor.new(nil, logger: NULL_LOGGER)
|
124
|
+
|
125
|
+
resp = nil
|
126
|
+
error = nil
|
127
|
+
|
128
|
+
reactor.run do
|
129
|
+
begin
|
130
|
+
response = yield(client)
|
131
|
+
rescue => e # Async::Reactor rescue all error. handle it by myself
|
132
|
+
error = e
|
133
|
+
end
|
134
|
+
|
135
|
+
resp = Response.new(response.status.to_s, response.body.read, response.headers)
|
136
|
+
end
|
137
|
+
|
138
|
+
if error
|
139
|
+
raise error
|
140
|
+
else
|
141
|
+
resp
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
73
145
|
sub_test_case 'Create a HTTP server' do
|
74
146
|
test 'monunt given path' do
|
75
147
|
on_driver do |driver|
|
76
|
-
driver.
|
148
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
77
149
|
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
78
150
|
s.post('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello post'] }
|
79
151
|
s.head('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello head'] }
|
@@ -108,7 +180,7 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
108
180
|
|
109
181
|
test 'when path does not start with `/` or ends with `/`' do
|
110
182
|
on_driver do |driver|
|
111
|
-
driver.
|
183
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
112
184
|
s.get('example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
113
185
|
s.get('/example/hello2/') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
114
186
|
end
|
@@ -123,7 +195,7 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
123
195
|
|
124
196
|
test 'when error raised' do
|
125
197
|
on_driver do |driver|
|
126
|
-
driver.
|
198
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
127
199
|
s.get('/example/hello') { raise 'error!' }
|
128
200
|
end
|
129
201
|
|
@@ -134,7 +206,7 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
134
206
|
|
135
207
|
test 'when path is not found' do
|
136
208
|
on_driver do |driver|
|
137
|
-
driver.
|
209
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
138
210
|
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
139
211
|
end
|
140
212
|
|
@@ -145,7 +217,7 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
145
217
|
|
146
218
|
test 'params and body' do
|
147
219
|
on_driver do |driver|
|
148
|
-
driver.
|
220
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
149
221
|
s.get('/example/hello') do |req|
|
150
222
|
assert_equal(req.query_string, nil)
|
151
223
|
assert_equal(req.body, nil)
|
@@ -185,6 +257,95 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
185
257
|
end
|
186
258
|
end
|
187
259
|
|
260
|
+
sub_test_case 'create a HTTPS server' do
|
261
|
+
test '#configure' do
|
262
|
+
driver = Dummy.new
|
263
|
+
|
264
|
+
transport_conf = config_element('transport', 'tls', { 'version' => 'TLSv1_1' })
|
265
|
+
driver.configure(config_element('ROOT', '', {}, [transport_conf]))
|
266
|
+
assert_equal :tls, driver.transport_config.protocol
|
267
|
+
assert_equal :TLSv1_1, driver.transport_config.version
|
268
|
+
end
|
269
|
+
|
270
|
+
sub_test_case '#http_server_create_https_server' do
|
271
|
+
test 'can overwrite settings by using tls_context' do
|
272
|
+
on_driver_transport({ 'insecure' => 'false' }) do |driver|
|
273
|
+
tls = { 'insecure' => 'true' } # overwrite
|
274
|
+
driver.http_server_create_https_server(:http_server_helper_test_tls, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER, tls_opts: tls) do |s|
|
275
|
+
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
276
|
+
end
|
277
|
+
|
278
|
+
resp = secure_get("https://127.0.0.1:#{PORT}/example/hello", verify: false)
|
279
|
+
assert_equal('200', resp.code)
|
280
|
+
assert_equal('hello get', resp.body)
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
test 'with insecure in transport section' do
|
285
|
+
on_driver_transport({ 'insecure' => 'true' }) do |driver|
|
286
|
+
driver.http_server_create_https_server(:http_server_helper_test_tls, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
287
|
+
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
288
|
+
end
|
289
|
+
|
290
|
+
resp = secure_get("https://127.0.0.1:#{PORT}/example/hello", verify: false)
|
291
|
+
assert_equal('200', resp.code)
|
292
|
+
assert_equal('hello get', resp.body)
|
293
|
+
|
294
|
+
assert_raise OpenSSL::SSL::SSLError do
|
295
|
+
secure_get("https://127.0.0.1:#{PORT}/example/hello")
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
data(
|
301
|
+
'with passphrase' => ['apple', 'cert-pass.pem', 'cert-key-pass.pem'],
|
302
|
+
'without passphrase' => [nil, 'cert.pem', 'cert-key.pem'])
|
303
|
+
test 'load self-signed cert/key pair, verified from clients using cert files' do |(passphrase, cert, private_key)|
|
304
|
+
cert_path = File.join(CERT_DIR, cert)
|
305
|
+
private_key_path = File.join(CERT_DIR, private_key)
|
306
|
+
opt = { 'insecure' => 'false', 'private_key_path' => private_key_path, 'cert_path' => cert_path }
|
307
|
+
if passphrase
|
308
|
+
opt['private_key_passphrase'] = passphrase
|
309
|
+
end
|
310
|
+
|
311
|
+
on_driver_transport(opt) do |driver|
|
312
|
+
driver.http_server_create_https_server(:http_server_helper_test_tls, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
313
|
+
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
314
|
+
end
|
315
|
+
|
316
|
+
resp = secure_get("https://127.0.0.1:#{PORT}/example/hello", cert_path: cert_path)
|
317
|
+
assert_equal('200', resp.code)
|
318
|
+
assert_equal('hello get', resp.body)
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
data(
|
323
|
+
'with passphrase' => ['apple', 'cert-pass.pem', 'cert-key-pass.pem', 'ca-cert-pass.pem'],
|
324
|
+
'without passphrase' => [nil, 'cert.pem', 'cert-key.pem', 'ca-cert.pem'])
|
325
|
+
test 'load cert by private CA cert file, verified from clients using CA cert file' do |(passphrase, cert, cert_key, ca_cert)|
|
326
|
+
cert_path = File.join(CERT_CA_DIR, cert)
|
327
|
+
private_key_path = File.join(CERT_CA_DIR, cert_key)
|
328
|
+
|
329
|
+
ca_cert_path = File.join(CERT_CA_DIR, ca_cert)
|
330
|
+
|
331
|
+
opt = { 'insecure' => 'false', 'cert_path' => cert_path, 'private_key_path' => private_key_path }
|
332
|
+
if passphrase
|
333
|
+
opt['private_key_passphrase'] = passphrase
|
334
|
+
end
|
335
|
+
|
336
|
+
on_driver_transport(opt) do |driver|
|
337
|
+
driver.http_server_create_https_server(:http_server_helper_test_tls, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
338
|
+
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
339
|
+
end
|
340
|
+
|
341
|
+
resp = secure_get("https://127.0.0.1:#{PORT}/example/hello", cert_path: ca_cert_path)
|
342
|
+
assert_equal('200', resp.code)
|
343
|
+
assert_equal('hello get', resp.body)
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
188
349
|
test 'must be called #start and #stop' do
|
189
350
|
on_driver do |driver|
|
190
351
|
server = flexmock('Server') do |watcher|
|
@@ -195,7 +356,7 @@ class HtttpHelperTest < Test::Unit::TestCase
|
|
195
356
|
end
|
196
357
|
|
197
358
|
stub(Fluent::PluginHelper::HttpServer::Server).new(anything) { server }
|
198
|
-
driver.
|
359
|
+
driver.http_server_create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do
|
199
360
|
# nothing
|
200
361
|
end
|
201
362
|
driver.stop
|