Skip to content

Commit

Permalink
DEP Use symfony for IPUtils
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Aug 19, 2024
1 parent c27f66b commit 16a8132
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 4 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"symfony/config": "^6.1",
"symfony/dom-crawler": "^6.1",
"symfony/filesystem": "^6.1",
"symfony/http-foundation": "^6.1",
"symfony/mailer": "^6.1",
"symfony/mime": "^6.1",
"symfony/translation": "^6.1",
Expand Down
2 changes: 1 addition & 1 deletion src/Control/Middleware/TrustedProxyMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace SilverStripe\Control\Middleware;

use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\Util\IPUtils;
use Symfony\Component\HttpFoundation\IpUtils;

/**
* This middleware will rewrite headers that provide IP and host details from an upstream proxy.
Expand Down
7 changes: 7 additions & 0 deletions src/Control/Util/IPUtils.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,13 @@

namespace SilverStripe\Control\Util;

use SilverStripe\Dev\Deprecation;

/**
* Http utility functions.
*
* @author Fabien Potencier <[email protected]>
* @deprecated 5.3.0 Use Symfony\Component\HttpFoundation\IpUtils instead
*/
class IPUtils
{
Expand All @@ -37,6 +40,7 @@ private function __construct()
*/
public static function checkIP($requestIP, $ips)
{
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::checkIP() instead');
if (!is_array($ips)) {
$ips = [$ips];
}
Expand All @@ -62,6 +66,7 @@ public static function checkIP($requestIP, $ips)
*/
public static function checkIP4($requestIP, $ip)
{
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::checkIP4() instead');
if (!filter_var($requestIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
return false;
}
Expand Down Expand Up @@ -100,6 +105,7 @@ public static function checkIP4($requestIP, $ip)
*/
public static function checkIP6($requestIP, $ip)
{
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::checkIP6() instead');
if (!((extension_loaded('sockets') && defined('AF_INET6')) || @inet_pton('::1'))) {
throw new \RuntimeException('Unable to check IPv6. Check that PHP was not compiled with option "disable-ipv6".');
}
Expand Down Expand Up @@ -141,6 +147,7 @@ public static function checkIP6($requestIP, $ip)
*/
public static function anonymize(string $ip): string
{
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::anonymize() instead');
$wrappedIPv6 = false;
if (str_starts_with($ip, '[') && str_ends_with($ip, ']')) {
$wrappedIPv6 = true;
Expand Down
13 changes: 10 additions & 3 deletions tests/php/Control/IPUtilsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Control\Util\IPUtils;
use SilverStripe\Dev\Deprecation;

class IPUtilsTest extends SapphireTest
{
Expand All @@ -21,7 +22,9 @@ class IPUtilsTest extends SapphireTest
*/
public function testIPv4($matches, $remoteAddr, $cidr)
{
$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
Deprecation::withNoReplacement(function () use ($matches, $remoteAddr, $cidr) {
$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
});
}

public function iPv4Provider()
Expand Down Expand Up @@ -51,7 +54,9 @@ public function testIPv6($matches, $remoteAddr, $cidr)
$this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".');
}

$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
Deprecation::withNoReplacement(function () use ($matches, $remoteAddr, $cidr) {
$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
});
}

public function iPv6Provider()
Expand Down Expand Up @@ -80,6 +85,8 @@ public function testAnIPv6WithOptionDisabledIPv6()
$this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".');
}

IPUtils::checkIP('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65');
Deprecation::withNoReplacement(function () {
IPUtils::checkIP('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65');
});
}
}

0 comments on commit 16a8132

Please sign in to comment.