.
////////////////////////////////////////////////////////////////////////////////
// Last modified 08/aug/2015 by cassio@ime.usp.br
require('header.php');
$ds = DIRECTORY_SEPARATOR;
if($ds=="") $ds = "/";
if (isset($_FILES["sourcefile"]) && isset($_POST["problem"]) && isset($_POST["Submit"]) && isset($_POST["language"]) &&
is_numeric($_POST["problem"]) && is_numeric($_POST["language"]) && $_FILES["sourcefile"]["name"]!="") {
if ($_POST["confirmation"] == "confirm") {
if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) {
if(isset($_POST['pastcode']) && $_POST['pastcode'] != '') {
echo "RESULT: CONTEST NOT FOUND";
exit;
}
ForceLoad("../index.php");
}
$prob = myhtmlspecialchars($_POST["problem"]);
$lang = myhtmlspecialchars($_POST["language"]);
$type=myhtmlspecialchars($_FILES["sourcefile"]["type"]);
$size=myhtmlspecialchars($_FILES["sourcefile"]["size"]);
$name=myhtmlspecialchars($_FILES["sourcefile"]["name"]);
$temp=myhtmlspecialchars($_FILES["sourcefile"]["tmp_name"]);
if ($size > $ct["contestmaxfilesize"]) {
LOGLevel("User {$_SESSION["usertable"]["username"]} tried to submit file " .
"$name with $size bytes ({$ct["contestmaxfilesize"]} max allowed).", 1);
if(isset($_POST['pastcode']) && $_POST['pastcode'] != '') {
echo "RESULT: FILE TOO LARGE";
exit;
}
MSGError("File size exceeds the limit allowed.");
ForceLoad($runteam);
}
if(strpos($name,' ') === true || strpos($temp,' ') === true) {
if(isset($_POST['pastcode']) && $_POST['pastcode'] != '') {
echo "RESULT: FILE NAME CANNOT HAVE SPACES";
exit;
}
MSGError("File name cannot contain spaces.");
ForceLoad($runteam);
}
if (!is_uploaded_file($temp) || strlen($name)>100) {
if(isset($_POST['pastcode']) && $_POST['pastcode'] != '') {
echo "RESULT: FILE UPLOAD PROBLEM";
exit;
}
IntrusionNotify("file upload problem.");
ForceLoad("../index.php");
}
$ac=array('contest','site','user','problem','lang','filename','filepath');
$ac1=array('runnumber','rundate','rundatediff','rundatediffans','runanswer','runstatus','runjudge','runjudgesite',
'runjudge1','runjudgesite1','runanswer1','runjudge2','runjudgesite2','runanswer2',
'autoip','autobegindate','autoenddate','autoanswer','autostdout','autostderr','updatetime');
$param = array('contest'=>$_SESSION["usertable"]["contestnumber"],
'site'=>$_SESSION["usertable"]["usersitenumber"],
'user'=> $_SESSION["usertable"]["usernumber"],
'problem'=>$prob,
'lang'=>$lang,
'filename'=>$name,
'filepath'=>$temp);
if(isset($_POST['pastcode']) && $_POST['pastcode'] != '') {
$pastcode = myhtmlspecialchars($_POST["pastcode"]);
if(isset($_POST["pasthash"]) && isset($_POST["pastval"])) {
$pasthash = myhtmlspecialchars($_POST["pasthash"]);
$pastval = myhtmlspecialchars($_POST["pastval"]);
$pastsubmission = myhash(@file_get_contents($_SESSION["locr"] . $ds . "private" . $ds . 'run-past.config') . $pastcode);
if($pastsubmission != $pasthash) {
echo "\nRESULT: INVALID SUBMISSION CODE";
exit;
}
} else {
$pastval = 0;
}
$verify = $pastcode . '-' .$_SESSION["usertable"]["contestnumber"].'-'.$_SESSION["usertable"]["usersitenumber"].'-'.$_SESSION["usertable"]["usernumber"];
$fcname = $_SESSION["locr"] . $ds . "private" . $ds . 'laterun-submitted-' . $_SESSION["usertable"]["contestnumber"].'-'.
$_SESSION["usertable"]["usersitenumber"].'-'.$_SESSION["usertable"]["usernumber"].'.txt';
$codes = @file($fcname);
if(in_array($verify,$codes)) {
echo "\nRESULT: RUN ALREADY SUBMITTED";
} else {
if($pastval > 0) {
$param['rundate']=time() - $pastval;
$b = DBSiteInfo($contest, $site, $c);
$dif = $b["currenttime"];
$param['rundatediff']=$dif - $pastval;
}
if(DBNewRun ($param) == 2)
@file_put_contents($fcname, $verify . '\n', FILE_APPEND | LOCK_EX);
echo "\nRESULT: RUN SUBMITTED SUCCESSFULLY";
}
exit;
}
DBNewRun ($param);
$_SESSION['forceredo']=true;
}
ForceLoad($runteam);
}
$runtmp = $_SESSION["locr"] . $ds . "private" . $ds . "runtmp" . $ds . "run-contest" . $_SESSION["usertable"]["contestnumber"] .
"-site". $_SESSION["usertable"]["usersitenumber"] . "-user" . $_SESSION["usertable"]["usernumber"] . ".php";
$redo = TRUE;
if(!isset($_SESSION['forceredo']) || $_SESSION['forceredo']==false) {
$actualdelay = 30;
if(file_exists($runtmp)) {
if(isset($strtmp) || (($strtmp = file_get_contents($runtmp,FALSE,NULL,-1,1000000)) !== FALSE)) {
list($d) = sscanf($strtmp,"%*s %d");
if($d > time() - $actualdelay) {
$conf=globalconf();
$strtmp = decryptData(substr($strtmp,strpos($strtmp,"\n")+1),$conf["key"],'runtmp');
if($strtmp !== false)
$redo = FALSE;
}
}
}
}
if($redo) {
$_SESSION["popuptime"] = time();
$_SESSION['forceredo']=false;
if(($st = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null)
ForceLoad("../index.php");
$strtmp="
\n
| Run # | \nTime | \n". "Problem | \nLanguage | \nAnswer | \nFile | \n" . dateconvminutes($run[$i]["timestamp"]) . " | \n"; $strtmp .= "" . $run[$i]["problem"] . " | \n"; $strtmp .= "" . $run[$i]["language"] . " | \n"; // $strtmp .= "" . $run[$i]["status"] . " | \n"; if (trim($run[$i]["answer"]) == "") { $run[$i]["answer"] = "Not answered yet"; $strtmp .= "Not answered yet"; } else { $strtmp .= " | " . $run[$i]["answer"];
if($run[$i]['yes']=='t') {
$strtmp .= " | \n";
$strtmp .= ""; $strtmp .= $run[$i]["filename"] . ""; $strtmp .= " | \n"; $strtmp .= " \n"; } $strtmp .= "
boca-send-run USER PASSWORD PROBLEM LANGUAGE FILE
USERis your username,
PASSWORDis your password,
FILEis your submission file,
PROBLEMis one of {
"; $prob = DBGetProblems($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usertype"]=='judge'); for ($i=0;$i\n". " \n". " \n". " \n". " \n". "\n". "
\n". "\n". " \n". "Problem: \n". "\n". " \n". " \n". "\n". " \n". "Language: \n". "\n". " \n". " \n". "\n". " \n". "Source code: \n". "\n". " \n". " \n". "\n". " \n". " \n". " \n". "\n"; } $conf=globalconf(); $strtmp1 = " \t" . encryptData($strcolors,$conf["key"],false) . "\n" . encryptData($strtmp,$conf["key"],false); $randnum = session_id() . "_" . rand(); if(file_put_contents($runtmp . "_" . $randnum, $strtmp1,LOCK_EX)===FALSE) { if(!isset($_SESSION['writewarn'])) { LOGError("Cannot write to the user-run cache file $runtmp -- performance might be compromised"); $_SESSION['writewarn']=true; } } @rename($runtmp . "_" . $randnum, $runtmp); } echo $strtmp; ?>