getGeneralConfig(); return !empty($general['login_allowlist_apply_to_reporting_api_requests']) || !empty($general['login_whitelist_apply_to_reporting_api_requests']); } public function shouldCheckAllowlist() { if (Common::isPhpCliMode()) { return false; } // ignore whitelist checks for opt out iframe if (!SettingsServer::isTrackerApiRequest() && 'CoreAdminHome' === Piwik::getModule() && 'optOut' === Piwik::getAction()) { return false; } $ips = $this->getAllowlistedLoginIps(); return !empty($ips); } public function checkIsAllowed($ipString) { if (!$this->isIpAllowed($ipString)) { throw new NoAccessException(Piwik::translate('CoreHome_ExceptionNotAllowlistedIP', $ipString)); } } public function isIpAllowed($userIpString) { $userIp = NetworkIp::fromStringIP($userIpString); $ipsAllowed = $this->getAllowlistedLoginIps(); if (empty($ipsAllowed)) { return false; } return $userIp->isInRanges($ipsAllowed); } /** * @return array */ protected function getAllowlistedLoginIps() { $ips = StaticContainer::get('login.allowlist.ips'); if (!empty($ips) && is_array($ips)) { $ips = array_map(function ($ip) { return trim($ip); }, $ips); $ips = array_filter($ips, function ($ip) { return !empty($ip); }); return array_unique(array_values($ips)); } return array(); } private function getGeneralConfig() { $config = Config::getInstance(); $general = $config->General; return $general; } }