예제 #1
0
파일: nextToken.php 프로젝트: sara-nl/ToPoS
DELETE `Tokens`, `TokenValues`
FROM `Tokens` NATURAL JOIN `TokenValues` 
WHERE `Tokens`.`tokenId` = {$delete}
  AND `poolId` = {$poolId};
EOS
);
            if (!Topos::mysqli()->affected_rows) {
                throw new Exception("Token {$deleteTokenId} not found", REST::HTTP_NOT_FOUND);
            }
        } catch (Exception $e) {
            Topos::real_query("DELETE FROM `Tokens` WHERE `tokenId` = {$tokenId};");
            REST::fatal($e->getCode(), $e->getMessage());
        }
    }
    $tokenURL = Topos::urlbase() . 'pools/' . REST::urlencode($TOPOS_POOL) . '/tokens/' . $tokenId;
    REST::created($tokenURL);
}
REST::require_method('HEAD', 'GET');
$nameClause = is_string(@$_GET['name']) && strlen($_GET['name']) ? "AND MATCH(`tokenName`) AGAINST (" . Topos::escape_string($_GET['name']) . " IN BOOLEAN MODE)" : '';
if ((int) @$_GET['timeout'] > 0) {
    $timeout = (int) $_GET['timeout'];
    if ($timeout < 1) {
        REST::fatal(REST::HTTP_BAD_REQUEST, 'Illegal value for parameter "timeout"');
    }
    $escDescription = isset($_GET['description']) ? Topos::escape_string((string) $_GET['description']) : "''";
    $lockUUID = Topos::uuid();
    $timeout = <<<EOS
, `tokenLockTimeout` = UNIX_TIMESTAMP() + {$timeout}
, `tokenLockUUID` = '{$lockUUID}'
, `tokenLockDescription` = {$escDescription}
EOS;
예제 #2
0
    if ($_SERVER['REQUEST_METHOD'] === 'PUT' && @$_GET['mode'] === 'create' && $handle->read()) {
        REST::fatal(REST::HTTP_PRECONDITION_FAILED, 'Handle exists.');
    } elseif ($_SERVER['REQUEST_METHOD'] === 'PUT' && @$_GET['mode'] === 'update' && !$handle->delete()) {
        REST::fatal(REST::HTTP_PRECONDITION_FAILED, 'Handle doesn\'t exist.');
    } else {
        $handle->delete();
    }
    // Store the data...
    $handle->create();
    // and return the proper response:
    switch ($_SERVER['REQUEST_METHOD']) {
        case 'PUT':
            REST::fatal(REST::HTTP_OK);
            break;
        case 'POST':
            REST::created(REST::urlbase() . CP::PORTAL_URL . urlencode($CP_PREFIX) . '/' . urlencode($CP_SUFFIX));
            break;
        default:
            // this shouldn't happen
            REST::fatal(REST::HTTP_INTERNAL_SERVER_ERROR);
    }
} elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    $handle = new CP_Handle("{$CP_PREFIX}/{$CP_SUFFIX}");
    REST::fatal($handle->delete() ? REST::HTTP_OK : REST::HTTP_NOT_FOUND);
} else {
    // If we're here, the request method should be GET or HEAD. Otherwise, quit:
    REST::require_method('GET', 'HEAD');
    // Create a CP_Handle object...
    $handle = new CP_Handle("{$CP_PREFIX}/{$CP_SUFFIX}");
    // and read its contents from the database. If it's not there...
    if (!$handle->read()) {
EOS
);
    exec("cd '{$sandbox}'; find -mindepth 1 -maxdepth 1 -print0 | xargs -0 tar zcf {$TEMPNAM}.tgz", $output, $return_var);
    if ($return_var) {
        $output = implode("\n", $output);
        REST::fatal(REST::HTTP_INTERNAL_SERVER_ERROR, $output);
    }
    $tokenhandle = fopen("{$TEMPNAM}.tgz", 'r');
    try {
        $token_url = Topos::putTokenFile($tokenhandle, 'application/x-compressed-tar');
    } catch (Exception $e) {
        fclose($tokenhandle);
        throw $e;
    }
    fclose($tokenhandle);
    $token_id = basename($token_url);
    Portal_MySQL::real_query(<<<EOS
INSERT INTO `Token`
       ( `token_id`,  `user_id` )
VALUES ( {$token_id}, {$user_id} );
EOS
);
    $resultURL = REST::urlbase() . Portal::portalURL() . "jobstates/{$token_id}";
    REST::created($resultURL);
}
Portal_User::current();
REST::header(array('Content-Type' => REST::best_xhtml_type()));
echo Portal::html_start("{$appname}-{$appversion}") . '<form action="' . $appversion . '" method="post" enctype="multipart/form-data">';
$portlet->doGET();
echo '</form>' . Portal::html_end();