예제 #1
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 IPUtils::getIPRangeBounds($ip) !== null;
 }
예제 #2
0
 private function makeExcludeIps()
 {
     return $this->makeProperty('excluded_ips', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
         $ip = IP::getIpFromHeader();
         $field->title = Piwik::translate('SitesManager_ExcludedIps');
         $field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIps', array('1.2.3.*', '1.2.*.*')) . '<br /><br />' . Piwik::translate('SitesManager_YourCurrentIpAddressIs', array('<i>' . $ip . '</i>'));
         $field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
         $field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
         $field->validate = function ($value) {
             if (!empty($value)) {
                 $ips = array_map('trim', $value);
                 $ips = array_filter($ips, 'strlen');
                 foreach ($ips as $ip) {
                     if (IPUtils::getIPRangeBounds($ip) === null) {
                         throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
                     }
                 }
             }
         };
         $field->transform = function ($value) {
             if (empty($value)) {
                 return array();
             }
             $ips = array_map('trim', $value);
             $ips = array_filter($ips, 'strlen');
             return $ips;
         };
     });
 }