Skip to content

Commit e740852

Browse files
magnetikfabpot
authored andcommitted
The WebProcessor now forwards the client IP
1 parent baf35cf commit e740852

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/Symfony/Bridge/Monolog/Processor/WebProcessor.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public function onKernelRequest(GetResponseEvent $event)
3232
{
3333
if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
3434
$this->serverData = $event->getRequest()->server->all();
35+
$this->serverData['REMOTE_ADDR'] = $event->getRequest()->getClientIp();
3536
}
3637
}
3738
}

src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,23 @@ public function testUsesRequestServerData()
3434
$this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']);
3535
}
3636

37+
public function testUseRequestClientIp()
38+
{
39+
Request::setTrustedProxies(['192.168.0.1']);
40+
list($event, $server) = $this->createRequestEvent(array('X_FORWARDED_FOR' => '192.168.0.2'));
41+
42+
$processor = new WebProcessor();
43+
$processor->onKernelRequest($event);
44+
$record = $processor($this->getRecord());
45+
46+
$this->assertCount(5, $record['extra']);
47+
$this->assertEquals($server['REQUEST_URI'], $record['extra']['url']);
48+
$this->assertEquals($server['X_FORWARDED_FOR'], $record['extra']['ip']);
49+
$this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']);
50+
$this->assertEquals($server['SERVER_NAME'], $record['extra']['server']);
51+
$this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']);
52+
}
53+
3754
public function testCanBeConstructedWithExtraFields()
3855
{
3956
if (!$this->isExtraFieldsSupported()) {
@@ -54,18 +71,22 @@ public function testCanBeConstructedWithExtraFields()
5471
/**
5572
* @return array
5673
*/
57-
private function createRequestEvent()
74+
private function createRequestEvent($additionalServerParameters = array())
5875
{
59-
$server = array(
60-
'REQUEST_URI' => 'A',
61-
'REMOTE_ADDR' => 'B',
62-
'REQUEST_METHOD' => 'C',
63-
'SERVER_NAME' => 'D',
64-
'HTTP_REFERER' => 'E',
76+
$server = array_merge(
77+
array(
78+
'REQUEST_URI' => 'A',
79+
'REMOTE_ADDR' => '192.168.0.1',
80+
'REQUEST_METHOD' => 'C',
81+
'SERVER_NAME' => 'D',
82+
'HTTP_REFERER' => 'E',
83+
),
84+
$additionalServerParameters
6585
);
6686

6787
$request = new Request();
6888
$request->server->replace($server);
89+
$request->headers->replace($server);
6990

7091
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
7192
->disableOriginalConstructor()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy