function get_output_file($instance_name, $file_num, $auth_str) { $result = BoincResult::lookup_name(BoincDb::escape_string($instance_name)); if (!$result) { die("no job instance {$instance_name}"); } $workunit = BoincWorkunit::lookup_id($result->workunitid); if (!$workunit) { die("no job {$result->workunitid}"); } $batch = BoincBatch::lookup_id($workunit->batch); if (!$batch) { die("no batch {$workunit->batch}"); } $user = BoincUser::lookup_id($batch->user_id); if (!$user) { die("no user {$batch->user_id}"); } $x = md5($user->authenticator . $result->name); if ($x != $auth_str) { die("bad auth str"); } $names = get_outfile_names($result); if ($file_num >= count($names)) { die("bad file num: {$file_num} > " . count($names)); } $name = $names[$file_num]; $fanout = parse_config(get_config(), "<uldl_dir_fanout>"); $upload_dir = parse_config(get_config(), "<upload_dir>"); $path = dir_hier_path($name, $upload_dir, $fanout); if (!is_file($path)) { die("no such file {$path}"); } do_download($path); }
// Copyright (C) 2008 University of California // // BOINC is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // BOINC is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see <http://www.gnu.org/licenses/>. // show a result require_once "../inc/util.inc"; require_once "../inc/result.inc"; $x = get_int("resultid", true); if ($x) { $result = BoincResult::lookup_id($x); } else { $x = get_str("result_name"); $result = BoincResult::lookup_name($x); } if (!$result) { error_page(tra("No such task:") . " " . htmlspecialchars($x)); // the htmlspecialchars prevents XSS } page_head(tra("Task") . " " . htmlspecialchars($x)); show_result($result); page_tail();