REST::fatal(REST::HTTP_NOT_FOUND, 'No URL for this handle'); } } elseif (!isset($handle->type[$index]) || $handle->type[$index] != 'URL') { REST::fatal(REST::HTTP_NOT_FOUND, 'No URL with that index'); } // Finally, get the URL: $url = $handle->data[$index]; // Append the URL with the current query string. // We leave out the "index" and "redirect" fields, though. unset($_GET['index']); unset($_GET['redirect']); if (!empty($_GET)) { $url .= '?' . http_build_query($_GET); } // Finally, perform the actual redirect: REST::redirect(REST::HTTP_TEMPORARY_REDIRECT, $url); } $xhtml_type = REST::best_xhtml_type() . '; charset=UTF-8'; $content_type = REST::best_content_type(array($xhtml_type => 1.0, 'application/json' => 1.0, 'application/x-www-form-urlencoded' => 1.0, 'text/plain; charset=US-ASCII' => 0.5), $xhtml_type); // When was this handle last modified? $modified = 0; foreach ($handle->timestamp as $idx => $timestamp) { if ($timestamp > $modified) { $modified = $timestamp; } } REST::check_if_modified_since($modified); REST::header(array('status' => REST::HTTP_OK, 'Content-Type' => $content_type, 'Modified' => REST::http_date($modified))); // For a HEAD request, we can quit now: if ($_SERVER['REQUEST_METHOD'] === 'HEAD') { exit;
if ($row[0] === null) { REST::fatal(REST::HTTP_NOT_FOUND, 'No token available'); } Topos::real_query(<<<EOS UPDATE `Pools` SET `minLeases` = {$row[0]} WHERE `poolId` = {$poolId}; EOS ); } // while while ($row = $result->fetch_row()) { Topos::real_query(<<<EOS UPDATE `Tokens` SET `tokenLeases` = {$row[1]} + 1 {$timeout} WHERE `tokenId` = {$row[0]} AND `tokenLeases` = {$row[1]}; EOS ); if (Topos::mysqli()->affected_rows) { break 2; } } // while } // while $url = Topos::urlbase() . 'pools/' . REST::urlencode($TOPOS_POOL) . '/tokens/' . $row[0]; if ($lockUUID) { header("X-Topos-OpaqueLockToken: opaquelocktoken:{$lockUUID}"); header('X-Topos-LockURL: ' . Topos::urlbase() . 'pools/' . REST::urlencode($TOPOS_POOL) . '/locks/' . $lockUUID); } REST::redirect(REST::HTTP_SEE_OTHER, $url);
Topos::deleteTokenFile($jobid); Portal_MySQL::real_query(<<<EOS DELETE FROM `Token` WHERE `token_id`={$escjobid} AND `user_id`={$escuserid}; EOS ); if (!Portal_MySQL::mysql()->affected_rows) { REST::fatal(REST::HTTP_NOT_FOUND); } REST::header(array('status' => REST::HTTP_NO_CONTENT)); exit; } // The user tries to get information about eir jobs if (file_exists($fullfilename = Portal::JOBRESULTS_DIR . $jobid)) { REST::redirect(REST::HTTP_SEE_OTHER, Portal::portalURL() . "jobresults/{$jobid}"); } $result = Portal_MySQL::query(<<<EOS SELECT `token_error` FROM `Token` WHERE `token_id`={$escjobid} AND `user_id`={$escuserid}; EOS ); if (!($row = $result->fetch_row())) { // Can't find what the user is looking for REST::fatal(REST::HTTP_GONE); } if (empty($row[0])) { REST::fatal(REST::HTTP_NOT_FOUND, "<p>Your job hasn't been executed yet. Try again later.</p>"); }
/** * Never returns */ public static function unauthorized() { if ($_SERVER['SERVER_PORT'] == Portal::PORT_PLAIN) { REST::redirect(REST::HTTP_TEMPORARY_REDIRECT, 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']); } header('WWW-Authenticate: Basic realm="Grid Portal"'); $register = REST::htmlspecialchars('https://' . $_SERVER['SERVER_NAME'] . Portal::portalURL() . 'register?referrer=' . urlencode(REST::urlbase() . $_SERVER['REQUEST_URI'])); REST::fatal(REST::HTTP_UNAUTHORIZED, "<p>You can register <a href=\"{$register}\">here</a>.</p>"); exit; }