puma-simon 3.7.1
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.
- checksums.yaml +7 -0
- data/.github/issue_template.md +20 -0
- data/.gitignore +18 -0
- data/.hoeignore +12 -0
- data/.travis.yml +29 -0
- data/DEPLOYMENT.md +91 -0
- data/Gemfile +12 -0
- data/History.md +1254 -0
- data/LICENSE +26 -0
- data/Manifest.txt +78 -0
- data/README.md +353 -0
- data/Rakefile +158 -0
- data/Release.md +9 -0
- data/bin/puma +10 -0
- data/bin/puma-wild +31 -0
- data/bin/pumactl +12 -0
- data/docs/nginx.md +80 -0
- data/docs/signals.md +43 -0
- data/docs/systemd.md +197 -0
- data/examples/CA/cacert.pem +23 -0
- data/examples/CA/newcerts/cert_1.pem +19 -0
- data/examples/CA/newcerts/cert_2.pem +19 -0
- data/examples/CA/private/cakeypair.pem +30 -0
- data/examples/CA/serial +1 -0
- data/examples/config.rb +200 -0
- data/examples/plugins/redis_stop_puma.rb +46 -0
- data/examples/puma/cert_puma.pem +19 -0
- data/examples/puma/client-certs/ca.crt +19 -0
- data/examples/puma/client-certs/ca.key +27 -0
- data/examples/puma/client-certs/client.crt +19 -0
- data/examples/puma/client-certs/client.key +27 -0
- data/examples/puma/client-certs/client_expired.crt +19 -0
- data/examples/puma/client-certs/client_expired.key +27 -0
- data/examples/puma/client-certs/client_unknown.crt +19 -0
- data/examples/puma/client-certs/client_unknown.key +27 -0
- data/examples/puma/client-certs/generate.rb +78 -0
- data/examples/puma/client-certs/keystore.jks +0 -0
- data/examples/puma/client-certs/server.crt +19 -0
- data/examples/puma/client-certs/server.key +27 -0
- data/examples/puma/client-certs/server.p12 +0 -0
- data/examples/puma/client-certs/unknown_ca.crt +19 -0
- data/examples/puma/client-certs/unknown_ca.key +27 -0
- data/examples/puma/csr_puma.pem +11 -0
- data/examples/puma/keystore.jks +0 -0
- data/examples/puma/puma_keypair.pem +15 -0
- data/examples/qc_config.rb +13 -0
- data/ext/puma_http11/PumaHttp11Service.java +17 -0
- data/ext/puma_http11/ext_help.h +15 -0
- data/ext/puma_http11/extconf.rb +15 -0
- data/ext/puma_http11/http11_parser.c +1069 -0
- data/ext/puma_http11/http11_parser.h +65 -0
- data/ext/puma_http11/http11_parser.java.rl +161 -0
- data/ext/puma_http11/http11_parser.rl +147 -0
- data/ext/puma_http11/http11_parser_common.rl +54 -0
- data/ext/puma_http11/io_buffer.c +155 -0
- data/ext/puma_http11/mini_ssl.c +457 -0
- data/ext/puma_http11/org/jruby/puma/Http11.java +234 -0
- data/ext/puma_http11/org/jruby/puma/Http11Parser.java +473 -0
- data/ext/puma_http11/org/jruby/puma/MiniSSL.java +339 -0
- data/ext/puma_http11/puma_http11.c +500 -0
- data/gemfiles/2.1-Gemfile +12 -0
- data/lib/puma.rb +15 -0
- data/lib/puma/accept_nonblock.rb +23 -0
- data/lib/puma/app/status.rb +66 -0
- data/lib/puma/binder.rb +402 -0
- data/lib/puma/cli.rb +220 -0
- data/lib/puma/client.rb +434 -0
- data/lib/puma/cluster.rb +510 -0
- data/lib/puma/commonlogger.rb +106 -0
- data/lib/puma/compat.rb +14 -0
- data/lib/puma/configuration.rb +364 -0
- data/lib/puma/const.rb +224 -0
- data/lib/puma/control_cli.rb +259 -0
- data/lib/puma/convenient.rb +23 -0
- data/lib/puma/daemon_ext.rb +31 -0
- data/lib/puma/delegation.rb +11 -0
- data/lib/puma/detect.rb +13 -0
- data/lib/puma/dsl.rb +486 -0
- data/lib/puma/events.rb +152 -0
- data/lib/puma/io_buffer.rb +7 -0
- data/lib/puma/java_io_buffer.rb +45 -0
- data/lib/puma/jruby_restart.rb +83 -0
- data/lib/puma/launcher.rb +410 -0
- data/lib/puma/minissl.rb +221 -0
- data/lib/puma/null_io.rb +42 -0
- data/lib/puma/plugin.rb +115 -0
- data/lib/puma/plugin/tmp_restart.rb +35 -0
- data/lib/puma/rack/backports/uri/common_193.rb +33 -0
- data/lib/puma/rack/builder.rb +298 -0
- data/lib/puma/rack/urlmap.rb +91 -0
- data/lib/puma/rack_default.rb +7 -0
- data/lib/puma/reactor.rb +210 -0
- data/lib/puma/runner.rb +171 -0
- data/lib/puma/server.rb +949 -0
- data/lib/puma/single.rb +112 -0
- data/lib/puma/state_file.rb +29 -0
- data/lib/puma/tcp_logger.rb +39 -0
- data/lib/puma/thread_pool.rb +297 -0
- data/lib/puma/util.rb +128 -0
- data/lib/rack/handler/puma.rb +78 -0
- data/puma.gemspec +52 -0
- data/test/ab_rs.rb +22 -0
- data/test/config.rb +2 -0
- data/test/config/app.rb +9 -0
- data/test/config/plugin.rb +1 -0
- data/test/config/settings.rb +2 -0
- data/test/config/state_file_testing_config.rb +14 -0
- data/test/hello-bind.ru +2 -0
- data/test/hello-delay.ru +3 -0
- data/test/hello-map.ru +3 -0
- data/test/hello-post.ru +4 -0
- data/test/hello-stuck.ru +1 -0
- data/test/hello-tcp.ru +5 -0
- data/test/hello.ru +1 -0
- data/test/hijack.ru +6 -0
- data/test/hijack2.ru +5 -0
- data/test/lobster.ru +4 -0
- data/test/shell/run.sh +24 -0
- data/test/shell/t1.rb +19 -0
- data/test/shell/t1_conf.rb +3 -0
- data/test/shell/t2.rb +17 -0
- data/test/shell/t2_conf.rb +6 -0
- data/test/shell/t3.rb +25 -0
- data/test/shell/t3_conf.rb +5 -0
- data/test/slow.ru +4 -0
- data/test/ssl_config.rb +4 -0
- data/test/test_app_status.rb +93 -0
- data/test/test_binder.rb +31 -0
- data/test/test_cli.rb +209 -0
- data/test/test_config.rb +95 -0
- data/test/test_events.rb +161 -0
- data/test/test_helper.rb +50 -0
- data/test/test_http10.rb +27 -0
- data/test/test_http11.rb +186 -0
- data/test/test_integration.rb +247 -0
- data/test/test_iobuffer.rb +39 -0
- data/test/test_minissl.rb +29 -0
- data/test/test_null_io.rb +49 -0
- data/test/test_persistent.rb +245 -0
- data/test/test_puma_server.rb +626 -0
- data/test/test_puma_server_ssl.rb +222 -0
- data/test/test_rack_handler.rb +57 -0
- data/test/test_rack_server.rb +138 -0
- data/test/test_tcp_logger.rb +39 -0
- data/test/test_tcp_rack.rb +36 -0
- data/test/test_thread_pool.rb +250 -0
- data/test/test_unix_socket.rb +35 -0
- data/test/test_web_server.rb +88 -0
- data/tools/jungle/README.md +9 -0
- data/tools/jungle/init.d/README.md +59 -0
- data/tools/jungle/init.d/puma +421 -0
- data/tools/jungle/init.d/run-puma +18 -0
- data/tools/jungle/upstart/README.md +61 -0
- data/tools/jungle/upstart/puma-manager.conf +31 -0
- data/tools/jungle/upstart/puma.conf +69 -0
- data/tools/trickletest.rb +45 -0
- metadata +297 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDxzCCAq+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJVUzEO
|
|
3
|
+
MAwGA1UECgwFbG9jYWwxDTALBgNVBAsMBGFlcm8xCzAJBgNVBAMMAkNBMB4XDTEy
|
|
4
|
+
MDExNDAwMTcyN1oXDTE3MDExMjAwMTcyN1owOTELMAkGA1UEBhMCVVMxDjAMBgNV
|
|
5
|
+
BAoMBWxvY2FsMQ0wCwYDVQQLDARhZXJvMQswCQYDVQQDDAJDQTCCASIwDQYJKoZI
|
|
6
|
+
hvcNAQEBBQADggEPADCCAQoCggEBAN8bteVsrQxfKHzYuwP1vjH2r6qavPK/agCK
|
|
7
|
+
bbPXZmWfUUGjL4ZT4jmnz/B6QNBBKTE/zWcuLXvyRR2FUCi8c5itUvraJVIuBPT/
|
|
8
|
+
lvAZfbyIMpdHG1RPwA6jgTTXm7hnfZc0lCzsFRLk106XrjKeIkZOWffnVLNS2dyH
|
|
9
|
+
X51/yZAS8wFyfx58gabC3hvzJLWw/fDSB/qQsOjp5XCCrP30ILPads/P2dEFNZ1M
|
|
10
|
+
bjGNErVjmEWEorbUsh6Gu3OyElicVf9hgHspFYNwl1rc5IX7Z5eQM9Yd/Lm1mlvU
|
|
11
|
+
iM839ZPn2UOtS9EDdeeZImTSALSUoFJjMdt8+synSDUuGPczUzECAwEAAaOB2TCB
|
|
12
|
+
1jAPBgNVHRMBAf8EBTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wg
|
|
13
|
+
R2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBReztszntEK4mwESl/gPjc8
|
|
14
|
+
VKU2ljAOBgNVHQ8BAf8EBAMCAQYwYQYDVR0jBFowWIAUXs7bM57RCuJsBEpf4D43
|
|
15
|
+
PFSlNpahPaQ7MDkxCzAJBgNVBAYTAlVTMQ4wDAYDVQQKDAVsb2NhbDENMAsGA1UE
|
|
16
|
+
CwwEYWVybzELMAkGA1UEAwwCQ0GCAQAwDQYJKoZIhvcNAQEFBQADggEBABC6pRY+
|
|
17
|
+
c+MKGG6hWv9FKTW5drw/9bfKxl+dVcKPP5YWuoAMtStkCVnDleQ7K2oN4o7kwr7Q
|
|
18
|
+
cU3mmYJZjqRu43JBebzupBGKqe/mNWGN0EuCMT7khFEXbO3bwpcL0fhCO7+RZccx
|
|
19
|
+
GF/LKglLgQSE+/SKOHlHdJZlS3EgPghrtoSiptx9ytXzkgCoEKypbAEmcArWvzzF
|
|
20
|
+
81ZYjkLAwCrrB/qNAKnI0AKXMCiqnZu+8a16p5z+HGCjpTLB3NQ3YlyFF0jbr/ow
|
|
21
|
+
R1Fb07t0uO2o22nuua+iK8lKqWLE6eQUIu/YB6DMEgjk+D6of+WQ+38GC35QyPKA
|
|
22
|
+
9nQ8kMf2RkiGN6M=
|
|
23
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIC/jCCAeagAwIBAgIBATANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJVUzEO
|
|
3
|
+
MAwGA1UECgwFbG9jYWwxDTALBgNVBAsMBGFlcm8xCzAJBgNVBAMMAkNBMB4XDTEy
|
|
4
|
+
MDExNDAwMTcyN1oXDTEzMDExMzAwMTcyN1owSDELMAkGA1UEBhMCVVMxDjAMBgNV
|
|
5
|
+
BAoMBWxvY2FsMQ0wCwYDVQQLDARhZXJvMQswCQYDVQQLDAJDQTENMAsGA1UEAwwE
|
|
6
|
+
cHVtYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxkKjXHIYV4CVFB4YZuVk
|
|
7
|
+
sXqdb7X9+igKPSkxFZoyjwW+AGiN27OwTvETLQiPMaB1WiJtDF9NEmlwYXl4dHWz
|
|
8
|
+
5QPVJtQ5ud7FdCJWBUc+K6LS4xwixwis/FNZVfVcyxkR+cm7mVwxwrxle1lJasoJ
|
|
9
|
+
ouqtVePdt+j+9hcJfLIaZD8CAwEAAaOBhTCBgjAMBgNVHRMBAf8EAjAAMDEGCWCG
|
|
10
|
+
SAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G
|
|
11
|
+
A1UdDgQWBBQDrltCvbaqNl/TvFNb/NEIEnbJ2jALBgNVHQ8EBAMCBaAwEwYDVR0l
|
|
12
|
+
BAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAF8xrbIbIz7YW6ydjM6g
|
|
13
|
+
gesu8T6q5RcJo9k2CWhd4RgJdfVJSZbCtAAMoRQTErX9Ng6afdlMWD1KnCfbP0IJ
|
|
14
|
+
dq+Umh1BMfzhpYR35NPO/RZPR7Et0OMmmWCbwJBzgI6z8R8qiSuR/to6C7BjiWzo
|
|
15
|
+
rp7S2fenkB6DfzZvHvIDojQ0OpnD2oYBOn/UyAma4I7XzXWe9IIUMARjS5CYZsv9
|
|
16
|
+
HBU3B+e5F9ANi3lRc7x5jIAqVt292HaH+c1UCn0/r/73cW1Z/iNYA9PgS2QKdmYq
|
|
17
|
+
b3oQRFk0wM5stNVsrn7xGftmOETv8pD6r4P8jyw7Ib+ypr10WrFOm7uOscPS4QE2
|
|
18
|
+
Mf0=
|
|
19
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIC/jCCAeagAwIBAgIBAjANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJVUzEO
|
|
3
|
+
MAwGA1UECgwFbG9jYWwxDTALBgNVBAsMBGFlcm8xCzAJBgNVBAMMAkNBMB4XDTEy
|
|
4
|
+
MDExNDAwMjcyN1oXDTEzMDExMzAwMjcyN1owSDELMAkGA1UEBhMCVVMxDjAMBgNV
|
|
5
|
+
BAoMBWxvY2FsMQ0wCwYDVQQLDARhZXJvMQswCQYDVQQLDAJDQTENMAsGA1UEAwwE
|
|
6
|
+
cHVtYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArxfNMp+g/pKhsDEkB3KR
|
|
7
|
+
1MAkbfnN/UKMvfXwlnXpz7YX1LHHnMutiI/PqymAp6BPcu+umuW2qMHQyqqtyATm
|
|
8
|
+
Z9jr3t837nhmxwG1noRaKRtsckn9FD43ZlpPg0Q5QnhS4oOsXwJzilqPjdDFYrKN
|
|
9
|
+
3TSvIGM2+hVqpVoGYAHDKbMCAwEAAaOBhTCBgjAMBgNVHRMBAf8EAjAAMDEGCWCG
|
|
10
|
+
SAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G
|
|
11
|
+
A1UdDgQWBBTyDyJlmYBDwfWdRj6lWGvoY43k9DALBgNVHQ8EBAMCBaAwEwYDVR0l
|
|
12
|
+
BAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAIbBVfoVCG8RyVesPW+q
|
|
13
|
+
5i0wAMbHZ1fwv1RKp17c68DYDs0YYPi0bA0ss8AgpU6thWmskxPiFaE6D5x8iv9f
|
|
14
|
+
zkcHxgr1Mrbx6RLx9tLUVehSmRv3aiVO4k9Mp6vf+rJK1AYeaGBmvoqTBLwy7Jrt
|
|
15
|
+
ytKMdqMJj5jKWkWgEGgTnjzbcOClmCQab9isigIzTxMyC/LjeKZe8pPeVX6OM8bY
|
|
16
|
+
y8XGZp9B7uwdPzqt/g25IzTC0KsQwq8cB0raAtZzIyTNv42zcUjmQNVazAozCTcq
|
|
17
|
+
MsEtK2z7TYBC3udTsdyS2qVqCpsk7IMOBGrw8vk4SNhO+coiDObW2K/HNvhl0tZC
|
|
18
|
+
oQI=
|
|
19
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
|
3
|
+
DEK-Info: DES-EDE3-CBC,8FE374A296255ED1
|
|
4
|
+
|
|
5
|
+
g6YSW6TUA/9dSscxCWPm11bG6DedWJ6fanU6V7O2n9WbGOLE0ogz877D/5gPr94+
|
|
6
|
+
WJHnCb0O4gyKQA307XA9nq+HAPTyJFKroEz1CPXVrITV8AO+vJ/PUc1y1LQ1ymMk
|
|
7
|
+
fcvI3ZNdbDBr7OL7luYch7qoVULJ4kwJTU7WT9XzINiSnS3Ccqh6ZEPFyKIcxP2s
|
|
8
|
+
11WkpxdDJ911nCXVUoa9Hd5tQk7mHZuf7XL01up08SDobx/imaU9VN8QQG6AFE55
|
|
9
|
+
jVtfv7MxP+9gHmHQxuhYuDMnu5GIwuJPFHvI7Gi9jcwvee/GhcKBnKdpFc92fJJ8
|
|
10
|
+
+TIqR2D21EHDBoep1fMGgbPOl+9z1hdE78Sj6tHwjeRF93mhJWyYNQWQ5ViKLnoF
|
|
11
|
+
j11idWOXwkOCFttRBMd74QG6GyxTvs8FNDOXmm361Muk94a4fbKRJvKvYZlBnYKu
|
|
12
|
+
fOmJNFf2zEVVHjBCbvM4swAT09cWLxRMRTiFb5y7QAEmtFO4WLavlmnNCdMq/uC4
|
|
13
|
+
CpFqGtoiaCimunjTfvkBaJngSfTYSrd4cStnx/c0XK++dni+bLXUHOyMxvihl5vn
|
|
14
|
+
SiFlzWTmoWf1gxNZgOSKY432R6T1CQXfnAd3x/FCJjfPqFt+RAFXjlVFNA0FZyVE
|
|
15
|
+
sCxhVx1eZsr7aMJ5H9RehUr6b9swUEm4UGX5H3/GG7GNCZU+fA+Wfi9cl1zqJFey
|
|
16
|
+
Ho5UjjmRgdV1qapioqCd+Ce/mG0LxRPt/hYdA6G5h4zheRc3KZ7YbIwWRwlkm2w5
|
|
17
|
+
is4ToZKwheycaaQnUfOdHUTtZ4Kv0kRof+LMcDUDTrsydWF4T4xGxGD7/CVJkH1G
|
|
18
|
+
5OTVsfv6Tw7kEMYaXYBQPs0u3GSxY3CZ+k5wATr9PBBYcArSkt5WNQYCJfO/MnWF
|
|
19
|
+
z/31hp/ziCIoesgo6uZMO4Dr5Pka54nc4O4KOblvUUMX07WkYGrc4nxBGvhQ5Jl4
|
|
20
|
+
A8dJBPCK3OlsVCnHYrDQ0cemhLOYPuiyKTtCUIs2nHuiM4RwoCRJgsVBUnKK+tTx
|
|
21
|
+
AkM9uQvYsrZ/DoBooBdXJQy3uiHH86zEskiy72H8Wgcu8GbLt2JgCyhXkwDzrIRf
|
|
22
|
+
hnAN4FS2VNOt5dDTVHBWG1vIxxlM2+LrYpY/QqihNgotZ+C4VWHkoDwbF478JgxM
|
|
23
|
+
5Yk+0X9kGvLQbZCJFXdAKAyr/AzRH+Hx1cDvSi7gypf8qOEZwD1rq7f0qw8jnqfG
|
|
24
|
+
3QIFoN1/+xTAV8lTlGhvbQYz1XHVBH9l7TSQDLIrnwHTIv+PdZbTveGftCCnLdDo
|
|
25
|
+
wBLBnw4mKVCtnHrEgXMQF62yuwueQ8zhdh8jf3osYV/COlRZwQQGgZtnQCeeyDIh
|
|
26
|
+
8GJR9b4uv22QDNv7J2vcqTEWJdnpAZvIBFGuCBCAgev+URLGW2ELXfWQwNgc5+yP
|
|
27
|
+
nGRXo+IwD1uhvEqtuin+cAn/sJhOa66g0ZcV/3AcrdQhbicn12YM71cMvA/XRKf5
|
|
28
|
+
rpo8bAEwDqyoFoywH4IHM3HNV45rS+brskz6tZC5ELondCPVmUqgVu7ELHlJfPXx
|
|
29
|
+
RbzbMPJEGr8WjWUiTDhrD2vWgoJ6NRKkDAUYm6KQb8Sbajd2JAAlYntLz5jKqNqN
|
|
30
|
+
-----END RSA PRIVATE KEY-----
|
data/examples/CA/serial
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0003
|
data/examples/config.rb
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env puma
|
|
2
|
+
|
|
3
|
+
# The directory to operate out of.
|
|
4
|
+
#
|
|
5
|
+
# The default is the current directory.
|
|
6
|
+
#
|
|
7
|
+
# directory '/u/apps/lolcat'
|
|
8
|
+
|
|
9
|
+
# Use an object or block as the rack application. This allows the
|
|
10
|
+
# config file to be the application itself.
|
|
11
|
+
#
|
|
12
|
+
# app do |env|
|
|
13
|
+
# puts env
|
|
14
|
+
#
|
|
15
|
+
# body = 'Hello, World!'
|
|
16
|
+
#
|
|
17
|
+
# [200, { 'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s }, [body]]
|
|
18
|
+
# end
|
|
19
|
+
|
|
20
|
+
# Load "path" as a rackup file.
|
|
21
|
+
#
|
|
22
|
+
# The default is "config.ru".
|
|
23
|
+
#
|
|
24
|
+
# rackup '/u/apps/lolcat/config.ru'
|
|
25
|
+
|
|
26
|
+
# Set the environment in which the rack's app will run. The value must be a string.
|
|
27
|
+
#
|
|
28
|
+
# The default is "development".
|
|
29
|
+
#
|
|
30
|
+
# environment 'production'
|
|
31
|
+
|
|
32
|
+
# Daemonize the server into the background. Highly suggest that
|
|
33
|
+
# this be combined with "pidfile" and "stdout_redirect".
|
|
34
|
+
#
|
|
35
|
+
# The default is "false".
|
|
36
|
+
#
|
|
37
|
+
# daemonize
|
|
38
|
+
# daemonize false
|
|
39
|
+
|
|
40
|
+
# Store the pid of the server in the file at "path".
|
|
41
|
+
#
|
|
42
|
+
# pidfile '/u/apps/lolcat/tmp/pids/puma.pid'
|
|
43
|
+
|
|
44
|
+
# Use "path" as the file to store the server info state. This is
|
|
45
|
+
# used by "pumactl" to query and control the server.
|
|
46
|
+
#
|
|
47
|
+
# state_path '/u/apps/lolcat/tmp/pids/puma.state'
|
|
48
|
+
|
|
49
|
+
# Redirect STDOUT and STDERR to files specified. The 3rd parameter
|
|
50
|
+
# ("append") specifies whether the output is appended, the default is
|
|
51
|
+
# "false".
|
|
52
|
+
#
|
|
53
|
+
# stdout_redirect '/u/apps/lolcat/log/stdout', '/u/apps/lolcat/log/stderr'
|
|
54
|
+
# stdout_redirect '/u/apps/lolcat/log/stdout', '/u/apps/lolcat/log/stderr', true
|
|
55
|
+
|
|
56
|
+
# Disable request logging.
|
|
57
|
+
#
|
|
58
|
+
# The default is "false".
|
|
59
|
+
#
|
|
60
|
+
# quiet
|
|
61
|
+
|
|
62
|
+
# Configure "min" to be the minimum number of threads to use to answer
|
|
63
|
+
# requests and "max" the maximum.
|
|
64
|
+
#
|
|
65
|
+
# The default is "0, 16".
|
|
66
|
+
#
|
|
67
|
+
# threads 0, 16
|
|
68
|
+
|
|
69
|
+
# Bind the server to "url". "tcp://", "unix://" and "ssl://" are the only
|
|
70
|
+
# accepted protocols.
|
|
71
|
+
#
|
|
72
|
+
# The default is "tcp://0.0.0.0:9292".
|
|
73
|
+
#
|
|
74
|
+
# bind 'tcp://0.0.0.0:9292'
|
|
75
|
+
# bind 'unix:///var/run/puma.sock'
|
|
76
|
+
# bind 'unix:///var/run/puma.sock?umask=0111'
|
|
77
|
+
# bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'
|
|
78
|
+
|
|
79
|
+
# Instead of "bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'" you
|
|
80
|
+
# can also use the "ssl_bind" option.
|
|
81
|
+
#
|
|
82
|
+
# ssl_bind '127.0.0.1', '9292', {
|
|
83
|
+
# key: path_to_key,
|
|
84
|
+
# cert: path_to_cert
|
|
85
|
+
# }
|
|
86
|
+
# for JRuby additional keys are required:
|
|
87
|
+
# keystore: path_to_keystore,
|
|
88
|
+
# keystore_pass: password
|
|
89
|
+
|
|
90
|
+
# Code to run before doing a restart. This code should
|
|
91
|
+
# close log files, database connections, etc.
|
|
92
|
+
#
|
|
93
|
+
# This can be called multiple times to add code each time.
|
|
94
|
+
#
|
|
95
|
+
# on_restart do
|
|
96
|
+
# puts 'On restart...'
|
|
97
|
+
# end
|
|
98
|
+
|
|
99
|
+
# Command to use to restart puma. This should be just how to
|
|
100
|
+
# load puma itself (ie. 'ruby -Ilib bin/puma'), not the arguments
|
|
101
|
+
# to puma, as those are the same as the original process.
|
|
102
|
+
#
|
|
103
|
+
# restart_command '/u/app/lolcat/bin/restart_puma'
|
|
104
|
+
|
|
105
|
+
# === Cluster mode ===
|
|
106
|
+
|
|
107
|
+
# How many worker processes to run. Typically this is set to
|
|
108
|
+
# to the number of available cores.
|
|
109
|
+
#
|
|
110
|
+
# The default is "0".
|
|
111
|
+
#
|
|
112
|
+
# workers 2
|
|
113
|
+
|
|
114
|
+
# Code to run immediately before the master starts workers.
|
|
115
|
+
#
|
|
116
|
+
# before_fork do
|
|
117
|
+
# puts "Starting workers..."
|
|
118
|
+
# end
|
|
119
|
+
|
|
120
|
+
# Code to run in a worker before it starts serving requests.
|
|
121
|
+
#
|
|
122
|
+
# This is called everytime a worker is to be started.
|
|
123
|
+
#
|
|
124
|
+
# on_worker_boot do
|
|
125
|
+
# puts 'On worker boot...'
|
|
126
|
+
# end
|
|
127
|
+
|
|
128
|
+
# Code to run in a worker right before it exits.
|
|
129
|
+
#
|
|
130
|
+
# This is called everytime a worker is to about to shutdown.
|
|
131
|
+
#
|
|
132
|
+
# on_worker_shutdown do
|
|
133
|
+
# puts 'On worker shutdown...'
|
|
134
|
+
# end
|
|
135
|
+
|
|
136
|
+
# Code to run in the master right before a worker is started. The worker's
|
|
137
|
+
# index is passed as an argument.
|
|
138
|
+
#
|
|
139
|
+
# This is called everytime a worker is to be started.
|
|
140
|
+
#
|
|
141
|
+
# on_worker_fork do
|
|
142
|
+
# puts 'Before worker fork...'
|
|
143
|
+
# end
|
|
144
|
+
|
|
145
|
+
# Code to run in the master after a worker has been started. The worker's
|
|
146
|
+
# index is passed as an argument.
|
|
147
|
+
#
|
|
148
|
+
# This is called everytime a worker is to be started.
|
|
149
|
+
#
|
|
150
|
+
# after_worker_fork do
|
|
151
|
+
# puts 'After worker fork...'
|
|
152
|
+
# end
|
|
153
|
+
|
|
154
|
+
# Allow workers to reload bundler context when master process is issued
|
|
155
|
+
# a USR1 signal. This allows proper reloading of gems while the master
|
|
156
|
+
# is preserved across a phased-restart. (incompatible with preload_app)
|
|
157
|
+
# (off by default)
|
|
158
|
+
|
|
159
|
+
# prune_bundler
|
|
160
|
+
|
|
161
|
+
# Preload the application before starting the workers; this conflicts with
|
|
162
|
+
# phased restart feature. (off by default)
|
|
163
|
+
|
|
164
|
+
# preload_app!
|
|
165
|
+
|
|
166
|
+
# Additional text to display in process listing
|
|
167
|
+
#
|
|
168
|
+
# tag 'app name'
|
|
169
|
+
#
|
|
170
|
+
# If you do not specify a tag, Puma will infer it. If you do not want Puma
|
|
171
|
+
# to add a tag, use an empty string.
|
|
172
|
+
|
|
173
|
+
# Verifies that all workers have checked in to the master process within
|
|
174
|
+
# the given timeout. If not the worker process will be restarted. This is
|
|
175
|
+
# not a request timeout, it is to protect against a hung or dead process.
|
|
176
|
+
# Setting this value will not protect against slow requests.
|
|
177
|
+
# Default value is 60 seconds.
|
|
178
|
+
#
|
|
179
|
+
# worker_timeout 60
|
|
180
|
+
|
|
181
|
+
# Change the default worker timeout for booting
|
|
182
|
+
#
|
|
183
|
+
# If unspecified, this defaults to the value of worker_timeout.
|
|
184
|
+
#
|
|
185
|
+
# worker_boot_timeout 60
|
|
186
|
+
|
|
187
|
+
# === Puma control rack application ===
|
|
188
|
+
|
|
189
|
+
# Start the puma control rack application on "url". This application can
|
|
190
|
+
# be communicated with to control the main server. Additionally, you can
|
|
191
|
+
# provide an authentication token, so all requests to the control server
|
|
192
|
+
# will need to include that token as a query parameter. This allows for
|
|
193
|
+
# simple authentication.
|
|
194
|
+
#
|
|
195
|
+
# Check out https://github.com/puma/puma/blob/master/lib/puma/app/status.rb
|
|
196
|
+
# to see what the app has available.
|
|
197
|
+
#
|
|
198
|
+
# activate_control_app 'unix:///var/run/pumactl.sock'
|
|
199
|
+
# activate_control_app 'unix:///var/run/pumactl.sock', { auth_token: '12345' }
|
|
200
|
+
# activate_control_app 'unix:///var/run/pumactl.sock', { no_token: true }
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'puma/plugin'
|
|
2
|
+
require 'redis'
|
|
3
|
+
|
|
4
|
+
# How to stop Puma on Heroku
|
|
5
|
+
# - You can't use normal methods because the dyno is not accessible
|
|
6
|
+
# - There's no file system, no way to send signals
|
|
7
|
+
# but ...
|
|
8
|
+
# - You can use Redis or Memcache; any network distributed key-value
|
|
9
|
+
# store
|
|
10
|
+
|
|
11
|
+
# 1. Add this plugin to your 'lib' directory
|
|
12
|
+
# 2. In the `puma.rb` config file add the following lines
|
|
13
|
+
# === Plugins ===
|
|
14
|
+
# require './lib/puma/plugins/redis_stop_puma'
|
|
15
|
+
# plugin 'redis_stop_puma'
|
|
16
|
+
# 3. Now, when you set the redis key "puma::restart::web.1", your web.1 dyno
|
|
17
|
+
# will restart
|
|
18
|
+
# 4. Sniffing the Heroku logs for R14 errors is application (and configuration)
|
|
19
|
+
# specific. I use the Logentries service, watch for the pattern and the call
|
|
20
|
+
# a webhook back into my app to set the Redis key. YMMV
|
|
21
|
+
|
|
22
|
+
# You can test this locally by setting the DYNO environment variable when
|
|
23
|
+
# when starting puma, e.g. `DYNO=pants.1 puma`
|
|
24
|
+
|
|
25
|
+
Puma::Plugin.create do
|
|
26
|
+
def start(launcher)
|
|
27
|
+
|
|
28
|
+
hostname = ENV['DYNO']
|
|
29
|
+
return unless hostname
|
|
30
|
+
|
|
31
|
+
redis = Redis.new(url: ENV.fetch('REDIS_URL', nil))
|
|
32
|
+
return unless redis.ping == 'PONG'
|
|
33
|
+
|
|
34
|
+
in_background do
|
|
35
|
+
while true
|
|
36
|
+
sleep 2
|
|
37
|
+
if message = redis.get("puma::restart::#{hostname}")
|
|
38
|
+
redis.del("puma::restart::#{hostname}")
|
|
39
|
+
$stderr.puts message
|
|
40
|
+
launcher.stop
|
|
41
|
+
break
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIC/jCCAeagAwIBAgIBAjANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJVUzEO
|
|
3
|
+
MAwGA1UECgwFbG9jYWwxDTALBgNVBAsMBGFlcm8xCzAJBgNVBAMMAkNBMB4XDTEy
|
|
4
|
+
MDExNDAwMjcyN1oXDTEzMDExMzAwMjcyN1owSDELMAkGA1UEBhMCVVMxDjAMBgNV
|
|
5
|
+
BAoMBWxvY2FsMQ0wCwYDVQQLDARhZXJvMQswCQYDVQQLDAJDQTENMAsGA1UEAwwE
|
|
6
|
+
cHVtYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArxfNMp+g/pKhsDEkB3KR
|
|
7
|
+
1MAkbfnN/UKMvfXwlnXpz7YX1LHHnMutiI/PqymAp6BPcu+umuW2qMHQyqqtyATm
|
|
8
|
+
Z9jr3t837nhmxwG1noRaKRtsckn9FD43ZlpPg0Q5QnhS4oOsXwJzilqPjdDFYrKN
|
|
9
|
+
3TSvIGM2+hVqpVoGYAHDKbMCAwEAAaOBhTCBgjAMBgNVHRMBAf8EAjAAMDEGCWCG
|
|
10
|
+
SAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G
|
|
11
|
+
A1UdDgQWBBTyDyJlmYBDwfWdRj6lWGvoY43k9DALBgNVHQ8EBAMCBaAwEwYDVR0l
|
|
12
|
+
BAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADggEBAIbBVfoVCG8RyVesPW+q
|
|
13
|
+
5i0wAMbHZ1fwv1RKp17c68DYDs0YYPi0bA0ss8AgpU6thWmskxPiFaE6D5x8iv9f
|
|
14
|
+
zkcHxgr1Mrbx6RLx9tLUVehSmRv3aiVO4k9Mp6vf+rJK1AYeaGBmvoqTBLwy7Jrt
|
|
15
|
+
ytKMdqMJj5jKWkWgEGgTnjzbcOClmCQab9isigIzTxMyC/LjeKZe8pPeVX6OM8bY
|
|
16
|
+
y8XGZp9B7uwdPzqt/g25IzTC0KsQwq8cB0raAtZzIyTNv42zcUjmQNVazAozCTcq
|
|
17
|
+
MsEtK2z7TYBC3udTsdyS2qVqCpsk7IMOBGrw8vk4SNhO+coiDObW2K/HNvhl0tZC
|
|
18
|
+
oQI=
|
|
19
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDEDCCAfigAwIBAgIBATANBgkqhkiG9w0BAQUFADA4MRMwEQYKCZImiZPyLGQB
|
|
3
|
+
GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCY2EwIBcNMTQw
|
|
4
|
+
MjAyMjAwODI3WhgPMjExNTAxMDkyMDA4MjdaMDgxEzARBgoJkiaJk/IsZAEZFgNu
|
|
5
|
+
ZXQxFDASBgoJkiaJk/IsZAEZFgRwdW1hMQswCQYDVQQDDAJjYTCCASIwDQYJKoZI
|
|
6
|
+
hvcNAQEBBQADggEPADCCAQoCggEBAN0u8/heGbkoFDDsx6uidE6DKPvjIPnZPFzR
|
|
7
|
+
CMkzrNgIeq/hfAItIJAO0m8YZivkUWeE3ut4ibSL+OVTvLRWDL/L736LILUxrD2f
|
|
8
|
+
joKHHLSVIUWl3H0VjYDE2RCiVkvxP4sAo7EYecZesTtb7W7DdAjHztFZIl+wT+ri
|
|
9
|
+
MlxDRmYxwsOPQtL0/wJZF80uTpC29V47NY9ITd/A+1xMblPAuQKO3vqZ4Yq07mO/
|
|
10
|
+
KKSbepo07v7jMhNOSHf8VBFlTzzG5AHmxZUW0qjCkJBV8N1MiT9cIk81ZuSqOZu3
|
|
11
|
+
A+aDAlOYPJe2WVpGskCme9HkJaHTeP87tQUsLqRsLgq/AXh5R58CAwEAAaMjMCEw
|
|
12
|
+
DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQAD
|
|
13
|
+
ggEBAKiGZ57rSAlL9slQ0FklVjpe+YrfZvmaXTRPl+9YhikoVI91u1r/qA9PrXKn
|
|
14
|
+
cL6u66SU6kJwI5572uT1TpKO7jQLXJZV0LO17WuF3P7y44QnNb53Em2GYi8DD/gq
|
|
15
|
+
X0Y1u8QzIxo4uomWiE73fnao2I9eErKNi/xCySaX/SLQ/9tcEgUyeLlTtJZ3feVF
|
|
16
|
+
7K0llR+hSb0Wy/uWnP7qP59YsyCJl1H23j7IEVCTMsOQ4tyIK16+qRA+aVLtE9f5
|
|
17
|
+
orsrOWWGJOdAn1nCJweKqhG1vd3GKGRW3Rf/iugCbvgJy0NFLfTpeJ4fJosC3A/K
|
|
18
|
+
6K+pe9hNsi2kBPwC67QeVjnbqd4=
|
|
19
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEowIBAAKCAQEA3S7z+F4ZuSgUMOzHq6J0ToMo++Mg+dk8XNEIyTOs2Ah6r+F8
|
|
3
|
+
Ai0gkA7SbxhmK+RRZ4Te63iJtIv45VO8tFYMv8vvfosgtTGsPZ+OgocctJUhRaXc
|
|
4
|
+
fRWNgMTZEKJWS/E/iwCjsRh5xl6xO1vtbsN0CMfO0VkiX7BP6uIyXENGZjHCw49C
|
|
5
|
+
0vT/AlkXzS5OkLb1Xjs1j0hN38D7XExuU8C5Ao7e+pnhirTuY78opJt6mjTu/uMy
|
|
6
|
+
E05Id/xUEWVPPMbkAebFlRbSqMKQkFXw3UyJP1wiTzVm5Ko5m7cD5oMCU5g8l7ZZ
|
|
7
|
+
WkayQKZ70eQlodN4/zu1BSwupGwuCr8BeHlHnwIDAQABAoIBABjXyj1OTHNYhhQM
|
|
8
|
+
tEyZ3Zhn8PWByFVnyfje3a7DqBlHsogIuoYADZVApPAnfGpXpbEL4oHuMwFda2JO
|
|
9
|
+
qnZS5/Gu9UJwXAceAiuVvUr55AaAbZFGFOLTxeX9tifBJBI5kZqKQtiEWEEop510
|
|
10
|
+
MNHtEB5gWuF2sn6u7fsC1wc34zNdE/4hR1njsppIlJ1GP0ICQUI/YKybipF6+pI7
|
|
11
|
+
+vg7bF5DU93/uUoRY83NjREeAswFE67OOHi592YIyr5TLu06NDqJ2EBneXyO63Q7
|
|
12
|
+
pAakX84SI7k8p8t9XBW6D56pT23JYcrDXwayH1P+SAA4FdDhPlZlGPWjXqQc0biA
|
|
13
|
+
l1HlfiECgYEA8bwVsukWSGE+XdRnilVATP4zTS7ZpcYzUufS9+pa5w0sVIkDScgL
|
|
14
|
+
3YrB0rY7BS/kImOg+xrFz7ILCoIyjDCEVtly0Hc1aZw9SWu545lfFWcd7s7nN5nQ
|
|
15
|
+
iM9jGxoAWu/VT2GKIfhxMK89CzLD1DGgqsiyYxmPMyplekupUEkkiHECgYEA6jxl
|
|
16
|
+
uNddzzfKZKHEWS1Tax0hgchOaVMyML35ySz5kgw1tSO8G64eKtrSCq7wcSvb4uc3
|
|
17
|
+
hz1yl5Ydxqa+1qX5Qi+UcoRhZZHqGTsbid1aiQJKltk4ImtlptBbX+NTvEDIDblQ
|
|
18
|
+
fzse/a+upesutwaTchlXtuPG2F53UZeQ831GWQ8CgYAqKdtDDILVdxiwtwakS0Be
|
|
19
|
+
7Yu3L6/IyWxUTpkuotLeMB8GU6ueJ+Vh6/zoqt5ahkLteKEwizfrhSuF1rXIXAIJ
|
|
20
|
+
P/5VvCU12YmbD84pk6vRCN5gs/gCa7LC2iF4La3YLrLvGJ1GVZYwnrAwDte3YDyc
|
|
21
|
+
7UqoHGIs031FuoK6vTdBEQKBgHG5bz3mOqKgGMDxFY6ihgzMcPc9FGzousaVhhAZ
|
|
22
|
+
qPYyvWS7+9mImRb/dNlBBHY98B1jWz9rIxbcCIrpbGB05ucuiKltAoi45mrnmsA9
|
|
23
|
+
23YHycUho7J6aDkskiClE4OkBD09iwqq3qoWwPnHjL/KDo5oJYEjZ+inPNE9gF/n
|
|
24
|
+
o98bAoGBAMLZ7BYOXU1svCwuEz9RdAyXsrOX+Z9DW9i6WMVlfk9K1IxwpXYCvOjO
|
|
25
|
+
J+wJuQtuNbwKqNPw1DUEp/25cDVoekRAxaKgYGlJFib8vEGtbQ7GQK9bDA11/sIz
|
|
26
|
+
PQSfc92Y4+qpQ9WzhsZXip49itzBFgmN7/4eaohpvyHCFkVCZVpf
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDAzCCAeugAwIBAgIBAzANBgkqhkiG9w0BAQUFADA4MRMwEQYKCZImiZPyLGQB
|
|
3
|
+
GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCY2EwIBcNMTQw
|
|
4
|
+
MjAyMjAwODI3WhgPMjExNTAxMDkyMDA4MjdaMDwxEzARBgoJkiaJk/IsZAEZFgNu
|
|
5
|
+
ZXQxFDASBgoJkiaJk/IsZAEZFgRwdW1hMQ8wDQYDVQQDDAZjbGllbnQwggEiMA0G
|
|
6
|
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGnFKNrNj9pvHIK+iUf1UoDJ0O7hpj
|
|
7
|
+
jn7QWd65xnHWN9YF9RfBVRxg7HLcPls6GL4c+e5KQP1W0o4gSzwbUc3a/LyqkTEA
|
|
8
|
+
dligEjXTkQY6tCn/51CuClynreQ98wdgQrayzobKhWMALG7IRLraprZmiQJpxWOF
|
|
9
|
+
evd7WkF32AwSklZMEdWcLdI36swTV0UzuR9IDUnIh5GGPbikF/6hQ1E1+rL/sZkh
|
|
10
|
+
czYNEniJGk2pD3MqJguTvYTF24k1KEOV5koSuAPnyl4E/dX9g3AIHWo8OhqVs/4P
|
|
11
|
+
hrX6++qmrsVz9LIvPw3+SMAE3QU49J7uAANRQMBlxWhlbIpeFi8zNig7AgMBAAGj
|
|
12
|
+
EjAQMA4GA1UdDwEB/wQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAtxbX3CfQgMwa
|
|
13
|
+
CWYTjupyTC+KDajbkLLsNXw49PeTIj0FOjAdKA1zyEZcrxtaU+flJr8QHdI8HyZH
|
|
14
|
+
hpofnOTSBg5k9y4Qz8gjI1Nsh0H8WU/d7F//2l2fUDOhVAb6JtTAKnMpU4snb0GD
|
|
15
|
+
bxcO6QxfNh50Qdb7KoJH7baJ3aAnsRrLVGqQ7jH20iMu163j/pYw4dDskFMr65Le
|
|
16
|
+
bMB3NeQ5pHwtYf2J5EliKCtH+Df/BTIl9u1vviZs84gA0Odai/YaMZWCqFiWqIax
|
|
17
|
+
lkMHNSDWh2G++qMn9erLjRtYDAbIt3VhMncUpEBx3lBEIaVg7qyfpWQ4EkkkylH6
|
|
18
|
+
WRv06vukVg==
|
|
19
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEpAIBAAKCAQEAxpxSjazY/abxyCvolH9VKAydDu4aY45+0FneucZx1jfWBfUX
|
|
3
|
+
wVUcYOxy3D5bOhi+HPnuSkD9VtKOIEs8G1HN2vy8qpExAHZYoBI105EGOrQp/+dQ
|
|
4
|
+
rgpcp63kPfMHYEK2ss6GyoVjACxuyES62qa2ZokCacVjhXr3e1pBd9gMEpJWTBHV
|
|
5
|
+
nC3SN+rME1dFM7kfSA1JyIeRhj24pBf+oUNRNfqy/7GZIXM2DRJ4iRpNqQ9zKiYL
|
|
6
|
+
k72ExduJNShDleZKErgD58peBP3V/YNwCB1qPDoalbP+D4a1+vvqpq7Fc/SyLz8N
|
|
7
|
+
/kjABN0FOPSe7gADUUDAZcVoZWyKXhYvMzYoOwIDAQABAoIBAA7C+aPMEAiyStAs
|
|
8
|
+
60l2OVcTsOy2J8H0ilpkA5jdNgLM/ZxNvilBcS2HBXZ3MAKeairvLJXaRLoaRjQC
|
|
9
|
+
Q4JoTxuSo1cuGW1GXonvMI77/XGJiIGbqLR20rIny4oLMSYnbzrU/NG6nkQaCVXb
|
|
10
|
+
PeQYdgAi+MnxwNbf79r8N1d3+FW85vjczo2aobWnJpir8U+xp5pe4xpqP8nddP7v
|
|
11
|
+
tdfIku8HBt76pu4ZfZynO6z9C+ZKS1s7YmBkGNuE46kwl9dhdmZGawAHxNYNAAJS
|
|
12
|
+
FPLHR11f3syjtPUUm3MAr5BlCFd6vgWYJFrdKv8/uH++WAiVvApnG/FjPh90i42p
|
|
13
|
+
muGHJbECgYEA+eiHPNzlCwYpPzY+n/AfBQ48G7sYeHk/yEDvhkJOnwAQEQMMw1s9
|
|
14
|
+
AGHFTaKa2rb6fruZp8qCXiuzhWq2x7e5+W2Buj+VU15fI1JCJW1s2GdlGOAclvEW
|
|
15
|
+
HvhcmlwtmSOWgTv1bbVSgQZB9hjbVK+81yQ9hn6AxJUT9k1IU3HALGkCgYEAy3Ow
|
|
16
|
+
DBX97AVn+1h4I/7cTqzjjLCaBn4UVcy0s3hsbvW/b+aYb8a3F4wJ7mWXvFk9Lb4h
|
|
17
|
+
uMfka6DYHszma1Bp7BEr63QIAhf936PXAljgtBBCron+9Y6DD83mz/9sX/MTo/pE
|
|
18
|
+
2J/qHOqYwoboDoscgtVXZxNM3UX70RJ6RBKAKwMCgYEAxpX+kWC/KWl18WM7lICN
|
|
19
|
+
Rckv/qFIKsO+6XSgYcHjE/pKyhnwVHT2Ho2S6cRi5ZYtq/OLgIgt3INBnq1UHZRj
|
|
20
|
+
1k8snUHVeXAujbTaFz/DFJvk/EVqso9Vkrqta4QAQAbFnGB3APzrWNgOJm9OKxeT
|
|
21
|
+
KisEMRHpZU1JlZmH9bcYjLECgYAPb1tvz0tQWKim3PNgZ7l3Do7E4bENxQrt53Xe
|
|
22
|
+
F8jCMkqvxqLR+BVz59/pAjQcyfhmPAJ67k9aCv3aeFkS0yr2Ced3GXpyDjfoe5mY
|
|
23
|
+
R/3kK0ejzjxVjNZMoKZeKVajgOGAk0Ad3yP3xaSJPYrlb5BeLKlQ3Jn8P473MZut
|
|
24
|
+
BmpK2QKBgQCr7aaFL5Ypv21kBKVI478jk7v/6PcYOztkFbOsje5A4SlkhlaE5u0h
|
|
25
|
+
iK0jON8MnAieLeP5QvyXy5n6wL/6THUSxpm3ZJRXpNgKHqENJrZBh3HpmrtzXjxF
|
|
26
|
+
WLMGl20yrsNUE8WR8wAJ5ECxwUPGZazDY9CD6C0Vm0LUWYdgZQnjnA==
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|