Пример #1
0
 /**
  * @group Core
  * @group IP
  * @dataProvider getIpsInRangeData
  */
 public function testIsIpInRange($range, $test)
 {
     foreach ($test as $ip => $expected) {
         // range as a string
         $this->assertEquals($expected, Piwik_IP::isIpInRange(Piwik_IP::P2N($ip), array($range)), "{$ip} in {$range}");
         // range as an array(low, high)
         $aRange = Piwik_IP::getIpsForRange($range);
         $aRange[0] = Piwik_IP::N2P($aRange[0]);
         $aRange[1] = Piwik_IP::N2P($aRange[1]);
         $this->assertEquals($expected, Piwik_IP::isIpInRange(Piwik_IP::P2N($ip), array($aRange)), "{$ip} in {$range}");
     }
 }
Пример #2
0
	/**
	 * Tests if the IP is a valid IP, allowing wildcards, except in the first octet.
	 * Wildcards can only be used from right to left, ie. 1.1.*.* is allowed, but 1.1.*.1 is not.
	 * 
	 * @param string $ip IP address
	 * @return bool
	 */
	private function isValidIp( $ip )
	{
		return Piwik_IP::getIpsForRange($ip) !== false;
	}
Пример #3
0
 function test_isIpInRange()
 {
     $tests = array('192.168.1.10' => array('192.168.1.9' => false, '192.168.1.10' => true, '192.168.1.11' => false, '::ffff:192.168.1.10' => false), '::ffff:192.168.1.10' => array('::ffff:192.168.1.9' => false, '::ffff:192.168.1.10' => true, '::ffff:c0a8:010a' => true, '0000:0000:0000:0000:0000:ffff:c0a8:010a' => true, '::ffff:192.168.1.11' => false, '192.168.1.10' => false), '192.168.1.10/32' => array('192.168.1.9' => false, '192.168.1.10' => true, '192.168.1.11' => false), '192.168.1.10/31' => array('192.168.1.9' => false, '192.168.1.10' => true, '192.168.1.11' => true, '192.168.1.12' => false), '192.168.1.128/25' => array('192.168.1.127' => false, '192.168.1.128' => true, '192.168.1.255' => true, '192.168.2.0' => false), '192.168.1.10/24' => array('192.168.0.255' => false, '192.168.1.0' => true, '192.168.1.1' => true, '192.168.1.2' => true, '192.168.1.3' => true, '192.168.1.4' => true, '192.168.1.7' => true, '192.168.1.8' => true, '192.168.1.15' => true, '192.168.1.16' => true, '192.168.1.31' => true, '192.168.1.32' => true, '192.168.1.63' => true, '192.168.1.64' => true, '192.168.1.127' => true, '192.168.1.128' => true, '192.168.1.255' => true, '192.168.2.0' => false), '192.168.1.*' => array('192.168.0.255' => false, '192.168.1.0' => true, '192.168.1.1' => true, '192.168.1.2' => true, '192.168.1.3' => true, '192.168.1.4' => true, '192.168.1.7' => true, '192.168.1.8' => true, '192.168.1.15' => true, '192.168.1.16' => true, '192.168.1.31' => true, '192.168.1.32' => true, '192.168.1.63' => true, '192.168.1.64' => true, '192.168.1.127' => true, '192.168.1.128' => true, '192.168.1.255' => true, '192.168.2.0' => false));
     // testing with a single range
     foreach ($tests as $range => $test) {
         foreach ($test as $ip => $expected) {
             // range as a string
             $this->assertEqual(Piwik_IP::isIpInRange(Piwik_IP::P2N($ip), array($range)), $expected, "{$ip} in {$range}");
             // range as an array(low, high)
             $aRange = Piwik_IP::getIpsForRange($range);
             $aRange[0] = Piwik_IP::N2P($aRange[0]);
             $aRange[1] = Piwik_IP::N2P($aRange[1]);
             $this->assertEqual(Piwik_IP::isIpInRange(Piwik_IP::P2N($ip), array($aRange)), $expected, "{$ip} in {$range}");
         }
     }
 }