From 1a7aa506cf7c239890fab96fd024640b1b712eb8 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Sat, 12 Aug 2017 18:46:04 +0100 Subject: scripts for logging root activity and bug fix of autojudge --- src/logroot.php | 56 ++++++++++++++++++++++++++++++++++++++++ src/private/autojudging.php | 6 +++-- src/private/logroot/.placeholder | 0 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/logroot.php create mode 100644 src/private/logroot/.placeholder (limited to 'src') diff --git a/src/logroot.php b/src/logroot.php new file mode 100644 index 0000000..fed3d06 --- /dev/null +++ b/src/logroot.php @@ -0,0 +1,56 @@ +", "", $text); + $text = str_replace("\"", "", $text); + $text = str_replace("'", "", $text); + $text = str_replace("`", "", $text); + $text = addslashes($text); + return $text; +} + +function myhash($k) { + return hash('sha256',$k); +} + +if(isset($_POST["comp"]) && $_POST["comp"] != "" ) { + $name = sanitizeFilename($_POST["comp"]); + $password = $_POST["code"]; + $secrets = file("/var/www/boca/src/private/run-past.config"); + for($i = 0; $i < count($secrets); $i++) { + $secret = explode(' ', $secrets[$i]); + $p = myhash($secret[2] . session_id()); + if($p == $password) { + @file_put_contents("/var/www/boca/src/private/logroot/" . $secret[0] . '.' . $name, base64_decode($_POST['data']), LOCK_EX | FILE_APPEND); + @file_put_contents("/var/www/boca/src/private/logroot/logroot.log", $name . "|" . $secret[0] . '|' . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND); + echo "ok\n"; + exit; + } + } +} +echo "incorrect\n"; +exit; +?> diff --git a/src/private/autojudging.php b/src/private/autojudging.php index 5bd45cc..c5b5556 100755 --- a/src/private/autojudging.php +++ b/src/private/autojudging.php @@ -461,7 +461,7 @@ if($retval != 0) { $ex = escapeshellcmd($scriptcomp) ." ". escapeshellarg($dir . $ds . "team" . $ds . $file)." ". escapeshellarg($dir . $ds . "output" . $ds . $file)." ". - escapeshellarg($dir . $ds . "input" . $ds . $file) . " >compout"; + escapeshellarg($dir . $ds . "input" . $ds . $file) . " >compout 2>&1"; echo "Executing " . $ex . " at " . getcwd() . " for output file $file\n"; if(system($ex, $localretval)===false) $localretval = -1; @@ -474,7 +474,9 @@ if($retval != 0) { fwrite($fp, $dif[$difi]); if($difi >= 5000) fwrite($fp, "===OUTPUT OF COMPARING SCRIPT TOO LONG - TRUNCATED===\n"); else fwrite($fp, "===OUTPUT OF COMPARING SCRIPT ENDS HERE===\n"); - $answertmp = trim($dif[count($dif)-1]); + $answertmp = ''; + if(count($dif) > 0) + $answertmp = substr(trim($dif[count($dif)-1]),0,200); fclose($fp); foreach (glob($dir . $ds . '*') as $fne) { @chown($fne,"nobody"); diff --git a/src/private/logroot/.placeholder b/src/private/logroot/.placeholder new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3