adaptions :-)
This commit is contained in:
parent
12ba37e8d2
commit
5bf5b5e6c9
3 changed files with 12 additions and 7 deletions
|
@ -32,8 +32,13 @@ use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||||
*/
|
*/
|
||||||
class Request
|
class Request
|
||||||
{
|
{
|
||||||
/** @var string the default possible headers, which could contain the client IP */
|
/**
|
||||||
const ORDERED_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR';
|
* A comma separated list of default headers that could contain the client IP in a proxy request
|
||||||
|
* Beware: This list is ordered
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const DEFAULT_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR';
|
||||||
|
|
||||||
/** @var string The remote IP address of the current request */
|
/** @var string The remote IP address of the current request */
|
||||||
protected $remoteAddress;
|
protected $remoteAddress;
|
||||||
|
@ -108,7 +113,7 @@ class Request
|
||||||
* specified in this header will be returned instead.
|
* specified in this header will be returned instead.
|
||||||
*
|
*
|
||||||
* @param IManageConfigValues $config
|
* @param IManageConfigValues $config
|
||||||
* @param array $server
|
* @param array $server The $_SERVER array
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
@ -118,7 +123,7 @@ class Request
|
||||||
$trustedProxies = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'trusted_proxies', ''));
|
$trustedProxies = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'trusted_proxies', ''));
|
||||||
|
|
||||||
if (\is_array($trustedProxies) && $this->isTrustedProxy($trustedProxies, $remoteAddress)) {
|
if (\is_array($trustedProxies) && $this->isTrustedProxy($trustedProxies, $remoteAddress)) {
|
||||||
$forwardedForHeaders = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'forwarded_for_headers')) ?? static::ORDERED_FORWARD_FOR_HEADER;
|
$forwardedForHeaders = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'forwarded_for_headers', static::DEFAULT_FORWARD_FOR_HEADER));
|
||||||
|
|
||||||
foreach ($forwardedForHeaders as $header) {
|
foreach ($forwardedForHeaders as $header) {
|
||||||
if (isset($server[$header])) {
|
if (isset($server[$header])) {
|
||||||
|
|
|
@ -120,7 +120,7 @@ class RequestTest extends MockedTest
|
||||||
{
|
{
|
||||||
$configClass = \Mockery::mock(IManageConfigValues::class);
|
$configClass = \Mockery::mock(IManageConfigValues::class);
|
||||||
$configClass->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn($config['trusted_proxies']);
|
$configClass->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn($config['trusted_proxies']);
|
||||||
$configClass->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn($config['forwarded_for_headers']);
|
$configClass->shouldReceive('get')->with('proxy', 'forwarded_for_headers', Request::DEFAULT_FORWARD_FOR_HEADER)->andReturn($config['forwarded_for_headers']);
|
||||||
|
|
||||||
$request = new Request($configClass, $server);
|
$request = new Request($configClass, $server);
|
||||||
|
|
||||||
|
|
|
@ -252,7 +252,7 @@ class CookieTest extends MockedTest
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::ORDERED_FORWARD_FOR_HEADER);
|
$this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::DEFAULT_FORWARD_FOR_HEADER);
|
||||||
|
|
||||||
|
|
||||||
$request = new Request($this->config, $serverArray);
|
$request = new Request($this->config, $serverArray);
|
||||||
|
@ -279,7 +279,7 @@ class CookieTest extends MockedTest
|
||||||
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
$this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once();
|
||||||
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
$this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
$this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once();
|
||||||
$this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::ORDERED_FORWARD_FOR_HEADER);
|
$this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::DEFAULT_FORWARD_FOR_HEADER);
|
||||||
|
|
||||||
$request = new Request($this->config, $serverArray);
|
$request = new Request($this->config, $serverArray);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue