Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[HttpFoundation] refactored code to avoid code duplication

  • Loading branch information...
commit d0b6550e4d03b39f5c835b35c7de15b290fdbf55 1 parent b4e7eb9
Fabien Potencier fabpot authored
20 IpUtils.php
View
@@ -26,18 +26,26 @@ private function __construct() {}
/**
* Validates an IPv4 or IPv6 address.
*
- * @param string $requestIp
- * @param string $ip
+ * @param string $requestIp
+ * @param string|array $ips
*
* @return boolean Whether the IP is valid
*/
- public static function checkIp($requestIp, $ip)
+ public static function checkIp($requestIp, $ips)
{
- if (false !== strpos($requestIp, ':')) {
- return self::checkIp6($requestIp, $ip);
+ if (!is_array($ips)) {
+ $ips = array($ips);
+ }
+
+ $method = false !== strpos($requestIp, ':') ? 'checkIp6': 'checkIp4';
+
+ foreach ($ips as $ip) {
+ if (self::$method($requestIp, $ip)) {
+ return true;
+ }
}
- return self::checkIp4($requestIp, $ip);
+ return false;
}
/**
8 Request.php
View
@@ -690,12 +690,10 @@ public function getClientIps()
$ip = $clientIps[0];
foreach ($clientIps as $key => $clientIp) {
- foreach ($trustedProxies as $trustedProxy) {
- if (IpUtils::checkIp($clientIp, $trustedProxy)) {
- unset($clientIps[$key]);
+ if (IpUtils::checkIp($clientIp, $trustedProxies)) {
+ unset($clientIps[$key]);
- continue 2;
- }
+ continue;
}
}
6 RequestMatcher.php
View
@@ -153,10 +153,8 @@ public function matches(Request $request)
return false;
}
- foreach ($this->ips as $ip) {
- if (IpUtils::checkIp($request->getClientIp(), $ip)) {
- return true;
- }
+ if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
+ return true;
}
// Note to future implementors: add additional checks above the
6 Tests/IpUtilsTest.php
View
@@ -31,6 +31,9 @@ public function testIpv4Provider()
array(true, '192.168.1.1', '192.168.1.0/24'),
array(false, '192.168.1.1', '1.2.3.4/1'),
array(false, '192.168.1.1', '192.168.1/33'),
+ array(true, '192.168.1.1', array('1.2.3.4/1', '192.168.1.0/24')),
+ array(true, '192.168.1.1', array('192.168.1.0/24', '1.2.3.4/1')),
+ array(false, '192.168.1.1', array('1.2.3.4/1', '4.3.2.1/1')),
);
}
@@ -54,6 +57,9 @@ public function testIpv6Provider()
array(false, '2a01:198:603:0:396e:4789:8e99:890f', '::1'),
array(true, '0:0:0:0:0:0:0:1', '::1'),
array(false, '0:0:603:0:396e:4789:8e99:0001', '::1'),
+ array(true, '2a01:198:603:0:396e:4789:8e99:890f', array('::1', '2a01:198:603:0::/65')),
+ array(true, '2a01:198:603:0:396e:4789:8e99:890f', array('2a01:198:603:0::/65', '::1')),
+ array(false, '2a01:198:603:0:396e:4789:8e99:890f', array('::1', '1a01:198:603:0::/65')),
);
}
Please sign in to comment.
Something went wrong with that request. Please try again.