The WebProcessor now forwards the client IP

This commit is contained in:
Baptiste Lafontaine 2016-02-25 16:07:24 +01:00 committed by Fabien Potencier
parent baf35cf3c0
commit e740852937
2 changed files with 29 additions and 7 deletions

View File

@ -32,6 +32,7 @@ class WebProcessor extends BaseWebProcessor
{ {
if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
$this->serverData = $event->getRequest()->server->all(); $this->serverData = $event->getRequest()->server->all();
$this->serverData['REMOTE_ADDR'] = $event->getRequest()->getClientIp();
} }
} }
} }

View File

@ -34,6 +34,23 @@ class WebProcessorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']); $this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']);
} }
public function testUseRequestClientIp()
{
Request::setTrustedProxies(['192.168.0.1']);
list($event, $server) = $this->createRequestEvent(array('X_FORWARDED_FOR' => '192.168.0.2'));
$processor = new WebProcessor();
$processor->onKernelRequest($event);
$record = $processor($this->getRecord());
$this->assertCount(5, $record['extra']);
$this->assertEquals($server['REQUEST_URI'], $record['extra']['url']);
$this->assertEquals($server['X_FORWARDED_FOR'], $record['extra']['ip']);
$this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']);
$this->assertEquals($server['SERVER_NAME'], $record['extra']['server']);
$this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']);
}
public function testCanBeConstructedWithExtraFields() public function testCanBeConstructedWithExtraFields()
{ {
if (!$this->isExtraFieldsSupported()) { if (!$this->isExtraFieldsSupported()) {
@ -54,18 +71,22 @@ class WebProcessorTest extends \PHPUnit_Framework_TestCase
/** /**
* @return array * @return array
*/ */
private function createRequestEvent() private function createRequestEvent($additionalServerParameters = array())
{ {
$server = array( $server = array_merge(
'REQUEST_URI' => 'A', array(
'REMOTE_ADDR' => 'B', 'REQUEST_URI' => 'A',
'REQUEST_METHOD' => 'C', 'REMOTE_ADDR' => '192.168.0.1',
'SERVER_NAME' => 'D', 'REQUEST_METHOD' => 'C',
'HTTP_REFERER' => 'E', 'SERVER_NAME' => 'D',
'HTTP_REFERER' => 'E',
),
$additionalServerParameters
); );
$request = new Request(); $request = new Request();
$request->server->replace($server); $request->server->replace($server);
$request->headers->replace($server);
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
->disableOriginalConstructor() ->disableOriginalConstructor()