diff --git a/libraries/src/Log/Logger/FormattedtextLogger.php b/libraries/src/Log/Logger/FormattedtextLogger.php index 731714d0cd1a4..159f8182bbfd7 100644 --- a/libraries/src/Log/Logger/FormattedtextLogger.php +++ b/libraries/src/Log/Logger/FormattedtextLogger.php @@ -12,6 +12,7 @@ use Joomla\CMS\Log\LogEntry; use Joomla\CMS\Log\Logger; +use Joomla\Utilities\IpHelper; \JLoader::import('joomla.filesystem.file'); \JLoader::import('joomla.filesystem.folder'); @@ -191,18 +192,11 @@ protected function formatLine(LogEntry $entry) // Set some default field values if not already set. if (!isset($entry->clientIP)) { - // Check for proxies as well. - if (isset($_SERVER['REMOTE_ADDR'])) - { - $entry->clientIP = $_SERVER['REMOTE_ADDR']; - } - elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $entry->clientIP = $_SERVER['HTTP_X_FORWARDED_FOR']; - } - elseif (isset($_SERVER['HTTP_CLIENT_IP'])) + $ip = IpHelper::getIp(); + + if ($ip !== '') { - $entry->clientIP = $_SERVER['HTTP_CLIENT_IP']; + $entry->clientIP = $ip; } } diff --git a/tests/unit/suites/libraries/joomla/log/loggers/JLogLoggerW3CTest.php b/tests/unit/suites/libraries/joomla/log/loggers/JLogLoggerW3CTest.php index 5163f74b2d2f1..316c16ee7614f 100644 --- a/tests/unit/suites/libraries/joomla/log/loggers/JLogLoggerW3CTest.php +++ b/tests/unit/suites/libraries/joomla/log/loggers/JLogLoggerW3CTest.php @@ -7,6 +7,8 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ +use Joomla\Utilities\IpHelper; + require_once __DIR__ . '/stubs/w3c/inspector.php'; /** @@ -30,6 +32,7 @@ public function testAddEntry() 'text_file_path' => JPATH_TESTS . '/tmp', ); $logger = new JLogLoggerW3CInspector($config); + $ip = IpHelper::getIp(); // Remove the log file if it exists. @ unlink($logger->path); @@ -41,7 +44,7 @@ public function testAddEntry() 'Line: ' . __LINE__ ); - $_SERVER['REMOTE_ADDR'] = '192.168.0.1'; + IpHelper::setIp('192.168.0.1'); $logger->addEntry(new JLogEntry('Testing 02', JLog::ERROR, null, '1982-12-15')); $this->assertEquals( @@ -50,7 +53,7 @@ public function testAddEntry() 'Line: ' . __LINE__ ); - $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; + IpHelper::setIp('127.0.0.1'); $logger->addEntry(new JLogEntry('Testing3', JLog::EMERGENCY, 'deprecated', '1980-04-18')); $this->assertEquals( @@ -59,6 +62,9 @@ public function testAddEntry() 'Line: ' . __LINE__ ); + // Reset IP + IpHelper::setIp($ip); + // Remove the log file if it exists. @ unlink($logger->path); }