Exemple #1
0
if (defined('XMDS') || $method != '') {
    // Create a service to handle the method
    switch ($service) {
        case 'soap':
            // Check to see if we have a file attribute set (for HTTP file downloads)
            if (isset($_GET['file'])) {
                // Check send file mode is enabled
                $sendFileMode = Config::GetSetting('SENDFILE_MODE');
                if ($sendFileMode == 'Off') {
                    Debug::LogEntry('audit', 'HTTP GetFile request received but SendFile Mode is Off. Issuing 404', 'services');
                    header('HTTP/1.0 404 Not Found');
                    exit;
                }
                // Check nonce, output appropriate headers, log bandwidth and stop.
                $nonce = new Nonce();
                if (!($file = $nonce->Details(Kit::GetParam('file', _GET, _STRING)))) {
                    Debug::LogEntry('audit', 'HTTP GetFile request received but unable to find XMDS Nonce. Issuing 404', 'services');
                    // 404
                    header('HTTP/1.0 404 Not Found');
                } else {
                    // Issue magic packet
                    // Send via Apache X-Sendfile header?
                    if ($sendFileMode == 'Apache') {
                        Debug::LogEntry('audit', 'HTTP GetFile request redirecting to ' . Config::GetSetting('LIBRARY_LOCATION') . $file['storedAs'], 'services');
                        header('X-Sendfile: ' . Config::GetSetting('LIBRARY_LOCATION') . $file['storedAs']);
                    } else {
                        if ($sendFileMode == 'Nginx') {
                            header('X-Accel-Redirect: /download/' . $file['storedAs']);
                        } else {
                            header('HTTP/1.0 404 Not Found');
                        }