/** * Does IP Address Match? * * @param \Darsyn\IP\IP $clientIp * @return boolean */ protected function doesIpAddressMatch(IP $clientIp) { foreach ($this->ipAddresses as $ipAddress) { try { $cidr = 128; if (preg_match('#^(.+)/([1-9]\\d{0,2})$#', $ipAddress, $matches)) { $ipAddress = $matches[1]; $cidr = (int) $matches[2]; } $ipAddress = new IP($ipAddress); if ($ipAddress->inRange($clientIp, min($ipAddress->isVersion(IP::VERSION_4) ? $cidr + 96 : $cidr, 128))) { return true; } } catch (\InvalidArgumentException $e) { continue; } } return false; }
/** * Test: Get and Is Version * * @test * @dataProvider ipVersions * @access public * @param string $ip * @param integer $version * @return void */ public function getAndIsVersion($ip, $version) { $ip = new IP($ip); $notVersion = $version === 4 ? 6 : 4; $this->assertSame($version, $ip->getVersion()); $this->assertTrue($ip->isVersion($version)); $this->assertFalse($ip->isVersion($notVersion)); }