Thanks to visit codestin.com
Credit goes to github.com

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)