static function getBaseEnd($ip, $rangelist = null) { if (isIPV6($ip)) { $comp = expandIP6ToArray($ip); $last = array_pop($comp); $base = self::createDottedRevedIPV6($comp[6]) . "."; $base .= self::createDottedRevedIPV6($comp[5]) . "."; $base .= self::createDottedRevedIPV6($comp[4]) . "."; $base .= self::createDottedRevedIPV6($comp[3]) . "."; $base .= self::createDottedRevedIPV6($comp[2]) . "."; $base .= self::createDottedRevedIPV6($comp[1]) . "."; $base .= self::createDottedRevedIPV6($comp[0]) . "."; if ($rangelist && false) { // FIXME: OA: The whole rangelist must be reworked // I dont care it now, clients cannot declare rangelists foreach ($rangelist as $v) { list($rb, $rf, $rl) = $v; if ($rb === $base && $last >= $rf && $last <= $rl) { $base = "{$rf}-{$rl}.{$base}"; break; } } } } else { $comp = explode(".", $ip); $last = array_pop($comp); $base = "{$comp['2']}.{$comp['1']}.{$comp['0']}"; if ($rangelist) { foreach ($rangelist as $v) { list($rb, $rf, $rl) = $v; if ($rb === $base && $last >= $rf && $last <= $rl) { $base = "{$rf}-{$rl}.{$base}"; break; } } } } return array($base, $last); }
function validate_ipaddressV6($ip) { $ip = strtoupper($ip); $ind = expandIP6ToArray($ip); $d = 0; $c = 0; if (count($ind) > 8) { throw new lxException('Invalid IP address: ' . $ip . ' Not enough parts', $variable); return 0; } foreach ($ind as $in) { $valid = preg_match("/[0_9ABCDEF]*/", $in); if (!$valid) { throw new lxException('Invalid IP address: ' . $ip . ' Contains not hexa characters', $variable); return 0; } } return 1; }