/** * 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; }
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; }; }); }