Пример #1
0
function DBBkpDelete($number, $site, $contest, $user, $adm = '')
{
    $c = DBConnect();
    DBExec($c, "begin work", "DBBkpDelete(transaction)");
    $sql = "select r.bkpdata as oid from bkptable as r where r.contestnumber={$contest} and " . "r.sitenumber={$site} and r.bkpnumber={$number} and r.usernumber={$user}";
    $r = DBExec($c, $sql . " for update", "DBBkpDelete(get bkp for update)");
    $n = DBnlines($r);
    if ($n != 1) {
        DBExec($c, "rollback work", "DBBkpDelete(rollback)");
        LogLevel("Unable to delete a bkp. " . "(bkp={$number}, site={$site}, contest={$contest}, user={$user})", 1);
        return false;
    }
    $temp = DBRow($r, 0);
    if (DB_lo_unlink($c, $temp['oid']) === false) {
        DBExec($c, "rollback work", "DBBkpDelete(rollback-import)");
        LOGError("Unable to delete a large object (user={$user}, contest={$contest}, site={$site}, number={$number}).");
        MSGError("problem deleting bkp from database. Contact an admin.");
        exit;
    }
    if (strlen($adm) > 0) {
        $str = "deleted by " . $adm;
    } else {
        $str = "deleted";
    }
    DBExec($c, "update bkptable set bkpstatus='{$str}', updatetime=" . time() . " where contestnumber={$contest} and bkpnumber={$number} and sitenumber={$site}", "DBBkpDelete(update bkp)");
    DBExec($c, "commit work", "DBBkpDelete(commit)");
    LOGLevel("Bkp deleted (bkp={$number}, site={$site}, contest={$contest}, user={$user}).", 3);
    return true;
}
Пример #2
0
function DBGiveUpRunAutojudging($contest, $site, $number, $ip = "", $ans = "")
{
    $c = DBConnect();
    DBExec($c, "begin work", "DBGiveUpRunAutojudging(transaction)");
    $sql = "select * from runtable as r " . "where r.contestnumber={$contest} and r.runnumber={$number} and r.runsitenumber={$site}";
    $r = DBExec($c, $sql . " for update", "DBGiveUpRunAutoJudging(get run for update)");
    $n = DBnlines($r);
    if ($n != 1) {
        DBExec($c, "rollback work", "DBGiveUpRunAutoJudging(rollback)");
        LogLevel("Unable to giveup a run from autojudging (run={$number}, site={$site}, contest={$contest})", 1);
        return false;
    }
    $a = DBRow($r, 0);
    $t = time();
    if ($ip == "") {
        DBExec($c, "update runtable set autoenddate=null, autoanswer=null, autostdout=null, autostderr=null, " . "updatetime={$t}, autobegindate=null, autoip='' " . "where contestnumber={$contest} and runnumber={$number} and runsitenumber={$site}", "DBGiveUpRunAutojudging(update run)");
    } else {
        DBExec($c, "update runtable set autoenddate={$t}, autoanswer='{$ans}', autostdout=null, " . "autostderr=null, updatetime={$t}, autoip='{$ip}' " . "where contestnumber={$contest} and runnumber={$number} and runsitenumber={$site}", "DBGiveUpRunAutojudging(update run-withip)");
    }
    DBExec($c, "commit work", "DBGiveUpRunAutojudging(commit)");
    LOGLevel("Run gaveup from Autojudging (run={$number}, site={$site}, contest={$contest})", 3);
    return true;
}
Пример #3
0
        				echo "==> ERROR reading output file " . $dir . $ds . 'output' . $ds . $file . " - skipping it!\n";
        			}
        		}
        	}
        */
    }
    if ($retval >= 7 && $retval <= 9) {
        $ans = file("allout");
        $anstmp = trim(escape_string($ans[count($ans) - 1]));
        unset($ans);
        $answer = "(probably runtime error - unusual code: {$retval}) " . $anstmp;
        // runtime error
        $retval = 3;
    }
    if ($retval == 0 || $retval > 9) {
        $ans = file("allout");
        $anstmp = trim(escape_string($ans[count($ans) - 1]));
        unset($ans);
        LogLevel("Autojudging: Script returned unusual code: {$retval} ({$anstmp})" . "(run={$number}, site={$site}, contest={$contest})", 1);
        echo "Autojudging script returned unusual code {$retval} ({$anstmp})" . "(contest={$contest}, site={$site}, run={$number})\n";
        $answer = "(check output files - unusual code: {$retval}) " . $anstmp;
        // contact staff
        $retval = 7;
    }
    echo "Sending results to server...\n";
    //echo "out==> "; system("tail -n1 ". $dir.$ds.'allout');
    //echo "err==> "; system("tail -n1 ". $dir.$ds.'allerr');
    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";
}
Пример #4
0
        LogLevel("Connection try by IP " . getIP() . ", username="******"password"];
        $usertable = DBLogIn($name, $password, false);
        if (!$usertable) {
            ob_end_flush();
            echo "<!-- <ERROR1> " . session_id() . " " . session_id() . " -->\n";
            exit;
        }
        if (!isset($getx['check'])) {
            ob_end_flush();
            echo "<!-- <ERROR2> " . session_id() . " " . session_id() . " -->\n";
            exit;
        }
    } else {
        ob_end_flush();
        LogLevel("Init connection by IP " . getIP(), 2);
        echo "<!-- <SESSION1> " . session_id() . " " . session_id() . " -->\n";
        exit;
    }
}
if (!ValidSession()) {
    ob_end_flush();
    InvalidSession("site/index.php");
    ForceLoad("../index.php");
    exit;
}
if (isset($getx['check']) && isset($getx["password"]) && $getx['check'] != myhash($getx["password"] . $_SESSION['usertable']['userpassword'])) {
    ob_end_flush();
    echo "<!-- <SESSION2> " . session_id() . " " . $_SESSION['usertable']['usersessionextra'] . " -->\n";
    exit;
}
Пример #5
0
function DBGetClarToAnswerC($number, $site, $contest, $chief)
{
    $c = DBConnect();
    DBExec($c, "begin work", "DBGetClarToAnswerC(transaction)");
    $sql = "select c.contestnumber as contestnumber, c.clarsitenumber as sitenumber, c.claranswer as answer, " . "c.clarnumber as number, c.clardatediff as timestamp, c.clarstatus as status, " . "p.problemname as problemname, p.problemnumber as problemnumber, c.clardata as question " . "from clartable as c, problemtable as p " . "where c.contestnumber={$contest} and p.contestnumber=c.contestnumber and " . "c.clarproblem=p.problemnumber and c.clarsitenumber={$site} and " . "c.clarnumber={$number}";
    if ($chief != 1) {
        $sql .= " and (c.clarstatus='openclar' or (c.clarstatus='answering' and " . "c.clarjudge=" . $_SESSION["usertable"]["usernumber"] . " and " . "c.clarjudgesite=" . $_SESSION["usertable"]["usersitenumber"] . "))";
        $tx = "Chief is answering";
    } else {
        $tx = "Judge is answering";
    }
    $r = DBExec($c, $sql . " for update", "DBGetClarToAnswerC(get clar/prob for update)");
    $n = DBnlines($r);
    if ($n != 1) {
        DBExec($c, "rollback work", "DBGetClarToAnswerC(rollback)");
        LogLevel("Unable to get a clar (maybe other judge got it first). (clar={$number}, site={$site}, " . "contest={$contest})", 2);
        return false;
    }
    $a = DBRow($r, 0);
    if ($a["status"] == "answering") {
        $st = "DNA";
    } else {
        $st = "started";
    }
    if ($chief != 1) {
        DBExec($c, "update clartable set clarjudge=" . $_SESSION["usertable"]["usernumber"] . ", clarstatus='answering', updatetime=" . time() . ", " . "clarjudgesite=" . $_SESSION["usertable"]["usersitenumber"] . " " . "where contestnumber={$contest} and clarnumber={$number} and clarsitenumber={$site}", "DBGetClarToAnswerC(update clar)");
    }
    DBExec($c, "commit work", "DBGetClarToAnswerC(commit)");
    LOGLevel("User got a clarification (clar={$number}, site={$site}, contest={$contest}, status={$st}, " . "user="******"usertable"]["usernumber"] . "(site=" . $_SESSION["usertable"]["usersitenumber"] . ")).", 3);
    return $a;
}
Пример #6
0
function DBGetTaskToAnswerC($number, $site, $contest, $chief)
{
    $c = DBConnect();
    DBExec($c, "begin work", "DBGetTaskToAnswerC(transaction)");
    $sql = "select t.contestnumber as contestnumber, t.sitenumber as sitenumber, " . "t.tasknumber as number " . "from tasktable as t " . "where t.contestnumber={$contest} and t.sitenumber={$site} and " . "t.tasknumber={$number}";
    if ($chief != 1) {
        $sql .= " and t.taskstatus='opentask'";
        $tx = "Staff";
    } else {
        $tx = "Chief";
    }
    $r = DBExec($c, $sql . " for update", "DBGetTaskToAnswerC(get task for update)");
    $n = DBnlines($r);
    if ($n != 1) {
        DBExec($c, "rollback work", "DBGetTaskToAnswerC(rollback)");
        LogLevel("Unable to get a task (maybe other staff got it first). " . "(task={$number}, site={$site}, contest={$contest})", 2);
        return false;
    }
    $a = DBRow($r, 0);
    if ($chief != 1) {
        DBExec($c, "update tasktable set taskstaffnumber=" . $_SESSION["usertable"]["usernumber"] . ", " . "taskstaffsite=" . $_SESSION["usertable"]["usersitenumber"] . ", taskstatus='processing', updatetime=" . time() . " " . "where contestnumber={$contest} and tasknumber={$number} and " . "sitenumber={$site}", "DBGetTaskToAnswerC(update task)");
    }
    DBExec($c, "commit work", "DBGetTaskToAnswerC(commit)");
    LOGLevel("User got a task (task={$number}, site={$site}, contest={$contest}, user="******"usertable"]["usernumber"] . "(" . $_SESSION["usertable"]["usersitenumber"] . ")).", 3);
    return $a;
}