Chris@0: httpKernel = $http_kernel; Chris@0: $this->settings = $settings; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) { Chris@0: // Initialize proxy settings. Chris@0: static::setSettingsOnRequest($request, $this->settings); Chris@0: return $this->httpKernel->handle($request, $type, $catch); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Sets reverse proxy settings on Request object. Chris@0: * Chris@0: * @param \Symfony\Component\HttpFoundation\Request $request Chris@0: * A Request instance. Chris@0: * @param \Drupal\Core\Site\Settings $settings Chris@0: * The site settings. Chris@0: */ Chris@0: public static function setSettingsOnRequest(Request $request, Settings $settings) { Chris@0: // Initialize proxy settings. Chris@0: if ($settings->get('reverse_proxy', FALSE)) { Chris@0: $proxies = $settings->get('reverse_proxy_addresses', []); Chris@0: if (count($proxies) > 0) { Chris@18: $deprecated_settings = [ Chris@18: 'reverse_proxy_header' => Request::HEADER_X_FORWARDED_FOR, Chris@18: 'reverse_proxy_proto_header' => Request::HEADER_X_FORWARDED_PROTO, Chris@18: 'reverse_proxy_host_header' => Request::HEADER_X_FORWARDED_HOST, Chris@18: 'reverse_proxy_port_header' => Request::HEADER_X_FORWARDED_PORT, Chris@18: 'reverse_proxy_forwarded_header' => Request::HEADER_FORWARDED, Chris@18: ]; Chris@18: Chris@18: $all = $settings->getAll(); Chris@18: // Set the default value. This is the most relaxed setting possible and Chris@18: // not recommended for production. Chris@18: $trusted_header_set = Request::HEADER_X_FORWARDED_ALL | Request::HEADER_FORWARDED; Chris@18: foreach ($deprecated_settings as $deprecated_setting => $bit_value) { Chris@18: if (array_key_exists($deprecated_setting, $all)) { Chris@18: @trigger_error(sprintf("The '%s' setting in settings.php is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use the 'reverse_proxy_trusted_headers' setting instead. See https://www.drupal.org/node/3030558", $deprecated_setting), E_USER_DEPRECATED); Chris@18: $request::setTrustedHeaderName($bit_value, $all[$deprecated_setting]); Chris@18: if ($all[$deprecated_setting] === NULL) { Chris@18: // If the value is NULL do not trust the header. Chris@18: $trusted_header_set &= ~$bit_value; Chris@18: } Chris@18: } Chris@18: } Chris@18: Chris@18: $request::setTrustedProxies( Chris@18: $proxies, Chris@18: $settings->get('reverse_proxy_trusted_headers', $trusted_header_set) Chris@18: ); Chris@0: } Chris@0: } Chris@0: } Chris@0: Chris@0: }