Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
20 / 20 |
ReverseProxyMiddleware | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
5 | |
100.00% |
20 / 20 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
handle | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
setSettingsOnRequest | |
100.00% |
1 / 1 |
3 | |
100.00% |
15 / 15 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\StackMiddleware\ReverseProxyMiddleware. | |
*/ | |
namespace Drupal\Core\StackMiddleware; | |
use Drupal\Core\Site\Settings; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpKernel\HttpKernelInterface; | |
/** | |
* Provides support for reverse proxies. | |
*/ | |
class ReverseProxyMiddleware implements HttpKernelInterface { | |
/** | |
* The decorated kernel. | |
* | |
* @var \Symfony\Component\HttpKernel\HttpKernelInterface | |
*/ | |
protected $httpKernel; | |
/** | |
* The site settings. | |
* | |
* @var \Drupal\Core\Site\Settings | |
*/ | |
protected $settings; | |
/** | |
* Constructs a ReverseProxyMiddleware object. | |
* | |
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel | |
* The decorated kernel. | |
* @param \Drupal\Core\Site\Settings $settings | |
* The site settings. | |
*/ | |
public function __construct(HttpKernelInterface $http_kernel, Settings $settings) { | |
$this->httpKernel = $http_kernel; | |
$this->settings = $settings; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) { | |
// Initialize proxy settings. | |
static::setSettingsOnRequest($request, $this->settings); | |
return $this->httpKernel->handle($request, $type, $catch); | |
} | |
/** | |
* Sets reverse proxy settings on Request object. | |
* | |
* @param \Symfony\Component\HttpFoundation\Request $request | |
* A Request instance. | |
* @param \Drupal\Core\Site\Settings $settings | |
* The site settings. | |
*/ | |
public static function setSettingsOnRequest(Request $request, Settings $settings) { | |
// Initialize proxy settings. | |
if ($settings->get('reverse_proxy', FALSE)) { | |
$ip_header = $settings->get('reverse_proxy_header', 'X_FORWARDED_FOR'); | |
$request::setTrustedHeaderName($request::HEADER_CLIENT_IP, $ip_header); | |
$proto_header = $settings->get('reverse_proxy_proto_header', 'X_FORWARDED_PROTO'); | |
$request::setTrustedHeaderName($request::HEADER_CLIENT_PROTO, $proto_header); | |
$host_header = $settings->get('reverse_proxy_host_header', 'X_FORWARDED_HOST'); | |
$request::setTrustedHeaderName($request::HEADER_CLIENT_HOST, $host_header); | |
$port_header = $settings->get('reverse_proxy_port_header', 'X_FORWARDED_PORT'); | |
$request::setTrustedHeaderName($request::HEADER_CLIENT_PORT, $port_header); | |
$forwarded_header = $settings->get('reverse_proxy_forwarded_header', 'FORWARDED'); | |
$request::setTrustedHeaderName($request::HEADER_FORWARDED, $forwarded_header); | |
$proxies = $settings->get('reverse_proxy_addresses', array()); | |
if (count($proxies) > 0) { | |
$request::setTrustedProxies($proxies); | |
} | |
} | |
} | |
} |