/**
  * Whitelist specific IPs. Each argument is a single IP.
  * Not passing any argument will output the current whitelist.
  *
  * @return int|null|void
  */
 public function whitelist()
 {
     if ($this->params['remove']) {
         $this->Maintenance->clearWhitelist();
     }
     $ips = $this->args;
     if (!empty($ips)) {
         foreach ($ips as $ip) {
             if (!Validation::ip($ip)) {
                 $this->abort($ip . ' is not a valid IP address.');
             }
         }
         if ($this->params['remove']) {
             $this->Maintenance->clearWhitelist($ips);
         } else {
             $this->Maintenance->whitelist($ips, $this->params['debug']);
         }
         $this->out('Done!', 2);
     }
     $this->out('Current whitelist:');
     $ips = $this->Maintenance->whitelist();
     if (!$ips) {
         $this->out('n/a');
     } else {
         $this->out($ips);
     }
 }
Esempio n. 2
0
 /**
  * testIp v6
  *
  * @return void
  */
 public function testIpv6()
 {
     $this->assertTrue(Validation::ip('2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:db8:85a3:0:0:8a2e:370:7334', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:db8:85a3::8a2e:370:7334', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:0000:0000:0000:0000:1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:0000:0000:0000::1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:0:0:0:0:1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:0:0::1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8::1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:db8::1428:57ab', 'IPv6'));
     $this->assertTrue(Validation::ip('0000:0000:0000:0000:0000:0000:0000:0001', 'IPv6'));
     $this->assertTrue(Validation::ip('::1', 'IPv6'));
     $this->assertTrue(Validation::ip('::ffff:12.34.56.78', 'IPv6'));
     $this->assertTrue(Validation::ip('::ffff:0c22:384e', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:1234:0000:0000:0000:0000:0000', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:0db8:1234:ffff:ffff:ffff:ffff:ffff', 'IPv6'));
     $this->assertTrue(Validation::ip('2001:db8:a::123', 'IPv6'));
     $this->assertTrue(Validation::ip('fe80::', 'IPv6'));
     $this->assertTrue(Validation::ip('::ffff:192.0.2.128', 'IPv6'));
     $this->assertTrue(Validation::ip('::ffff:c000:280', 'IPv6'));
     $this->assertFalse(Validation::ip('123', 'IPv6'));
     $this->assertFalse(Validation::ip('ldkfj', 'IPv6'));
     $this->assertFalse(Validation::ip('2001::FFD3::57ab', 'IPv6'));
     $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:37023:7334', 'IPv6'));
     $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:370k:7334', 'IPv6'));
     $this->assertFalse(Validation::ip('1:2:3:4:5:6:7:8:9', 'IPv6'));
     $this->assertFalse(Validation::ip('1::2::3', 'IPv6'));
     $this->assertFalse(Validation::ip('1:::3:4:5', 'IPv6'));
     $this->assertFalse(Validation::ip('1:2:3::4:5:6:7:8:9', 'IPv6'));
     $this->assertFalse(Validation::ip('::ffff:2.3.4', 'IPv6'));
     $this->assertFalse(Validation::ip('::ffff:257.1.2.3', 'IPv6'));
     $this->assertFalse(Validation::ip('255.255.255.255', 'ipv6'), 'IPv4 is not valid IPv6');
 }
Esempio n. 3
0
 /**
  * Get all IP addresses associated with the current connection.
  *
  * @return array IP addresses
  */
 public function addresses()
 {
     if (Validation::ip($this->_config['host'])) {
         return [$this->_config['host']];
     }
     return gethostbynamel($this->_config['host']);
 }