Merge pull request #11344 from creative-commoners/pulls/5/use-symfony

DEP Use symfony for IPUtils
This commit is contained in:
Guy Sartorelli 2024-08-20 10:14:28 +12:00 committed by GitHub
commit bf46ff9b63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 19 additions and 4 deletions

View File

@ -44,6 +44,7 @@
"symfony/config": "^6.1", "symfony/config": "^6.1",
"symfony/dom-crawler": "^6.1", "symfony/dom-crawler": "^6.1",
"symfony/filesystem": "^6.1", "symfony/filesystem": "^6.1",
"symfony/http-foundation": "^6.1",
"symfony/mailer": "^6.1", "symfony/mailer": "^6.1",
"symfony/mime": "^6.1", "symfony/mime": "^6.1",
"symfony/translation": "^6.1", "symfony/translation": "^6.1",

View File

@ -3,7 +3,7 @@
namespace SilverStripe\Control\Middleware; namespace SilverStripe\Control\Middleware;
use SilverStripe\Control\HTTPRequest; 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. * This middleware will rewrite headers that provide IP and host details from an upstream proxy.

View File

@ -11,10 +11,13 @@
namespace SilverStripe\Control\Util; namespace SilverStripe\Control\Util;
use SilverStripe\Dev\Deprecation;
/** /**
* Http utility functions. * Http utility functions.
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
* @deprecated 5.3.0 Use Symfony\Component\HttpFoundation\IpUtils instead
*/ */
class IPUtils class IPUtils
{ {
@ -37,6 +40,7 @@ class IPUtils
*/ */
public static function checkIP($requestIP, $ips) public static function checkIP($requestIP, $ips)
{ {
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::checkIP() instead');
if (!is_array($ips)) { if (!is_array($ips)) {
$ips = [$ips]; $ips = [$ips];
} }
@ -62,6 +66,7 @@ class IPUtils
*/ */
public static function checkIP4($requestIP, $ip) 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)) { if (!filter_var($requestIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
return false; return false;
} }
@ -100,6 +105,7 @@ class IPUtils
*/ */
public static function checkIP6($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'))) { 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".'); throw new \RuntimeException('Unable to check IPv6. Check that PHP was not compiled with option "disable-ipv6".');
} }
@ -141,6 +147,7 @@ class IPUtils
*/ */
public static function anonymize(string $ip): string public static function anonymize(string $ip): string
{ {
Deprecation::notice('5.3.0', 'Use Symfony\Component\HttpFoundation\IpUtils::anonymize() instead');
$wrappedIPv6 = false; $wrappedIPv6 = false;
if (str_starts_with($ip, '[') && str_ends_with($ip, ']')) { if (str_starts_with($ip, '[') && str_ends_with($ip, ']')) {
$wrappedIPv6 = true; $wrappedIPv6 = true;

View File

@ -13,6 +13,7 @@ namespace SilverStripe\Control\Tests;
*/ */
use SilverStripe\Dev\SapphireTest; use SilverStripe\Dev\SapphireTest;
use SilverStripe\Control\Util\IPUtils; use SilverStripe\Control\Util\IPUtils;
use SilverStripe\Dev\Deprecation;
class IPUtilsTest extends SapphireTest class IPUtilsTest extends SapphireTest
{ {
@ -21,7 +22,9 @@ class IPUtilsTest extends SapphireTest
*/ */
public function testIPv4($matches, $remoteAddr, $cidr) public function testIPv4($matches, $remoteAddr, $cidr)
{ {
Deprecation::withNoReplacement(function () use ($matches, $remoteAddr, $cidr) {
$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr)); $this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
});
} }
public function iPv4Provider() public function iPv4Provider()
@ -51,7 +54,9 @@ class IPUtilsTest extends SapphireTest
$this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".'); $this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".');
} }
Deprecation::withNoReplacement(function () use ($matches, $remoteAddr, $cidr) {
$this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr)); $this->assertSame($matches, IPUtils::checkIP($remoteAddr, $cidr));
});
} }
public function iPv6Provider() public function iPv6Provider()
@ -80,6 +85,8 @@ class IPUtilsTest extends SapphireTest
$this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".'); $this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".');
} }
Deprecation::withNoReplacement(function () {
IPUtils::checkIP('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'); IPUtils::checkIP('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65');
});
} }
} }