passenger 5.0.21 → 5.0.22
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/CHANGELOG +38 -2
- data/CONTRIBUTORS +3 -0
- data/README.md +5 -1
- data/bin/passenger-status +2 -7
- data/build/agent.rb +2 -0
- data/build/cxx_dependency_map.rb +1464 -162
- data/build/node_tests.rb +1 -1
- data/build/packaging.rb +1 -1
- data/dev/ci/run_travis.sh +1 -1
- data/dev/vagrant/provision.sh +1 -1
- data/npm-shrinkwrap.json +635 -125
- data/package.json +1 -1
- data/resources/templates/standalone/config.erb +33 -161
- data/resources/templates/standalone/global.erb +15 -0
- data/resources/templates/standalone/http.erb +40 -0
- data/resources/templates/standalone/mass_deployment_default_server.erb +11 -0
- data/resources/templates/standalone/rails_asset_pipeline.erb +22 -0
- data/resources/templates/standalone/server.erb +58 -0
- data/src/agent/Core/ApiServer.h +37 -32
- data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
- data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +6 -0
- data/src/agent/Core/ApplicationPool/Common.h +1 -1
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +4 -0
- data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Options.h +18 -1
- data/src/agent/Core/ApplicationPool/Pool.h +1 -1
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +6 -6
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +3 -3
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +6 -0
- data/src/agent/Core/ApplicationPool/Process.h +6 -1
- data/src/agent/Core/ApplicationPool/Socket.h +9 -12
- data/src/agent/Core/Controller.h +422 -0
- data/src/agent/Core/{RequestHandler → Controller}/AppResponse.h +2 -0
- data/src/agent/Core/{RequestHandler → Controller}/BufferBody.cpp +27 -5
- data/src/agent/Core/{RequestHandler → Controller}/CheckoutSession.cpp +61 -31
- data/src/agent/Core/{RequestHandler → Controller}/Client.h +5 -2
- data/src/agent/Core/{RequestHandler → Controller}/ForwardResponse.cpp +93 -42
- data/src/agent/Core/{RequestHandler → Controller}/Hooks.cpp +107 -60
- data/src/agent/Core/Controller/Implementation.cpp +38 -0
- data/src/agent/Core/{RequestHandler → Controller}/InitRequest.cpp +134 -80
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +165 -0
- data/src/agent/Core/{RequestHandler/Utils.cpp → Controller/InternalUtils.cpp} +49 -32
- data/src/agent/Core/Controller/Miscellaneous.cpp +116 -0
- data/src/agent/Core/{RequestHandler → Controller}/Request.h +6 -4
- data/src/agent/Core/{RequestHandler → Controller}/SendRequest.cpp +205 -130
- data/src/agent/Core/Controller/StateInspectionAndConfiguration.cpp +161 -0
- data/src/agent/Core/{RequestHandler → Controller}/TurboCaching.h +3 -0
- data/src/agent/Core/CoreMain.cpp +62 -51
- data/src/agent/Core/OptionParser.h +24 -0
- data/src/agent/Core/ResponseCache.h +5 -5
- data/src/agent/Core/SpawningKit/Config.h +2 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
- data/src/agent/Core/UnionStation/{Core.h → Context.h} +14 -18
- data/src/agent/Core/UnionStation/StopwatchLog.h +3 -2
- data/src/agent/Core/UnionStation/Transaction.h +7 -7
- data/src/agent/Shared/ApiServerUtils.h +9 -1
- data/src/agent/UstRouter/ApiServer.h +5 -2
- data/src/agent/UstRouter/Controller.h +27 -9
- data/src/agent/UstRouter/UstRouterMain.cpp +1 -0
- data/src/agent/Watchdog/ApiServer.h +5 -2
- data/src/apache2_module/ConfigurationCommands.cpp +7 -0
- data/src/apache2_module/ConfigurationFields.hpp +2 -0
- data/src/apache2_module/ConfigurationSetters.cpp +24 -0
- data/src/apache2_module/CreateDirConfig.cpp +1 -0
- data/src/apache2_module/Hooks.cpp +6 -5
- data/src/apache2_module/MergeDirConfig.cpp +7 -0
- data/src/apache2_module/SetHeaders.cpp +5 -0
- data/src/cxx_supportlib/Constants.h +5 -3
- data/src/cxx_supportlib/SafeLibev.h +2 -1
- data/src/cxx_supportlib/UnionStationFilterSupport.h +2 -1
- data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +6 -6
- data/src/helper-scripts/node-loader.js +59 -0
- data/src/nginx_module/CacheLocationConfig.c +48 -0
- data/src/nginx_module/ConfigurationCommands.c +20 -0
- data/src/nginx_module/ConfigurationFields.h +4 -0
- data/src/nginx_module/CreateLocationConfig.c +8 -0
- data/src/nginx_module/MergeLocationConfig.c +12 -0
- data/src/nodejs_supportlib/phusion_passenger/log_express.js +106 -0
- data/src/nodejs_supportlib/phusion_passenger/log_mongodb.js +203 -0
- data/src/nodejs_supportlib/phusion_passenger/ustreporter.js +227 -0
- data/src/nodejs_supportlib/phusion_passenger/ustrouter_connector.js +446 -0
- data/src/nodejs_supportlib/vendor-copy/codify/codify.js +44 -0
- data/src/nodejs_supportlib/vendor-copy/codify/package.json +29 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/context.js +200 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/async-listener/glue.js +488 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/async-listener/index.js +407 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/async-listener/node_modules/shimmer/index.js +90 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/async-listener/node_modules/shimmer/package.json +40 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/async-listener/package.json +54 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/emitter-listener/listener.js +160 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/emitter-listener/node_modules/shimmer/index.js +90 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/emitter-listener/node_modules/shimmer/package.json +40 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/node_modules/emitter-listener/package.json +46 -0
- data/src/nodejs_supportlib/vendor-copy/continuation-local-storage/package.json +56 -0
- data/src/nodejs_supportlib/vendor-copy/network-byte-order/lib/index.js +102 -0
- data/src/nodejs_supportlib/vendor-copy/network-byte-order/package.json +51 -0
- data/src/nodejs_supportlib/vendor-copy/winston/LICENSE +19 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston.js +165 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/common.js +483 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config.js +62 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/cli-config.js +35 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/npm-config.js +27 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/syslog-config.js +31 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/container.js +127 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/exception.js +56 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +701 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports.js +34 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/console.js +128 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/daily-rotate-file.js +601 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/file.js +675 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/http.js +232 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/memory.js +89 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/transport.js +135 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/webhook.js +146 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/LICENSE +19 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/lib/async.js +1283 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/package.json +66 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/support/sync-package-managers.js +53 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/MIT-LICENSE.txt +23 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/colors.js +176 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/custom/trap.js +45 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/custom/zalgo.js +104 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/extendStringPrototype.js +118 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/index.js +12 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/maps/america.js +12 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/maps/rainbow.js +13 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/maps/random.js +8 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/maps/zebra.js +5 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/styles.js +77 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/lib/system/supports-colors.js +61 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/package.json +35 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/safe.js +9 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/themes/generic-logging.js +12 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/cycle/cycle.js +170 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/cycle/package.json +30 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/LICENSE +20 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/lib/eyes.js +236 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/package.json +42 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/LICENSE.md +11 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/isstream.js +27 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/package.json +42 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/LICENSE +19 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/lib/pkginfo.js +136 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/package.json +56 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/License +19 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/lib/stack-trace.js +111 -0
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/package.json +33 -0
- data/src/nodejs_supportlib/vendor-copy/winston/package.json +87 -0
- data/src/ruby_supportlib/phusion_passenger.rb +3 -4
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +19 -2
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +8 -0
- data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -6
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +13 -0
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +9 -7
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +8 -1
- data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -1
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +20 -4
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +8 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +11 -4
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +647 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +229 -15
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +35 -323
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +36 -12
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +123 -14
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +32 -17
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +32 -21
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/README.md +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/Rakefile +5 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +68 -24
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/api.rb +9 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/context.rb +9 -7
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/basics.rb +8 -5
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/simple_json.rb +395 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/transaction.rb +10 -7
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/utils.rb +14 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml +4 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.example +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis-with-sudo +16 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/Gemfile +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/Gemfile.lock +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/README.md +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails.rb +44 -17
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/active_support_cache_subscriber.rb +16 -7
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/lib/union_station_hooks_rails/version_data.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_rails/union_station_hooks_rails.gemspec +1 -1
- metadata +99 -16
- metadata.gz.asc +7 -7
- data/resources/oss-binaries.phusionpassenger.com.crt +0 -248
- data/src/agent/Core/RequestHandler.h +0 -471
metadata.gz.asc
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
|
3
3
|
Comment: GPGTools - http://gpgtools.org
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
=
|
5
|
+
iQEcBAABAgAGBQJWZcnSAAoJECrHRaUKISqM4U0H/AmwSUzb6U577R1Ek4iR+d+Q
|
6
|
+
KbG8ejH4y2kuMfNsn9EVwq3OTkzNiTKBM47Vo8covtplEmg1HFmGMUwhpJyUanZD
|
7
|
+
5uquGtl+2kDfvGp3TQRsmqk8nSYDUJq7k6IC8q2fmCCen7VRa6gNnZ7QYdhhePXp
|
8
|
+
84mJsk4zqrHSafOHX0kHYd1dZQlufG+pM3ufX330M9a1FDUhH4VzVWcNmlIqiV/w
|
9
|
+
Z3Lr+Vni74pDYIOKX+xJkXtbLz2Tza4fEyVndeORPdJrpoRNtThGwp7CSvfZgXTw
|
10
|
+
5IeODjXtZIsxNCDjb4c+mFhpUKI9m357A8bCwlgSuBFEXf8XmTYQkGIaFskwZqE=
|
11
|
+
=CWuL
|
12
12
|
-----END PGP SIGNATURE-----
|
@@ -1,248 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIFiTCCBHGgAwIBAgIRAL9IMkS19yW5MiZ4wGzQT2wwDQYJKoZIhvcNAQELBQAw
|
3
|
-
gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
|
4
|
-
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD
|
5
|
-
VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg
|
6
|
-
Q0EwHhcNMTMwODA3MDAwMDAwWhcNMTgwODA2MjM1OTU5WjBlMSEwHwYDVQQLExhE
|
7
|
-
b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAsTC1Bvc2l0aXZlU1NMMSow
|
8
|
-
KAYDVQQDEyFvc3MtYmluYXJpZXMucGh1c2lvbnBhc3Nlbmdlci5jb20wggEiMA0G
|
9
|
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCotJA5DmU1gX2aSXfLFPNPiRTIF3dx
|
10
|
-
R9LADPSm86VSdkdQuYKP4SfttKi59939ZwiX1e+n3vOQ3oca3NTCKTfs9ZLond3k
|
11
|
-
u+N5xF6LAR8H9l6vwKLfb/BU4Ct3jS1hoYJ424QQIUG9ZocHYk1CnA+l7vodfQDm
|
12
|
-
HR+7VUfuLdCsG/FrlJJtoNODHLJSPq95CxK27GspAFE1s/NqilAgOjB/YYPeDMbJ
|
13
|
-
0qgHaid7Lhi7U4Hl1FE2xEI3fhCJ+XoC8mo/MaRaZHSutWDWZJtbYTvLdhV1vT28
|
14
|
-
vaobQoOV40Pg7T/J89Hj55IiOhADueimVFYbac3lRfyBfLnryfywU3q/AgMBAAGj
|
15
|
-
ggIGMIICAjAfBgNVHSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4E
|
16
|
-
FgQUqB8zrscqx9dRl2cEL40fKGwK79AwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB
|
17
|
-
/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFAGA1UdIARJMEcw
|
18
|
-
OwYMKwYBBAGyMQECAQMEMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNv
|
19
|
-
bW9kby5uZXQvQ1BTMAgGBmeBDAECATBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v
|
20
|
-
Y3JsLmNvbW9kb2NhLmNvbS9DT01PRE9SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJl
|
21
|
-
U2VydmVyQ0EuY3JsMIGFBggrBgEFBQcBAQR5MHcwTwYIKwYBBQUHMAKGQ2h0dHA6
|
22
|
-
Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1
|
23
|
-
cmVTZXJ2ZXJDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2Nh
|
24
|
-
LmNvbTBTBgNVHREETDBKgiFvc3MtYmluYXJpZXMucGh1c2lvbnBhc3Nlbmdlci5j
|
25
|
-
b22CJXd3dy5vc3MtYmluYXJpZXMucGh1c2lvbnBhc3Nlbmdlci5jb20wDQYJKoZI
|
26
|
-
hvcNAQELBQADggEBABx5Q+/JG7p7KGGM29reQQWYllY2r/qhkQYYZTpClehECckN
|
27
|
-
DZyweY7JN9yYK5OZK7kEbZnuW0VQm0pRfC0+k1bg9dM0uVrW5BOgAk10qj9y1N3y
|
28
|
-
x6dOtsJ+OGrFu5vK03QDQsYpUwtPMioM4d2Us+2YlfxHqmjRkFuMZvfcS4HHM6v/
|
29
|
-
qrrceb9+tOGi6DPoXV6XixChKZ95h0PJDogc+SFoev4WJOfQSi2VbZywSZVF/brR
|
30
|
-
/4QtWantedDESQAnmWZegEQTNupLIT/HseNR+5s3c7YrDDxHZdAKefOd6cbBomqb
|
31
|
-
uvzhX9c6lX5CZKsl7bq+JBV6fBtzhrqhUspdDXY=
|
32
|
-
-----END CERTIFICATE-----
|
33
|
-
-----BEGIN CERTIFICATE-----
|
34
|
-
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
|
35
|
-
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
36
|
-
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
|
37
|
-
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
|
38
|
-
MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
|
39
|
-
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
40
|
-
Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
|
41
|
-
bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
42
|
-
ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
|
43
|
-
bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
|
44
|
-
Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
|
45
|
-
ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
|
46
|
-
UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
|
47
|
-
c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
|
48
|
-
MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
|
49
|
-
30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
|
50
|
-
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
|
51
|
-
BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
|
52
|
-
bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
|
53
|
-
AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
|
54
|
-
T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
|
55
|
-
ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
|
56
|
-
mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
|
57
|
-
e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
|
58
|
-
P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
|
59
|
-
dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
|
60
|
-
2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
|
61
|
-
V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
|
62
|
-
HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
|
63
|
-
j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
|
64
|
-
0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
|
65
|
-
lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
|
66
|
-
+AZxAeKCINT+b72x
|
67
|
-
-----END CERTIFICATE-----
|
68
|
-
-----BEGIN CERTIFICATE-----
|
69
|
-
MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
|
70
|
-
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
|
71
|
-
ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
|
72
|
-
eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
|
73
|
-
gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
|
74
|
-
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
|
75
|
-
VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
|
76
|
-
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
|
77
|
-
AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
|
78
|
-
2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
|
79
|
-
ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
|
80
|
-
4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
|
81
|
-
m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
|
82
|
-
vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
|
83
|
-
8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
|
84
|
-
IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
|
85
|
-
KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
|
86
|
-
GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
|
87
|
-
s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
|
88
|
-
JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
|
89
|
-
AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
|
90
|
-
MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
|
91
|
-
bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
|
92
|
-
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
|
93
|
-
zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
|
94
|
-
Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
|
95
|
-
Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
|
96
|
-
B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
|
97
|
-
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
|
98
|
-
pu/xO28QOG8=
|
99
|
-
-----END CERTIFICATE-----
|
100
|
-
-----BEGIN CERTIFICATE-----
|
101
|
-
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
|
102
|
-
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
|
103
|
-
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
|
104
|
-
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
|
105
|
-
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
|
106
|
-
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
|
107
|
-
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
|
108
|
-
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
|
109
|
-
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
|
110
|
-
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
|
111
|
-
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
|
112
|
-
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
|
113
|
-
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
|
114
|
-
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
|
115
|
-
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
|
116
|
-
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
|
117
|
-
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
|
118
|
-
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
|
119
|
-
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
120
|
-
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
|
121
|
-
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
|
122
|
-
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
|
123
|
-
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
124
|
-
-----END CERTIFICATE-----
|
125
|
-
-----BEGIN CERTIFICATE-----
|
126
|
-
MIIFiDCCBHCgAwIBAgIRAKKbTg2s/HrxiepdR5rZv4QwDQYJKoZIhvcNAQELBQAw
|
127
|
-
gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
|
128
|
-
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD
|
129
|
-
VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg
|
130
|
-
Q0EwHhcNMTUwNzI4MDAwMDAwWhcNMTgwODA2MjM1OTU5WjBlMSEwHwYDVQQLExhE
|
131
|
-
b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAsTC1Bvc2l0aXZlU1NMMSow
|
132
|
-
KAYDVQQDEyFvc3MtYmluYXJpZXMucGh1c2lvbnBhc3Nlbmdlci5jb20wggEiMA0G
|
133
|
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxYQhjyYbSmZbksniq40HF2qg7qK7E
|
134
|
-
yDQ2gFJ9FPLWde2fqJSZctVRkAcXSV4nT6nyQt0c+VYWH739fZjUkswCkBCt/Hdp
|
135
|
-
i1qtHK9bd8300HZtejOn5CVR9NluQAIEl3YAPfIKUCkiv/objKlirckS2GTlwuYs
|
136
|
-
tJG05/8Iy8a3zh2yjrvH3OndIwGlLQ5Nq7bvSVt/etaaS94Xzz9vmUDb1YACmrAX
|
137
|
-
j+wYY8Dq5cs/1iBZTbgZmoDSn4kW3eCTbdS/o6nJXZ5GP2WihDTdilZo+KuTAO0G
|
138
|
-
49wqXuYZx7LzGNPGDqdKE15sax/pPk6OtmeUrjr7ldvk76mfEOGV2PgZAgMBAAGj
|
139
|
-
ggIFMIICATAfBgNVHSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4E
|
140
|
-
FgQUXjRYhHKq+0A0QsE/8+WznCY2d5QwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB
|
141
|
-
/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYw
|
142
|
-
OgYLKwYBBAGyMQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29t
|
143
|
-
b2RvLmNvbS9DUFMwCAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9j
|
144
|
-
cmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVT
|
145
|
-
ZXJ2ZXJDQS5jcmwwgYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDov
|
146
|
-
L2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3Vy
|
147
|
-
ZVNlcnZlckNBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2Eu
|
148
|
-
Y29tMFMGA1UdEQRMMEqCIW9zcy1iaW5hcmllcy5waHVzaW9ucGFzc2VuZ2VyLmNv
|
149
|
-
bYIld3d3Lm9zcy1iaW5hcmllcy5waHVzaW9ucGFzc2VuZ2VyLmNvbTANBgkqhkiG
|
150
|
-
9w0BAQsFAAOCAQEAN5jHMCPEdkPx1EucWb5+N0iL8PqPUfeQB9i8fkuJSj8IceAF
|
151
|
-
Qr2xmJ6QSlX3x+vmc4qGKXIFULTiIZqmG2MpkrF5sjbnOWhIW93mtlaaiH5W5fII
|
152
|
-
dKZtOShvb0UAe4hZHqL2dPG3gxJxR1Q385cRJOcu0aiKsUrEjIPn9sI84CcDdQEw
|
153
|
-
zq/fztS84yAUdPzpLimUA7HGrTIqvg1WtzNbGQBPNGx9vS3VE2CAhMthY6aJrYz7
|
154
|
-
5XsZBPGchSixoy6KN/gaSDG1GL7inihl0RKByWjGrco8ns5JWFIIuU9zMYhzHKi7
|
155
|
-
vs1Ik9trJfi3nx3E0AsIsCmgkcx5ziAVbb2qJA==
|
156
|
-
-----END CERTIFICATE-----
|
157
|
-
-----BEGIN CERTIFICATE-----
|
158
|
-
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
|
159
|
-
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
160
|
-
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
|
161
|
-
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
|
162
|
-
MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
|
163
|
-
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
164
|
-
Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
|
165
|
-
bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
166
|
-
ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
|
167
|
-
bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
|
168
|
-
Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
|
169
|
-
ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
|
170
|
-
UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
|
171
|
-
c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
|
172
|
-
MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
|
173
|
-
30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
|
174
|
-
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
|
175
|
-
BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
|
176
|
-
bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
|
177
|
-
AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
|
178
|
-
T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
|
179
|
-
ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
|
180
|
-
mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
|
181
|
-
e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
|
182
|
-
P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
|
183
|
-
dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
|
184
|
-
2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
|
185
|
-
V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
|
186
|
-
HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
|
187
|
-
j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
|
188
|
-
0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
|
189
|
-
lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
|
190
|
-
+AZxAeKCINT+b72x
|
191
|
-
-----END CERTIFICATE-----
|
192
|
-
-----BEGIN CERTIFICATE-----
|
193
|
-
MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
|
194
|
-
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
|
195
|
-
ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
|
196
|
-
eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
|
197
|
-
gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
|
198
|
-
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
|
199
|
-
VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
|
200
|
-
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
|
201
|
-
AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
|
202
|
-
2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
|
203
|
-
ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
|
204
|
-
4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
|
205
|
-
m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
|
206
|
-
vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
|
207
|
-
8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
|
208
|
-
IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
|
209
|
-
KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
|
210
|
-
GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
|
211
|
-
s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
|
212
|
-
JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
|
213
|
-
AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
|
214
|
-
MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
|
215
|
-
bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
|
216
|
-
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
|
217
|
-
zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
|
218
|
-
Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
|
219
|
-
Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
|
220
|
-
B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
|
221
|
-
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
|
222
|
-
pu/xO28QOG8=
|
223
|
-
-----END CERTIFICATE-----
|
224
|
-
-----BEGIN CERTIFICATE-----
|
225
|
-
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
|
226
|
-
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
|
227
|
-
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
|
228
|
-
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
|
229
|
-
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
|
230
|
-
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
|
231
|
-
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
|
232
|
-
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
|
233
|
-
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
|
234
|
-
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
|
235
|
-
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
|
236
|
-
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
|
237
|
-
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
|
238
|
-
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
|
239
|
-
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
|
240
|
-
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
|
241
|
-
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
|
242
|
-
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
|
243
|
-
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
244
|
-
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
|
245
|
-
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
|
246
|
-
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
|
247
|
-
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
248
|
-
-----END CERTIFICATE-----
|
@@ -1,471 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Phusion Passenger - https://www.phusionpassenger.com/
|
3
|
-
* Copyright (c) 2011-2015 Phusion Holding B.V.
|
4
|
-
*
|
5
|
-
* "Passenger", "Phusion Passenger" and "Union Station" are registered
|
6
|
-
* trademarks of Phusion Holding B.V.
|
7
|
-
*
|
8
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
* of this software and associated documentation files (the "Software"), to deal
|
10
|
-
* in the Software without restriction, including without limitation the rights
|
11
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
-
* copies of the Software, and to permit persons to whom the Software is
|
13
|
-
* furnished to do so, subject to the following conditions:
|
14
|
-
*
|
15
|
-
* The above copyright notice and this permission notice shall be included in
|
16
|
-
* all copies or substantial portions of the Software.
|
17
|
-
*
|
18
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
* THE SOFTWARE.
|
25
|
-
*/
|
26
|
-
|
27
|
-
#ifndef _PASSENGER_REQUEST_HANDLER_H_
|
28
|
-
#define _PASSENGER_REQUEST_HANDLER_H_
|
29
|
-
|
30
|
-
//#define DEBUG_RH_EVENT_LOOP_BLOCKING
|
31
|
-
|
32
|
-
#include <boost/shared_ptr.hpp>
|
33
|
-
#include <boost/make_shared.hpp>
|
34
|
-
#include <boost/cstdint.hpp>
|
35
|
-
#include <oxt/macros.hpp>
|
36
|
-
#include <ev++.h>
|
37
|
-
#include <ostream>
|
38
|
-
|
39
|
-
#if defined(__GLIBCXX__) || defined(__APPLE__)
|
40
|
-
#include <cxxabi.h>
|
41
|
-
#define CXX_ABI_API_AVAILABLE
|
42
|
-
#endif
|
43
|
-
|
44
|
-
#include <sys/types.h>
|
45
|
-
#include <sys/uio.h>
|
46
|
-
#include <utility>
|
47
|
-
#include <typeinfo>
|
48
|
-
#include <cstdio>
|
49
|
-
#include <cstdlib>
|
50
|
-
#include <cstddef>
|
51
|
-
#include <cassert>
|
52
|
-
#include <cctype>
|
53
|
-
|
54
|
-
#include <Logging.h>
|
55
|
-
#include <MessageReadersWriters.h>
|
56
|
-
#include <Constants.h>
|
57
|
-
#include <ServerKit/Errors.h>
|
58
|
-
#include <ServerKit/HttpServer.h>
|
59
|
-
#include <ServerKit/HttpHeaderParser.h>
|
60
|
-
#include <MemoryKit/palloc.h>
|
61
|
-
#include <DataStructures/LString.h>
|
62
|
-
#include <DataStructures/StringKeyTable.h>
|
63
|
-
#include <StaticString.h>
|
64
|
-
#include <Utils.h>
|
65
|
-
#include <Utils/StrIntUtils.h>
|
66
|
-
#include <Utils/IOUtils.h>
|
67
|
-
#include <Utils/JsonUtils.h>
|
68
|
-
#include <Utils/HttpConstants.h>
|
69
|
-
#include <Utils/VariantMap.h>
|
70
|
-
#include <Utils/Timer.h>
|
71
|
-
#include <Core/ApplicationPool/ErrorRenderer.h>
|
72
|
-
#include <Core/RequestHandler/Client.h>
|
73
|
-
#include <Core/RequestHandler/AppResponse.h>
|
74
|
-
#include <Core/RequestHandler/TurboCaching.h>
|
75
|
-
#include <Core/UnionStation/Core.h>
|
76
|
-
|
77
|
-
namespace Passenger {
|
78
|
-
|
79
|
-
using namespace std;
|
80
|
-
using namespace boost;
|
81
|
-
using namespace oxt;
|
82
|
-
using namespace ApplicationPool2;
|
83
|
-
|
84
|
-
|
85
|
-
namespace ServerKit {
|
86
|
-
extern const HashedStaticString HTTP_COOKIE;
|
87
|
-
extern const HashedStaticString HTTP_SET_COOKIE;
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
|
-
class RequestHandler: public ServerKit::HttpServer<RequestHandler, Client> {
|
92
|
-
public:
|
93
|
-
enum BenchmarkMode {
|
94
|
-
BM_NONE,
|
95
|
-
BM_AFTER_ACCEPT,
|
96
|
-
BM_BEFORE_CHECKOUT,
|
97
|
-
BM_AFTER_CHECKOUT,
|
98
|
-
BM_RESPONSE_BEGIN,
|
99
|
-
BM_UNKNOWN
|
100
|
-
};
|
101
|
-
|
102
|
-
private:
|
103
|
-
typedef ServerKit::HttpServer<RequestHandler, Client> ParentClass;
|
104
|
-
typedef ServerKit::Channel Channel;
|
105
|
-
typedef ServerKit::FdSinkChannel FdSinkChannel;
|
106
|
-
typedef ServerKit::FdSourceChannel FdSourceChannel;
|
107
|
-
typedef ServerKit::FileBufferedChannel FileBufferedChannel;
|
108
|
-
typedef ServerKit::FileBufferedFdSinkChannel FileBufferedFdSinkChannel;
|
109
|
-
|
110
|
-
static const unsigned int MAX_SESSION_CHECKOUT_TRY = 10;
|
111
|
-
|
112
|
-
unsigned int statThrottleRate;
|
113
|
-
unsigned int responseBufferHighWatermark;
|
114
|
-
BenchmarkMode benchmarkMode: 3;
|
115
|
-
bool singleAppMode: 1;
|
116
|
-
bool showVersionInHeader: 1;
|
117
|
-
bool stickySessions: 1;
|
118
|
-
bool gracefulExit: 1;
|
119
|
-
|
120
|
-
const VariantMap *agentsOptions;
|
121
|
-
psg_pool_t *stringPool;
|
122
|
-
StringKeyTable< boost::shared_ptr<Options> > poolOptionsCache;
|
123
|
-
|
124
|
-
StaticString defaultRuby;
|
125
|
-
StaticString ustRouterAddress;
|
126
|
-
StaticString ustRouterPassword;
|
127
|
-
StaticString defaultUser;
|
128
|
-
StaticString defaultGroup;
|
129
|
-
StaticString defaultServerName;
|
130
|
-
StaticString defaultServerPort;
|
131
|
-
StaticString serverSoftware;
|
132
|
-
StaticString defaultStickySessionsCookieName;
|
133
|
-
StaticString defaultVaryTurbocacheByCookie;
|
134
|
-
|
135
|
-
HashedStaticString PASSENGER_APP_GROUP_NAME;
|
136
|
-
HashedStaticString PASSENGER_ENV_VARS;
|
137
|
-
HashedStaticString PASSENGER_MAX_REQUESTS;
|
138
|
-
HashedStaticString PASSENGER_STICKY_SESSIONS;
|
139
|
-
HashedStaticString PASSENGER_STICKY_SESSIONS_COOKIE_NAME;
|
140
|
-
HashedStaticString PASSENGER_REQUEST_OOB_WORK;
|
141
|
-
HashedStaticString UNION_STATION_SUPPORT;
|
142
|
-
HashedStaticString REMOTE_ADDR;
|
143
|
-
HashedStaticString REMOTE_PORT;
|
144
|
-
HashedStaticString REMOTE_USER;
|
145
|
-
HashedStaticString FLAGS;
|
146
|
-
HashedStaticString HTTP_COOKIE;
|
147
|
-
HashedStaticString HTTP_DATE;
|
148
|
-
HashedStaticString HTTP_HOST;
|
149
|
-
HashedStaticString HTTP_CONTENT_LENGTH;
|
150
|
-
HashedStaticString HTTP_CONTENT_TYPE;
|
151
|
-
HashedStaticString HTTP_EXPECT;
|
152
|
-
HashedStaticString HTTP_CONNECTION;
|
153
|
-
HashedStaticString HTTP_STATUS;
|
154
|
-
HashedStaticString HTTP_TRANSFER_ENCODING;
|
155
|
-
|
156
|
-
unsigned int threadNumber;
|
157
|
-
StaticString serverLogName;
|
158
|
-
|
159
|
-
friend class TurboCaching<Request>;
|
160
|
-
friend class ResponseCache<Request>;
|
161
|
-
struct ev_check checkWatcher;
|
162
|
-
TurboCaching<Request> turboCaching;
|
163
|
-
|
164
|
-
#ifdef DEBUG_RH_EVENT_LOOP_BLOCKING
|
165
|
-
struct ev_prepare prepareWatcher;
|
166
|
-
ev_tstamp timeBeforeBlocking;
|
167
|
-
#endif
|
168
|
-
|
169
|
-
public:
|
170
|
-
ResourceLocator *resourceLocator;
|
171
|
-
PoolPtr appPool;
|
172
|
-
UnionStation::CorePtr unionStationCore;
|
173
|
-
|
174
|
-
protected:
|
175
|
-
#include <Core/RequestHandler/Utils.cpp>
|
176
|
-
#include <Core/RequestHandler/Hooks.cpp>
|
177
|
-
#include <Core/RequestHandler/InitRequest.cpp>
|
178
|
-
#include <Core/RequestHandler/BufferBody.cpp>
|
179
|
-
#include <Core/RequestHandler/CheckoutSession.cpp>
|
180
|
-
#include <Core/RequestHandler/SendRequest.cpp>
|
181
|
-
#include <Core/RequestHandler/ForwardResponse.cpp>
|
182
|
-
|
183
|
-
public:
|
184
|
-
RequestHandler(ServerKit::Context *context, const VariantMap *_agentsOptions,
|
185
|
-
unsigned int _threadNumber = 1)
|
186
|
-
: ParentClass(context),
|
187
|
-
|
188
|
-
statThrottleRate(_agentsOptions->getInt("stat_throttle_rate")),
|
189
|
-
responseBufferHighWatermark(_agentsOptions->getInt("response_buffer_high_watermark")),
|
190
|
-
benchmarkMode(parseBenchmarkMode(_agentsOptions->get("benchmark_mode", false))),
|
191
|
-
singleAppMode(false),
|
192
|
-
showVersionInHeader(_agentsOptions->getBool("show_version_in_header")),
|
193
|
-
stickySessions(_agentsOptions->getBool("sticky_sessions")),
|
194
|
-
gracefulExit(_agentsOptions->getBool("core_graceful_exit")),
|
195
|
-
|
196
|
-
agentsOptions(_agentsOptions),
|
197
|
-
stringPool(psg_create_pool(1024 * 4)),
|
198
|
-
poolOptionsCache(4),
|
199
|
-
|
200
|
-
PASSENGER_APP_GROUP_NAME("!~PASSENGER_APP_GROUP_NAME"),
|
201
|
-
PASSENGER_ENV_VARS("!~PASSENGER_ENV_VARS"),
|
202
|
-
PASSENGER_MAX_REQUESTS("!~PASSENGER_MAX_REQUESTS"),
|
203
|
-
PASSENGER_STICKY_SESSIONS("!~PASSENGER_STICKY_SESSIONS"),
|
204
|
-
PASSENGER_STICKY_SESSIONS_COOKIE_NAME("!~PASSENGER_STICKY_SESSIONS_COOKIE_NAME"),
|
205
|
-
PASSENGER_REQUEST_OOB_WORK("!~Request-OOB-Work"),
|
206
|
-
UNION_STATION_SUPPORT("!~UNION_STATION_SUPPORT"),
|
207
|
-
REMOTE_ADDR("!~REMOTE_ADDR"),
|
208
|
-
REMOTE_PORT("!~REMOTE_PORT"),
|
209
|
-
REMOTE_USER("!~REMOTE_USER"),
|
210
|
-
FLAGS("!~FLAGS"),
|
211
|
-
HTTP_COOKIE("cookie"),
|
212
|
-
HTTP_DATE("date"),
|
213
|
-
HTTP_HOST("host"),
|
214
|
-
HTTP_CONTENT_LENGTH("content-length"),
|
215
|
-
HTTP_CONTENT_TYPE("content-type"),
|
216
|
-
HTTP_EXPECT("expect"),
|
217
|
-
HTTP_CONNECTION("connection"),
|
218
|
-
HTTP_STATUS("status"),
|
219
|
-
HTTP_TRANSFER_ENCODING("transfer-encoding"),
|
220
|
-
|
221
|
-
threadNumber(_threadNumber),
|
222
|
-
turboCaching(getTurboCachingInitialState(_agentsOptions))
|
223
|
-
{
|
224
|
-
defaultRuby = psg_pstrdup(stringPool,
|
225
|
-
agentsOptions->get("default_ruby"));
|
226
|
-
ustRouterAddress = psg_pstrdup(stringPool,
|
227
|
-
agentsOptions->get("ust_router_address", false));
|
228
|
-
ustRouterPassword = psg_pstrdup(stringPool,
|
229
|
-
agentsOptions->get("ust_router_password", false));
|
230
|
-
defaultUser = psg_pstrdup(stringPool,
|
231
|
-
agentsOptions->get("default_user", false));
|
232
|
-
defaultGroup = psg_pstrdup(stringPool,
|
233
|
-
agentsOptions->get("default_group", false));
|
234
|
-
defaultServerName = psg_pstrdup(stringPool,
|
235
|
-
agentsOptions->get("default_server_name"));
|
236
|
-
defaultServerPort = psg_pstrdup(stringPool,
|
237
|
-
agentsOptions->get("default_server_port"));
|
238
|
-
serverSoftware = psg_pstrdup(stringPool,
|
239
|
-
agentsOptions->get("server_software"));
|
240
|
-
defaultStickySessionsCookieName = psg_pstrdup(stringPool,
|
241
|
-
agentsOptions->get("sticky_sessions_cookie_name"));
|
242
|
-
|
243
|
-
if (agentsOptions->has("vary_turbocache_by_cookie")) {
|
244
|
-
defaultVaryTurbocacheByCookie = psg_pstrdup(stringPool,
|
245
|
-
agentsOptions->get("vary_turbocache_by_cookie"));
|
246
|
-
}
|
247
|
-
|
248
|
-
generateServerLogName(_threadNumber);
|
249
|
-
|
250
|
-
if (!agentsOptions->getBool("multi_app")) {
|
251
|
-
boost::shared_ptr<Options> options = boost::make_shared<Options>();
|
252
|
-
|
253
|
-
singleAppMode = true;
|
254
|
-
fillPoolOptionsFromAgentsOptions(*options);
|
255
|
-
|
256
|
-
options->appRoot = psg_pstrdup(stringPool,
|
257
|
-
agentsOptions->get("app_root"));
|
258
|
-
options->environment = psg_pstrdup(stringPool,
|
259
|
-
agentsOptions->get("environment"));
|
260
|
-
options->appType = psg_pstrdup(stringPool,
|
261
|
-
agentsOptions->get("app_type"));
|
262
|
-
options->startupFile = psg_pstrdup(stringPool,
|
263
|
-
agentsOptions->get("startup_file"));
|
264
|
-
poolOptionsCache.insert(options->getAppGroupName(), options);
|
265
|
-
}
|
266
|
-
|
267
|
-
ev_check_init(&checkWatcher, onEventLoopCheck);
|
268
|
-
ev_set_priority(&checkWatcher, EV_MAXPRI);
|
269
|
-
ev_check_start(getLoop(), &checkWatcher);
|
270
|
-
checkWatcher.data = this;
|
271
|
-
|
272
|
-
#ifdef DEBUG_RH_EVENT_LOOP_BLOCKING
|
273
|
-
ev_prepare_init(&prepareWatcher, onEventLoopPrepare);
|
274
|
-
ev_prepare_start(getLoop(), &prepareWatcher);
|
275
|
-
prepareWatcher.data = this;
|
276
|
-
|
277
|
-
timeBeforeBlocking = 0;
|
278
|
-
#endif
|
279
|
-
}
|
280
|
-
|
281
|
-
~RequestHandler() {
|
282
|
-
psg_destroy_pool(stringPool);
|
283
|
-
}
|
284
|
-
|
285
|
-
static BenchmarkMode parseBenchmarkMode(const StaticString mode) {
|
286
|
-
if (mode.empty()) {
|
287
|
-
return BM_NONE;
|
288
|
-
} else if (mode == "after_accept") {
|
289
|
-
return BM_AFTER_ACCEPT;
|
290
|
-
} else if (mode == "before_checkout") {
|
291
|
-
return BM_BEFORE_CHECKOUT;
|
292
|
-
} else if (mode == "after_checkout") {
|
293
|
-
return BM_AFTER_CHECKOUT;
|
294
|
-
} else if (mode == "response_begin") {
|
295
|
-
return BM_RESPONSE_BEGIN;
|
296
|
-
} else {
|
297
|
-
return BM_UNKNOWN;
|
298
|
-
}
|
299
|
-
}
|
300
|
-
|
301
|
-
void initialize() {
|
302
|
-
TRACE_POINT();
|
303
|
-
if (resourceLocator == NULL) {
|
304
|
-
throw RuntimeException("ResourceLocator not initialized");
|
305
|
-
}
|
306
|
-
if (appPool == NULL) {
|
307
|
-
throw RuntimeException("AppPool not initialized");
|
308
|
-
}
|
309
|
-
if (unionStationCore == NULL) {
|
310
|
-
unionStationCore = appPool->getUnionStationCore();
|
311
|
-
}
|
312
|
-
}
|
313
|
-
|
314
|
-
void disconnectLongRunningConnections(const StaticString &gupid) {
|
315
|
-
vector<Client *> clients;
|
316
|
-
vector<Client *>::iterator v_it, v_end;
|
317
|
-
Client *client;
|
318
|
-
|
319
|
-
// We collect all clients in a vector so that we don't have to worry about
|
320
|
-
// `activeClients` being mutated while we work.
|
321
|
-
TAILQ_FOREACH (client, &activeClients, nextClient.activeOrDisconnectedClient) {
|
322
|
-
P_ASSERT_EQ(client->getConnState(), Client::ACTIVE);
|
323
|
-
if (client->currentRequest != NULL) {
|
324
|
-
Request *req = client->currentRequest;
|
325
|
-
if (req->httpState >= Request::COMPLETE
|
326
|
-
&& req->upgraded()
|
327
|
-
&& req->session != NULL
|
328
|
-
&& req->session->getGupid() == gupid)
|
329
|
-
{
|
330
|
-
if (getLogLevel() >= LVL_INFO) {
|
331
|
-
char clientName[32];
|
332
|
-
unsigned int size;
|
333
|
-
const LString *host;
|
334
|
-
StaticString hostStr;
|
335
|
-
|
336
|
-
size = getClientName(client, clientName, sizeof(clientName));
|
337
|
-
if (req->host != NULL && req->host->size > 0) {
|
338
|
-
host = psg_lstr_make_contiguous(req->host, req->pool);
|
339
|
-
hostStr = StaticString(host->start->data, host->size);
|
340
|
-
}
|
341
|
-
P_INFO("[" << getServerName() << "] Disconnecting client " <<
|
342
|
-
StaticString(clientName, size) << ": " <<
|
343
|
-
hostStr << StaticString(req->path.start->data, req->path.size));
|
344
|
-
}
|
345
|
-
refClient(client, __FILE__, __LINE__);
|
346
|
-
clients.push_back(client);
|
347
|
-
}
|
348
|
-
}
|
349
|
-
}
|
350
|
-
|
351
|
-
// Disconnect each eligible client.
|
352
|
-
v_end = clients.end();
|
353
|
-
for (v_it = clients.begin(); v_it != v_end; v_it++) {
|
354
|
-
client = *v_it;
|
355
|
-
Client *c = client;
|
356
|
-
disconnect(&client);
|
357
|
-
unrefClient(c, __FILE__, __LINE__);
|
358
|
-
}
|
359
|
-
}
|
360
|
-
|
361
|
-
virtual Json::Value getConfigAsJson() const {
|
362
|
-
Json::Value doc = ParentClass::getConfigAsJson();
|
363
|
-
doc["single_app_mode"] = singleAppMode;
|
364
|
-
doc["stat_throttle_rate"] = statThrottleRate;
|
365
|
-
doc["show_version_in_header"] = showVersionInHeader;
|
366
|
-
doc["data_buffer_dir"] = getContext()->defaultFileBufferedChannelConfig.bufferDir;
|
367
|
-
return doc;
|
368
|
-
}
|
369
|
-
|
370
|
-
virtual void configure(const Json::Value &doc) {
|
371
|
-
ParentClass::configure(doc);
|
372
|
-
if (doc.isMember("show_version_in_header")) {
|
373
|
-
showVersionInHeader = doc["show_version_in_header"].asBool();
|
374
|
-
}
|
375
|
-
if (doc.isMember("data_buffer_dir")) {
|
376
|
-
getContext()->defaultFileBufferedChannelConfig.bufferDir =
|
377
|
-
doc["data_buffer_dir"].asString();
|
378
|
-
}
|
379
|
-
}
|
380
|
-
|
381
|
-
virtual Json::Value inspectStateAsJson() const {
|
382
|
-
Json::Value doc = ParentClass::inspectStateAsJson();
|
383
|
-
if (turboCaching.isEnabled()) {
|
384
|
-
Json::Value subdoc;
|
385
|
-
subdoc["fetches"] = turboCaching.responseCache.getFetches();
|
386
|
-
subdoc["hits"] = turboCaching.responseCache.getHits();
|
387
|
-
subdoc["hit_ratio"] = turboCaching.responseCache.getHitRatio();
|
388
|
-
subdoc["stores"] = turboCaching.responseCache.getStores();
|
389
|
-
subdoc["store_successes"] = turboCaching.responseCache.getStoreSuccesses();
|
390
|
-
subdoc["store_success_ratio"] = turboCaching.responseCache.getStoreSuccessRatio();
|
391
|
-
doc["turbocaching"] = subdoc;
|
392
|
-
}
|
393
|
-
return doc;
|
394
|
-
}
|
395
|
-
|
396
|
-
virtual Json::Value inspectClientStateAsJson(const Client *client) const {
|
397
|
-
Json::Value doc = ParentClass::inspectClientStateAsJson(client);
|
398
|
-
doc["connected_at"] = timeToJson(client->connectedAt * 1000000.0);
|
399
|
-
return doc;
|
400
|
-
}
|
401
|
-
|
402
|
-
virtual Json::Value inspectRequestStateAsJson(const Request *req) const {
|
403
|
-
Json::Value doc = ParentClass::inspectRequestStateAsJson(req);
|
404
|
-
Json::Value flags;
|
405
|
-
const AppResponse *resp = &req->appResponse;
|
406
|
-
|
407
|
-
if (req->startedAt != 0) {
|
408
|
-
doc["started_at"] = timeToJson(req->startedAt * 1000000.0);
|
409
|
-
}
|
410
|
-
doc["state"] = req->getStateString();
|
411
|
-
if (req->stickySession) {
|
412
|
-
doc["sticky_session_id"] = req->options.stickySessionId;
|
413
|
-
}
|
414
|
-
doc["sticky_session"] = req->stickySession;
|
415
|
-
doc["session_checkout_try"] = req->sessionCheckoutTry;
|
416
|
-
|
417
|
-
flags["dechunk_response"] = req->dechunkResponse;
|
418
|
-
flags["request_body_buffering"] = req->requestBodyBuffering;
|
419
|
-
flags["https"] = req->https;
|
420
|
-
doc["flags"] = flags;
|
421
|
-
|
422
|
-
if (req->requestBodyBuffering) {
|
423
|
-
doc["body_bytes_buffered"] = byteSizeToJson(req->bodyBytesBuffered);
|
424
|
-
}
|
425
|
-
|
426
|
-
if (req->session != NULL) {
|
427
|
-
Json::Value &sessionDoc = doc["session"] = Json::Value(Json::objectValue);
|
428
|
-
const Session *session = req->session.get();
|
429
|
-
|
430
|
-
if (req->session->isClosed()) {
|
431
|
-
sessionDoc["closed"] = true;
|
432
|
-
} else {
|
433
|
-
sessionDoc["pid"] = (Json::Int64) session->getPid();
|
434
|
-
sessionDoc["gupid"] = session->getGupid().toString();
|
435
|
-
}
|
436
|
-
}
|
437
|
-
|
438
|
-
if (req->appResponseInitialized) {
|
439
|
-
doc["app_response_http_state"] = resp->getHttpStateString();
|
440
|
-
if (resp->begun()) {
|
441
|
-
doc["app_response_http_major"] = resp->httpMajor;
|
442
|
-
doc["app_response_http_minor"] = resp->httpMinor;
|
443
|
-
doc["app_response_want_keep_alive"] = resp->wantKeepAlive;
|
444
|
-
doc["app_response_body_type"] = resp->getBodyTypeString();
|
445
|
-
doc["app_response_body_fully_read"] = resp->bodyFullyRead();
|
446
|
-
doc["app_response_body_already_read"] = byteSizeToJson(
|
447
|
-
resp->bodyAlreadyRead);
|
448
|
-
if (resp->httpState != AppResponse::ERROR) {
|
449
|
-
if (resp->bodyType == AppResponse::RBT_CONTENT_LENGTH) {
|
450
|
-
doc["app_response_content_length"] = byteSizeToJson(
|
451
|
-
resp->aux.bodyInfo.contentLength);
|
452
|
-
} else if (resp->bodyType == AppResponse::RBT_CHUNKED) {
|
453
|
-
doc["app_response_end_chunk_reached"] = resp->aux.bodyInfo.endChunkReached;
|
454
|
-
}
|
455
|
-
} else {
|
456
|
-
doc["app_response_parse_error"] = ServerKit::getErrorDesc(resp->aux.parseError);
|
457
|
-
}
|
458
|
-
}
|
459
|
-
}
|
460
|
-
|
461
|
-
doc["app_source_state"] = req->appSource.inspectAsJson();
|
462
|
-
doc["app_sink_state"] = req->appSink.inspectAsJson();
|
463
|
-
|
464
|
-
return doc;
|
465
|
-
}
|
466
|
-
};
|
467
|
-
|
468
|
-
|
469
|
-
} // namespace Passenger
|
470
|
-
|
471
|
-
#endif /* _PASSENGER_REQUEST_HANDLER_H_ */
|