Exemplo n.º 1
0
// rely on system policy instead of creating our own, but allow also PolicyOmitList for single views
// (useful f.e. for system status checks from tools which can not authenticate because they are too simple).
$ini = eZINI::instance();
if (!in_array("sysinfo/{$view}", $ini->variable('RoleSettings', 'PolicyOmitList'))) {
    $user = eZUser::currentUser();
    $access = $user->hasAccessTo('setup', 'system_info');
    if ($access['accessWord'] != 'yes') {
        return $module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel');
    }
}
// check if we are acting as proxy
$clusterProxyRequestTarget = ezSysinfoClusterManager::clusterProxyRequestTarget($Params);
if ($clusterProxyRequestTarget != '') {
    // this view is a mere proxy - it retrieves data from the real backend node and gives it back
    // generate (and store) auth token for the view we are going to query
    $token = ezSysinfoClusterManager::generateAuthToken($view);
    $nodeUrls = ezSysinfoClusterManager::clusterDataRetrievalUrls('slave', $module->currentRedirectionURI(), array('authtoken' => $token), $_GET);
    if (!isset($nodeUrls[$clusterProxyRequestTarget])) {
        eZDebug::writeWarning("Node {$clusterProxyRequestTarget} not in cluster");
        return $module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
    }
    $url = $nodeUrls[$clusterProxyRequestTarget];
    if ($fp = ezSysinfoClusterManager::clusterDataFopen($url)) {
        ob_start();
        fpassthru($fp);
        $buffer = ob_get_contents();
        //$size = ob_get_length();
        ob_end_clean();
        $info = stream_get_meta_data($fp);
        // use the stream metadata ['wrapper_data'] to re-inject content-type
        $contentType = '';