$n_ex_tests) { become404Page(); } switch ($_GET['testcase_type']) { case 'input': $file_name = "/var/uoj_data/$id/" . getUOJProblemExtraInputFileName($problem_conf, $testcase_id); $download_name = getUOJProblemExtraInputFileName($problem_conf, $testcase_id); break; case 'output': $file_name = "/var/uoj_data/$id/" . getUOJProblemExtraOutputFileName($problem_conf, $testcase_id); $download_name = getUOJProblemExtraOutputFileName($problem_conf, $testcase_id); break; default: become404Page(); } } else { $n_tests = getUOJConfVal($problem_conf, 'n_tests', 10); if ($testcase_id < 1 || $testcase_id > $n_tests) { become404Page(); } switch ($_GET['testcase_type']) { case 'input': $file_name = "/var/uoj_data/$id/" . getUOJProblemInputFileName($problem_conf, $testcase_id); $download_name = getUOJProblemInputFileName($problem_conf, $testcase_id); break; case 'output': $file_name = "/var/uoj_data/$id/" . getUOJProblemOutputFileName($problem_conf, $testcase_id); $download_name = getUOJProblemOutputFileName($problem_conf, $testcase_id); break; default: become404Page(); } } break; case 'testlib.h': $file_name = "/opt/uoj/judger/uoj_judger/include/testlib.h"; $download_name = "testlib.h"; break; default: become404Page(); } $finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, $file_name); if ($mimetype === false) { become404Page(); } finfo_close($finfo); header("X-Sendfile: $file_name"); header("Content-type: $mimetype"); header("Content-Disposition: attachment; filename=$download_name"); ?>