aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/admin/header.php2
-rw-r--r--src/db.php4
-rw-r--r--src/fclar.php15
-rw-r--r--src/fextdata.php67
-rw-r--r--src/frun.php54
-rw-r--r--src/ftask.php11
-rwxr-xr-xsrc/globals.php4
-rw-r--r--src/logexternal.php2
-rwxr-xr-xsrc/private/autojudging.php25
-rw-r--r--src/scoretable.php2
10 files changed, 126 insertions, 60 deletions
diff --git a/src/admin/header.php b/src/admin/header.php
index 1677469..d2cf43f 100644
--- a/src/admin/header.php
+++ b/src/admin/header.php
@@ -71,7 +71,7 @@ if(!isset($_POST['noflush'])) {
echo " <td align=center><a class=menu style=\"font-weight:bold\" href=problem.php>Problems</a></td>\n";
echo " <td align=center><a class=menu style=\"font-weight:bold\" href=language.php>Languages</a></td>\n";
echo " <td align=center><a class=menu style=\"font-weight:bold\" href=answer.php>Answers</a></td>\n";
- // echo " <td align=center><a class=menu style=\"font-weight:bold\" href=export.php>Export</a></td>\n";
+ echo " <td align=center><a class=menu style=\"font-weight:bold\" href=transfer.php>Transfer</a></td>\n";
//echo " </tr></table><hr><table border=0 width=\"100%\" align=center><tr>\n";
echo " </tr><tr>\n";
echo " <td align=center><a class=menu style=\"font-weight:bold\" href=task.php>Tasks</a></td>\n";
diff --git a/src/db.php b/src/db.php
index 8f0c735..2f6dd57 100644
--- a/src/db.php
+++ b/src/db.php
@@ -188,8 +188,8 @@ function DBExecNonStop($conn,$sql,$txt='') {
if($txt=='') $txt='unknown at '. getFunctionName();
$result = @DB_pg_exec ($conn, $sql);
if (!$result) {
- LOGLevel("Unable to exec SQL in the database ($txt). " .
- " Error=(" . pg_errormessage($conn) . ")", 2);
+ LOGError("Unable to exec SQL in the database ($txt). " .
+ " Error=(" . pg_errormessage($conn) . ")");
}
return $result;
}
diff --git a/src/fclar.php b/src/fclar.php
index fd99c53..72364e8 100644
--- a/src/fclar.php
+++ b/src/fclar.php
@@ -300,7 +300,7 @@ function DBNewClar($param,$c=null) {
DBExec($c, "update sitetable set sitenextclar=$clarnumber" .
" where sitenumber=$site and contestnumber=$contest and sitenextclar<$clarnumber",
"DBNewClar(update site)");
- $clarnumber = myunique();
+ $clarnumber = myunique($clarnumber);
$clarinc = $clarnumber;
} else {
$sql = "select * from clartable as t where t.contestnumber=$contest and " .
@@ -338,11 +338,14 @@ function DBNewClar($param,$c=null) {
$ret=1;
if($insert) {
if($clarinc >= $clarnumber) {
- while(!DBExecNonStop($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
- "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
- "($contest, $site, $clarnumber, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
- "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
- "DBNewClar(insert clar)")) {
+ while(true) {
+ DBExec($c,"SAVEPOINT sp" . $clarnumber,"DBNewClar(insert clar sp)");
+ if(DBExecNonStop($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
+ "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
+ "($contest, $site, $clarnumber, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
+ "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
+ "DBNewClar(insert clar)")) break;
+ DBExec($c,"ROLLBACK TO SAVEPOINT sp" . $clarnumber,"DBNewClar(insert clar sp rollback)");
$clarnumber++;
if($clarnumber > $clarinc + 3) break;
}
diff --git a/src/fextdata.php b/src/fextdata.php
index c7ebc31..6df8fbe 100644
--- a/src/fextdata.php
+++ b/src/fextdata.php
@@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
////////////////////////////////////////////////////////////////////////////////
-// Last modified 10/aug/2017 by cassio@ime.usp.br
+// Last modified 16/oct/2017 by cassio@ime.usp.br
function makeurlhttps($siteurl) {
if(substr($siteurl,0,7) == 'http://')
@@ -236,7 +236,7 @@ function getMainXML($contest,$timeo=5) {
if ($c==null) return false;
$r = DBExec($c, "select * from contesttable where contestnumber=$contest");
if (DBnLines($r)==0) {
- echo "Unable to find the contest $contest in the database.";
+ echo "Unable to find the contest $contest in the database.\n";
LOGError("Unable to find the contest $contest in the database.");
return false;
}
@@ -264,12 +264,15 @@ function getMainXML($contest,$timeo=5) {
$opts = array();
$opts['http']['timeout'] = $timeo;
$context = stream_context_create($opts);
+ echo "<pre>";
+ echo "Connecting to ". $siteurl . "\n";
try {
$sess = @file_get_contents($siteurl . "index.php?getsessionid=1", 0, $context);
} catch(Exception $e) {
$sess=false;
}
if($sess===false) {
+ echo "timeout at connection\n</pre>";
LOGError("getMainXML: timeout at get session id for $siteurl");
return false;
}
@@ -288,19 +291,21 @@ function getMainXML($contest,$timeo=5) {
$opts['http']['header'] .= "\r\nProxy-Authorization: Basic " . $bocaproxypass;
$opts['http']['timeout'] = $timeo;
$context = stream_context_create($opts);
+ echo "Authorizing\n";
try {
$ok = @file_get_contents($siteurl . "index.php?name=${user}&password=${res}&action=transfer", 0, $context);
} catch(Exception $e) {
$ok=false;
}
if($ok===false) {
+ echo "timeout at authorization\n</pre>";
LOGError("getMainXML: timeout at login for $siteurl");
return false;
}
$ti = mytime();
// LOGError("ok=" . $ok);
if(substr($ok,strlen($ok)-strlen('TRANSFER OK'),strlen('TRANSFER OK')) == 'TRANSFER OK') {
-
+ echo "Generating local data\n";
$data = encryptData(generateSiteXML($contest, $localsite, $updatetime-30),myhash(trim($sitedata[2])));
$data_url = http_build_query(array('xml' => $data, 'updatetime' => ($updatetime-30)
@@ -320,27 +325,35 @@ function getMainXML($contest,$timeo=5) {
$opts['http']['header'] .= "\r\nProxy-Authorization: Basic " . $bocaproxypass;
$opts['http']['timeout'] = $timeo;
$context = stream_context_create($opts);
+ echo "Transferring data\n";
try {
$s = @file_get_contents($siteurl . "site/getsite.php", 0, $context);
} catch(Exception $e) {
$s=false;
}
if($s===false) {
+ echo "timeout at transferring\n</pre>";
LOGError("getMainXML: timeout at transfer for $siteurl");
return false;
}
-
- if(strpos($s,'<OK>') !== false)
+ $chstr = "<!-- <OK> -->\n";
+ if(strpos($s,$chstr) !== false) {
+ echo "Transfer succeeded\n";
LOGInfo("xmltransfer: OK");
- else
+ } else {
+ echo "Transfer error (" . $s . ")\n";
LOGError("xmltransfer: failed (" . $s . ")");
+ }
- $s = substr($s, strpos($s, "\n") + 1);
+ echo "Processing received data\n";
+ $s = substr($s, strpos($s, $chstr) + strlen($chstr));
// LOGError("string: " . substr($s,0,50));
$s = decryptData($s,myhash (trim($sitedata[2])),'xml from main not ok');
if(strtoupper(substr($s,0,5)) != "<XML>") {
+ echo "Data corrupted\n</pre>";
return false;
}
+ echo "Importing data to local server\n";
if(importFromXML($s, $contest, $localsite, false, 1+$ct['updatetime'])) {
$str = $sitedata[0] . ' ' . $sitedata[1] . ' ' . $sitedata[2] . ' ' . $ti;
$ti = 2+$ct['updatetime'];
@@ -348,16 +361,20 @@ function getMainXML($contest,$timeo=5) {
DBUpdateContest ($param, null);
return true;
} else {
+ echo "Importing error\n";
LOGError("error importing xml");
}
} else {
+ echo "Transfer error (" . $ok . ")\n";
LOGError("xmltransfer: failed (" . $ok . ")");
}
+ echo "</pre>\n";
return false;
}
function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
LOGInfo("importFromXML: contest $contest site $site tomain $tomain");
+ if($tomain) $serv='Main'; else $serv='Local';
$data = implode("",explode("\n",$ar));
$parser = xml_parser_create('');
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 1);
@@ -372,6 +389,7 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
// DBExec($conn,"lock","importFromXML(lock)");
$r = DBExec($conn, "select * from contesttable where contestnumber=$contest");
if (DBnLines($r)==0) {
+ echo "$serv - error finding contest $contest \n";
LOGError("importFromXML: Unable to find the contest $contest in the database.");
// DBExec($conn,"rollback work");
return false;
@@ -411,10 +429,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if($uptime > 0) $param['updatetime']=$uptime;
if(($ret=DBUpdateContest ($param, $conn))) {
if($ret==2) {
+ echo "$serv - Contest " . $param["contestnumber"] . " updated\n";
LOGInfo("importFromXML: Contest " . $param["contestnumber"] . " updated");
}
}
else {
+ echo "$serv - error to update $table ". $param["contestnumber"] . "\n";
LOGError("importFromXML: error to update $table ". $param["contestnumber"]);
if($conn != null)
DBExec($conn,"rollback work");
@@ -427,10 +447,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if(!$tomain && $table == "answertable") {
if(($ret=DBNewAnswer ($contest, $param, $conn))) {
if($ret==2) {
+ echo "$serv - Answer " . $param["answernumber"] . " updated\n";
LOGInfo("importFromXML: Answer " . $param["answernumber"] . " updated");
}
}
else {
+ echo "$serv - error to update $table ". $param["answernumber"] . "\n";
LOGError("importFromXML: error to update $table ". $param["answernumber"]);
if($conn != null)
DBExec($conn,"rollback work");
@@ -440,10 +462,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if(!$tomain && $table == "langtable") {
if(($ret=DBNewLanguage ($contest,$param, $conn))) {
if($ret==2) {
+ echo "$serv - Language " . $param['langnumber'] ." updated\n";
LOGInfo("importFromXML: Language " . $param['langnumber'] ." updated");
}
}
else {
+ echo "$serv - error to update $table ". $param['langnumber'] . "\n";
LOGError("importFromXML: error to update $table ". $param['langnumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -453,9 +477,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if(!$tomain && $table == "problemtable") {
if(($ret=DBNewProblem ($contest,$param, $conn))) {
if($ret==2)
+ echo "$serv - Problem " . $param['problemnumber'] ." updated\n";
LOGInfo("importFromXML: Problem " . $param['problemnumber'] ." updated");
}
else {
+ echo "$serv - error to update $table ". $param['problemnumber'] . "\n";
LOGError("importFromXML: error to update $table " . $param['problemnumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -466,11 +492,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if(isset($param['clarsitenumber']) && !isset($param['sitenumber'])) $param['sitenumber']=$param['clarsitenumber'];
if(isset($param['runsitenumber']) && !isset($param['sitenumber'])) $param['sitenumber']=$param['runsitenumber'];
if(!isset($param['sitenumber']) || $param['sitenumber'] != $site) {
+ echo "$serv - site mismatch $site " . $param['sitenumber'] . "\n";
LOGError("importFromXML: site mismatch $site " . $param['sitenumber']);
continue;
}
if($tomain && $table == "sitetable") {
if(!DBNewSite($contest, $conn, $param)) {
+ echo "$serv - error to update $table \n";
LOGError("importFromXML: error to update $table");
if($conn != null)
DBExec($conn,"rollback work");
@@ -478,9 +506,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
if(($ret=DBUpdateSite($param, $conn))) {
if($ret==2) {
+ echo "$serv - Site " . $param["sitenumber"] . " updated\n";
LOGInfo("importFromXML: Site " . $param["sitenumber"] . " updated");
}
} else {
+ echo "$serv - error to update $table ". $param["sitenumber"] . "\n";
LOGError("importFromXML: error to update $table ". $param["sitenumber"]);
if($conn != null)
DBExec($conn,"rollback work");
@@ -489,6 +519,7 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
if($tomain && $table == "sitetimetable") {
if(!DBUpdateSiteTime($contest, $param, $firsttimetime, $conn)) {
+ echo "$serv - error to update $table \n";
LOGError("importFromXML: error to update $table");
if($conn != null)
DBExec($conn,"rollback work");
@@ -501,9 +532,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
if($table == "usertable") {
if(($ret=DBNewUser($param, $conn))) {
if($ret==2) {
+ echo "$serv - User " . $param["usernumber"]."/".$param['sitenumber']. " updated\n";
LOGInfo("importFromXML: User " . $param["usernumber"]."/".$param['sitenumber']. " updated");
}
} else {
+ echo "$serv - error to update $table ". $param["usernumber"]."/".$param['sitenumber'] . "\n";
LOGError("importFromXML: error to update $table ". $param["usernumber"]."/".$param['sitenumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -512,10 +545,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
if($table == "tasktable") {
if(($ret=DBNewTask ($param, $conn))) {
- if($ret==2)
+ if($ret==2) {
+ echo "$serv - Task " . $param['tasknumber']."/".$param['sitenumber']." updated\n";
LOGInfo("importFromXML: Task " . $param['tasknumber']."/".$param['sitenumber']." updated");
+ }
}
else {
+ echo "$serv - error to update $table " . $param['tasknumber']."/".$param['sitenumber'] . "\n";
LOGError("importFromXML: error to update $table " . $param['tasknumber']."/".$param['sitenumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -524,10 +560,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
if($table == "clartable") {
if(($ret=DBNewClar ($param, $conn))) {
- if($ret==2)
+ if($ret==2) {
+ echo "$serv - Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated\n";
LOGInfo("importFromXML: Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated");
+ }
}
else {
+ echo "$serv - error to update $table ". $param['clarnumber']."/".$param['sitenumber'] . "\n";
LOGError("importFromXML: error to update $table ". $param['clarnumber']."/".$param['sitenumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -536,10 +575,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
if($table == "runtable") {
if(($ret=DBNewRun ($param, $conn))) {
- if($ret==2)
+ if($ret==2) {
+ echo "$serv - Run " . $param['runnumber'] ."/".$param['sitenumber']." updated\n";
LOGInfo("importFromXML: Run " . $param['runnumber'] ."/".$param['sitenumber']." updated");
+ }
}
else {
+ echo "$serv - error to update $table ". $param['runnumber'] ."/".$param['sitenumber'] . "\n";
LOGError("importFromXML: error to update $table ". $param['runnumber'] ."/".$param['sitenumber']);
if($conn != null)
DBExec($conn,"rollback work");
@@ -550,7 +592,8 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) {
}
}
}
- // DBExec($conn,"commit work","importFromXML(commit)");
+ if($conn != null)
+ DBExec($conn,"commit work","importFromXML(commit)");
return true;
}
@@ -601,7 +644,7 @@ function generateSiteXML($contest,$site,$updatetime) {
}
}
$str .= "</XML>\n";
- DBExec($c,"commit work","generateXML(commit)");
+ DBExec($c,"commit work","generateSiteXML(commit)");
LOGInfo("xml data generated for contest $contest site $site at time $updatetime");
return $str;
}
diff --git a/src/frun.php b/src/frun.php
index 3624456..20fb616 100644
--- a/src/frun.php
+++ b/src/frun.php
@@ -481,21 +481,22 @@ function DBUpdateRunAutojudging($contest, $site, $number, $ip, $answer, $stdout,
$b = DBSiteInfo($contest, $site, $c);
- if( true ||
- $a["runproblem"] == 1 ||
- $a["runproblem"] == 2 ||
- $a["runproblem"] == 3 ||
- $a["runproblem"] == 4 ||
- $a["runproblem"] == 5 ||
- $a["runproblem"] == 6 ||
- $a["runproblem"] == 7 ||
- $a["runproblem"] == 8 ||
- $a["runproblem"] == 9 ||
- $a["runproblem"] == 10 ||
- $a["runproblem"] == 11 ||
- $a["runproblem"] == 12 ||
- $a["runproblem"] == 13 ||
- ($retval != 1 && $retval != 6)) {
+ if(true || //cassiopc remove the true here if you want this to take effect
+ (($retval != 1 || // for some problems, YES is not automatic
+ $a["runproblem"] == 1 ||
+ $a["runproblem"] == 2 ||
+ $a["runproblem"] == 3 ||
+ $a["runproblem"] == 4 ||
+ $a["runproblem"] == 5 ||
+ $a["runproblem"] == 6 ||
+ $a["runproblem"] == 7 ||
+ $a["runproblem"] == 8 ||
+ $a["runproblem"] == 9 ||
+ $a["runproblem"] == 10 ||
+ $a["runproblem"] == 11 ||
+ $a["runproblem"] == 12 ||
+ $a["runproblem"] == 13)
+ && $retval != 4 && $retval != 6)) { // but WA and TLE are automatic for all problems
if($b["siteautojudge"]!="t") {
// && (($retval != 1 && $retval != 6) || $a["runproblem"] == 1 || $a["runproblem"] == 2) ) { //cassiopc incluir automatic judging of some codes 1:YES WA:6
@@ -608,6 +609,8 @@ function DBOpenRunsSNS($contest,$site,$st,$order='run') {
$sql .= " and (u.usertype != 'judge')";
$sql .= " and (not r.runstatus = 'judged') " .
" and not r.runstatus ~ 'deleted' order by ";
+ } else if($st == 2) {
+ $sql .= " and (not r.runanswer1 = 0) and (not r.runanswer2 = 0) and (not r.runstatus = 'judged') order by ";
} else $sql .= " order by ";
if($order == "site")
@@ -760,7 +763,7 @@ function DBNewRun($param,$c=null) {
$runnumber = $a["nextrun"] + 1;
DBExec($c, "update sitetable set sitenextrun=$runnumber" .
" where sitenumber=$site and contestnumber=$contest and sitenextrun<$runnumber", "DBNewRun(update site)");
- $runnumber = myunique();
+ $runnumber = myunique($runnumber);
$runinc = $runnumber;
}
@@ -855,14 +858,17 @@ function DBNewRun($param,$c=null) {
}
if($runinc >= $runnumber) {
- while(!DBExecNonStop($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
- "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
- "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
- "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
- "VALUES ($contest, $site, $runnumber, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
- "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
- "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
- "DBNewRun(insert run)")) {
+ while(true) {
+ DBExec($c,"SAVEPOINT sp" . $runnumber,"DBNewRun(insert run sp)");
+ if(DBExecNonStop($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
+ "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
+ "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
+ "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
+ "VALUES ($contest, $site, $runnumber, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
+ "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
+ "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
+ "DBNewRun(insert run)")) break;
+ DBExec($c,"ROLLBACK TO SAVEPOINT sp" . $runnumber,"DBNewRun(insert run sp rollback)");
$runnumber++;
if($runnumber > $runinc + 3) break;
}
diff --git a/src/ftask.php b/src/ftask.php
index 73336c3..c54503a 100644
--- a/src/ftask.php
+++ b/src/ftask.php
@@ -396,7 +396,7 @@ function DBNewTask($param, $c=null, $autotask=false) {
$tasknumber = $a["nexttask"] + 1;
DBExec($c, "update sitetable set sitenexttask=$tasknumber" .
" where sitenumber=$site and contestnumber=$contest and sitenexttask<$tasknumber", "DBNewTask(update site)");
- $taskinc = myunique();
+ $taskinc = myunique($tasknumber);
if(($taskinc % 2) == 0) $taskinc--;
if($autotask) $taskinc++;
$tasknumber = $taskinc;
@@ -435,12 +435,17 @@ function DBNewTask($param, $c=null, $autotask=false) {
} else $oid="NULL";
if($taskinc >= $tasknumber) {
- while(!DBExecNonStop($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
+ while(true) {
+ DBExec($c,"SAVEPOINT sp" . $tasknumber,"DBNewTask(insert task sp)");
+ if(DBExecNonStop($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
"taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
"color, colorname, updatetime) " .
"VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
"'$desc', '$sys', '$color', '$colorname', $updatetime)",
- "DBNewTask(insert task)")) {
+ "DBNewTask(insert task)")) {
+ break;
+ }
+ DBExec($c,"ROLLBACK TO SAVEPOINT sp" . $tasknumber,"DBNewTask(insert task sp rollback)");
$tasknumber+=2;
if($tasknumber > $taskinc + 6) {
DBExec($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
diff --git a/src/globals.php b/src/globals.php
index cb7c419..4c387fc 100755
--- a/src/globals.php
+++ b/src/globals.php
@@ -284,8 +284,8 @@ function mytime() {
function mymtime() {
return microtime(true);
}
-function myunique() {
- return ((int)(100*microtime(true))) % 100000000;
+function myunique($val=0) {
+ return (((int)(100*microtime(true))) % 10000000)*100 + ($val % 100);
}
//retorna data e hora atuais
function now () {
diff --git a/src/logexternal.php b/src/logexternal.php
index 402fe9c..b85aaef 100644
--- a/src/logexternal.php
+++ b/src/logexternal.php
@@ -45,7 +45,7 @@ if(isset($_POST["comp"]) && $_POST["comp"] != "" ) {
$p = myhash($secret[2] . session_id());
if($p == $password) {
@mkdir('/var/www/boca/src/private/logexternal/',0770,true);
- @file_put_contents("/var/www/boca/src/private/logexternal/" . $secret[0] . '.' . $name, base64_decode($_POST['data']), LOCK_EX | FILE_APPEND);
+ @file_put_contents("/var/www/boca/src/private/logexternal/" . $secret[0] . '.' . $name, '\nbegin ' . time() . ' ' . base64_decode($_POST['data']), LOCK_EX | FILE_APPEND);
@file_put_contents("/var/www/boca/src/private/logexternal/logexternal.log", $name . "|" . $secret[0] . '|' . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND);
echo "ok\n";
exit;
diff --git a/src/private/autojudging.php b/src/private/autojudging.php
index dcb7398..2a8b1ed 100755
--- a/src/private/autojudging.php
+++ b/src/private/autojudging.php
@@ -44,7 +44,7 @@ if(system('test "`id -u`" -eq "0"',$retval)===false || $retval!=0) {
exit;
}
-ini_set('memory_limit','600M');
+ini_set('memory_limit','1200M');
ini_set('output_buffering','off');
ini_set('implicit_flush','on');
@ob_end_flush();
@@ -487,10 +487,14 @@ while(42) {
$answertmp = substr(trim($dif[count($dif)-1]),0,200);
$answertmp = sanitizeText($answertmp);
fclose($fp);
+ /*
foreach (glob($dir . $ds . '*') as $fne) {
- @chown($fne,"nobody");
- @chmod($fne,0755);
+ if(is_file($fne)) {
+ @chown($fne,"nobody");
+ @chmod($fne,0755);
+ }
}
+ */
// retval 5 (presentation) and retval 6 (wronganswer) are already compatible with the compare script
if($localretval < 4 || $localretval > 6) {
// contact staff
@@ -616,9 +620,14 @@ while(42) {
if(count($ans) > 0)
$anstmp = substr(trim(escape_string($ans[count($ans)-1])),0,100);
unset($ans);
- $answer = "(probably runtime error - unusual code: $retval) " . $anstmp;
- // runtime error
- $retval = 3;
+ if(strpos(file_get_contents('allerr'),'Error: Could not find or load main class') === false) {
+ $answer = "(probably runtime error - unusual code: $retval) " . $anstmp;
+ // runtime error
+ $retval = 3;
+ } else {
+ $answer = "(probably wrong name of class - unusual code: $retval) "; // . $anstmp;
+ $retval = 8;
+ }
}
if($retval == 0 || $retval > 9) {
$ans = file("allout");
@@ -638,7 +647,7 @@ while(42) {
//echo "err==> "; system("tail -n1 ". $dir.$ds.'allerr');
$answer=substr($answer,0,200);
DBUpdateRunAutojudging($contest, $site, $number, $ip, $answer, $dir.$ds.'allout', $dir.$ds.'allerr', $retval);
- LogLevel("Autojudging: answered '$answer' (run=$number, site=$site, contest=$contest)",3);
- echo "Autojudging answered '$answer' (contest=$contest, site=$site, run=$number)\n";
+ LogLevel("Autojudging: answered $retval '$answer' (run=$number, site=$site, contest=$contest)",3);
+ echo "Autojudging answered $retval '$answer' (contest=$contest, site=$site, run=$number)\n";
}
?>
diff --git a/src/scoretable.php b/src/scoretable.php
index 850ee9a..3d69ba5 100644
--- a/src/scoretable.php
+++ b/src/scoretable.php
@@ -143,7 +143,7 @@ if($_SESSION["usertable"]["usertype"]=='score' || $_SESSION["usertable"]["userty
}
@fclose($fp);
- getMainXML($_SESSION["usertable"]["contestnumber"]);
+ //getMainXML($_SESSION["usertable"]["contestnumber"]);
@unlink($destination . ".lck");
} else {