Simplify rcube_utils::check_ip()

pull/291/head
Aleksander Machniak 9 years ago
parent 6b31846c43
commit 7a42173a16

@ -143,39 +143,7 @@ class rcube_utils
*/
public static function check_ip($ip)
{
// IPv6, but there's no build-in IPv6 support
if (strpos($ip, ':') !== false && !defined('AF_INET6')) {
$parts = explode(':', $ip);
$count = count($parts);
if ($count > 8 || $count < 2) {
return false;
}
foreach ($parts as $idx => $part) {
$length = strlen($part);
if (!$length) {
// there can be only one ::
if ($found_empty && $idx > 2) {
return false;
}
$found_empty = true;
}
// last part can be an IPv4 address
else if ($idx == $count - 1) {
if (!preg_match('/^[0-9a-f]{1,4}$/i', $part)) {
return @inet_pton($part) !== false;
}
}
else if (!preg_match('/^[0-9a-f]{1,4}$/i', $part)) {
return false;
}
}
return true;
}
return @inet_pton($ip) !== false;
return filter_var($ip, FILTER_VALIDATE_IP) !== false;
}
/**

@ -95,6 +95,8 @@ class Framework_Utils extends PHPUnit_Framework_TestCase
array('::1'),
array('::1.2.3.4'),
array('2001:2d12:c4fe:5afe::1'),
array('2001::'),
array('2001::1'),
);
}
@ -110,7 +112,10 @@ class Framework_Utils extends PHPUnit_Framework_TestCase
array('1.1.1.1.1'),
array('::1.2.3.260'),
array('::1.0'),
array(':::1'),
array('2001:::1'),
array('2001::c4fe:5afe::1'),
array(':c4fe:5afe:1'),
);
}

Loading…
Cancel
Save