public static function hasContextAccess($paUserContext = null) { $lsUserIp = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ""; $lsAppClient = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; $lsToken = isset($_SERVER['HTTP_TOKEN']) ? $_SERVER['HTTP_TOKEN'] : ""; $lbReturn = false; Debug::debug(array($lsUserIp, $lsAppClient, $lsToken)); $laConfigAcl = Config::getAppOptions('acl'); $laContext = isset($laConfigAcl['acl']['context']) ? $laConfigAcl['acl']['context'] : null; if ($paUserContext !== null) { $laContext = Config::merge($paUserContext, $laContext); } Debug::debug($laContext); if (is_array($laContext)) { foreach ($laContext as $lsIp => $laIpContext) { $lsIpPattern = preg_replace(array("/^!([\\d\\.?]*)\$/", "/\\./", "/\\?/"), array("[^\$1]", "\\.", "[\\d]*"), $lsIp); if (preg_match("/^{$lsIpPattern}\$/", $lsUserIp)) { Debug::debug("IP: {$lsUserIp}"); if (isset($laIpContext['denied']) && $laIpContext['denied'] == true) { $lbReturn = false; Debug::debug("IP [{$lsUserIp}] DENIED FOR {$lsIpPattern}"); break; } if (isset($laIpContext['user-agent'][$lsAppClient])) { Debug::debug("USER-AGENT: {$lsAppClient}"); if ($laIpContext['user-agent'][$lsAppClient] == $lsToken) { Debug::debug("TOKEN: {$lsToken}"); $lbReturn = true; break; } } elseif (isset($laIpContext['user-agent']['*'])) { Debug::debug("USER-AGENT: *"); if ($laIpContext['user-agent']['*'] == $lsToken) { Debug::debug("TOKEN: {$lsToken}"); $lbReturn = true; break; } } } else { Debug::debug("IP [{$lsUserIp}] DENIED FOR {$lsIpPattern}"); } } } else { $lbReturn = true; } return $lbReturn; }