From aa629c7e4b35d0cd40f8191348a57ef69324c2a5 Mon Sep 17 00:00:00 2001 From: cassio Date: Fri, 2 Nov 2018 17:41:47 +0100 Subject: improving webcast sharing --- src/admin/report/header.php | 64 +++++++------- src/admin/report/webcast.php | 197 ++++++++++++++++++++++--------------------- 2 files changed, 135 insertions(+), 126 deletions(-) (limited to 'src/admin/report') diff --git a/src/admin/report/header.php b/src/admin/report/header.php index 1d191de..7764527 100644 --- a/src/admin/report/header.php +++ b/src/admin/report/header.php @@ -18,48 +18,54 @@ // Last modified 05/aug/2012 by cassio@ime.usp.br ob_start(); +session_start(); header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); -header ("Content-Type: text/html; charset=utf-8"); -session_start(); -ob_end_flush(); //$locr = $_SESSION['locr']; //$loc = $_SESSION['loc']; $loc = $locr = "../.."; require $locr.'/version.php'; require_once($locr . "/globals.php"); -if(!ValidSession()) { - InvalidSession($_SERVER['PHP_SELF']); - ForceLoad($loc."/index.php"); -} -if($_SESSION["usertable"]["usertype"] != "admin") { - IntrusionNotify($_SERVER['PHP_SELF']); - ForceLoad($loc."/index.php"); -} - require_once($locr."/db.php"); require_once($locr."/freport.php"); -echo "Report Page\n"; -echo "\n"; +if(isset($_GET['webcastcode']) && ctype_alnum($_GET['webcastcode'])) { + header ("Content-transfer-encoding: binary\n"); + header ("Content-type: application/force-download"); + ob_end_flush(); +} else { + header ("Content-Type: text/html; charset=utf-8"); + if(!ValidSession()) { + InvalidSession($_SERVER['PHP_SELF']); + ForceLoad($loc."/index.php"); + } + if($_SESSION["usertable"]["usertype"] != "admin") { + IntrusionNotify($_SERVER['PHP_SELF']); + ForceLoad($loc."/index.php"); + } + ob_end_flush(); -echo "\n"; + echo "Report Page\n"; + echo "\n"; -$contest=$_SESSION["usertable"]["contestnumber"]; -if(($ct = DBContestInfo($contest)) == null) - ForceLoad($loc."/index.php"); -$site=$_SESSION["usertable"]["usersitenumber"]; -if(($st = DBSiteInfo($contest,$site)) == null) - ForceLoad($loc."/index.php"); + echo "\n"; -echo "\n"; -echo "\n"; -echo "
"; -echo "\"\""; -echo "BOCA"; -echo "\n"; -echo $ct["contestname"] . " - " . $st["sitename"] . "
\n"; -?> + $contest=$_SESSION["usertable"]["contestnumber"]; + if(($ct = DBContestInfo($contest)) == null) + ForceLoad($loc."/index.php"); + $site=$_SESSION["usertable"]["usersitenumber"]; + if(($st = DBSiteInfo($contest,$site)) == null) + ForceLoad($loc."/index.php"); + + echo "\n"; + echo "\n"; + echo "
"; + echo "\"\""; + echo "BOCA"; + echo "\n"; + echo $ct["contestname"] . " - " . $st["sitename"] . "
\n"; +} +?> \ No newline at end of file diff --git a/src/admin/report/webcast.php b/src/admin/report/webcast.php index 0f85317..9a56e44 100644 --- a/src/admin/report/webcast.php +++ b/src/admin/report/webcast.php @@ -18,6 +18,46 @@ //Last updated 07/nov/2012 by cassio@ime.usp.br require('header.php'); +$ds = DIRECTORY_SEPARATOR; +if($ds=="") $ds = "/"; +if(isset($_SESSION['locr'])) { + $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 'webcast'; + $webcastparentdir = $_SESSION['locr'] . $ds. 'private'; +} else { + $webcastdir = $locr . $ds . 'private' . $ds . 'webcast'; + $webcastparentdir = $locr . $ds . 'private'; +} +if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit; + +$webcastcode=$_GET['webcastcode']; +$wcdata=@file($webcastparentdir . $ds . 'webcast.sep'); +$wcsite = array(); +$wcloweruser = array(); +$wcupperuser = array(); +for($i=0; $i 1 && is_numeric($temp[1])) + $wcloweruser[count($wcloweruser)-1] = $temp[1]; + if(count($temp) > 2 && is_numeric($temp[2])) + $wcupperuser[count($wcupperuser)-1] = $temp[2]; + } + } + break; + } +} +if($i>=count($wcdata)) { + exit; +} + +cleardir($webcastdir); +@mkdir($webcastdir); $contest = $_SESSION["usertable"]["contestnumber"]; $site = $_SESSION["usertable"]["usersitenumber"]; @@ -26,10 +66,11 @@ $ct = DBContestInfo($contest); if(($st = DBSiteInfo($contest, $site)) == null) ForceLoad("../index.php"); -//if(isset($_GET['full']) && $_GET['full'] > 0) - $freezeTime = $st['siteduration']; -//else -// $freezeTime = $st['sitelastmilescore']; +if(isset($_GET['full']) && $_GET['full'] > 0) + $freezeTime = $st['siteduration']; +else + $freezeTime = $st['sitelastmilescore']; + $contestfile = $ct['contestname'] . "\n"; @@ -45,17 +86,39 @@ $r = DBExec($c, ' WHERE contestnumber = ' . $contest . ' AND problemnumber > 0'); $numProblems = DBnlines($r); -$r = DBExec($c, - 'SELECT * FROM usertable' . - ' WHERE contestnumber = ' . $contest . - ' AND userenabled = \'t\' AND usersitenumber = ' . $site . - ' AND usertype = \'team\''); + +$sql = 'SELECT username, userfullname, userdesc FROM usertable' . + ' WHERE contestnumber = ' . $contest . + ' AND userenabled = \'t\' AND usertype = \'team\' AND ((0 = 1)'; +for($i=0; $i < count($wcloweruser); $i++) + $sql .= ' OR (usersitenumber = ' . $wcsite[$i] . ' AND usernumber >= ' . $wcloweruser[$i] . ' AND usernumber <= ' . $wcupperuser[$i] . ')'; +$sql .= ')'; +$r = DBExec($c,$sql); + $numTeams = DBnlines($r); $contestfile = $contestfile . $numTeams . '' . $numProblems . "\n"; +$teamIDs = array(); +for ($i = 0; $i < $numTeams; $i++) { + $a = DBRow($r, $i); + $teamID = $a['username']; + $teamIDs[count($teamIDs)] = $teamID; + $pieces = explode('', $a['userfullname']); + $teamName = $a['userfullname']; + $pieces = explode(']', $a['userdesc']); + $pieces = explode('[', trim($pieces[0])); + $teamUni = trim($pieces[1]); + //print_r( array_keys($a)); + + $contestfile = $contestfile . + $teamID . '' . + $teamUni . '' . + $teamName . "\n"; +} +/* for ($i = 0; $i < $numTeams; $i++) { $a = cleanuserdesc(DBRow($r, $i)); $teamID = $a['username']; @@ -73,118 +136,58 @@ for ($i = 0; $i < $numTeams; $i++) { $teamUni . '' . $teamName . "\n"; } - +*/ $contestfile = $contestfile . '1' . '' . '1' . "\n"; $contestfile = $contestfile . $numProblems . '' . 'Y' . "\n"; -$score = DBScore($_SESSION["usertable"]["contestnumber"], false, -1, $ct["contestlocalsite"]); - -//$contestfile = $contestfile . -// "

ICPC Output

"; -//$contestfile = $contestfile . -// "
";
-$n=0;
-$class=1;
-while(list($e, $c) = each($score)) {
-	if(isset($score[$e]["site"]) && isset($score[$e]["user"])) {
-		if(DBSiteInfo($_SESSION["usertable"]["contestnumber"],$score[$e]["site"]) != null) {
-			$r = DBUserInfo($_SESSION["usertable"]["contestnumber"], 
-							$score[$e]["site"], $score[$e]["user"]);
-			$contestfile = $contestfile .
-				$r["usericpcid"] . "," .
-				$class++ . "," .
-				$score[$e]["totalcount"] . "," . 
-				$score[$e]["totaltime"] . ",";
-			
-			if($score[$e]["first"])
-				$contestfile = $contestfile . $score[$e]["first"] . "\n";
-			else $contestfile = $contestfile . "0\n";
-			$n++;
-		}
-	}
-}
-//$contestfile = $contestfile .
-//	"
"; - -$timefile = $st['currenttime']; -$versionfile = '1.0' . "\n"; - $run = DBAllRunsInSites($contest, $site, 'run'); - $numRuns = count($run); - $runfile = ''; for ($i = 0; $i < $numRuns; $i++) { $u = DBUserInfo($contest, $site, $run[$i]['user']); - $runID = $run[$i]['number']; $runTime = dateconvminutes($run[$i]['timestamp']); $runTeam = $u['username']; - $runProblem = $run[$i]['problem']; - - if ($runTime > $freezeTime) { - continue; - } - - $runfile = $runfile . - $runID . '' . - $runTime . '' . - $runTeam . '' . - $runProblem . ''; - - if ($run[$i]['yes']=='t') { - $runfile = $runfile . - 'Y' . "\n"; - } else if ($run[$i]['answer'] == 'Not answered yet') { - $runfile = $runfile . - '?' . "\n"; - } else { - $runfile = $runfile . - 'N' . "\n"; + if(in_array($runTeam, $teamIDs)) { + $runProblem = $run[$i]['problem']; + + $runfile = $runfile . + $runID . '' . + $runTime . '' . + $runTeam . '' . + $runProblem . ''; + + if ($runTime > $freezeTime) { + $runfile = $runfile . '?' . "\n"; + } else if ($run[$i]['yes'] == 't') { + $runfile = $runfile . 'Y' . "\n"; + } else if ($run[$i]['answer'] == 'Not answered yet') { + $runfile = $runfile . '?' . "\n"; + } else { + $runfile = $runfile . 'N' . "\n"; + } } } -$ds = DIRECTORY_SEPARATOR; -if($ds=="") $ds = "/"; +$timefile = $st['currenttime']; +$versionfile = '1.0' . "\n"; -if(isset($_SESSION['locr'])) { - $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 'webcast'; - $webcastparentdir = $_SESSION['locr'] . $ds. 'private'; -} else { - $webcastdir = $locr . $ds . 'private' . $ds . 'webcast'; - $webcastparentdir = $locr . $ds . 'private'; -} -cleardir($webcastdir); -@mkdir($webcastdir); if(is_writable($webcastdir)) { - file_put_contents($webcastdir . $ds . 'runs',$runfile); - file_put_contents($webcastdir . $ds . 'contest',$contestfile); - file_put_contents($webcastdir . $ds . 'version',$versionfile); - file_put_contents($webcastdir . $ds . 'time',$timefile); - if(@create_zip($webcastparentdir,array('webcast'),$webcastdir . ".tmp") != 1) { + @file_put_contents($webcastdir . $ds . 'runs',$runfile); + @file_put_contents($webcastdir . $ds . 'contest',$contestfile); + @file_put_contents($webcastdir . $ds . 'version',$versionfile); + @file_put_contents($webcastdir . $ds . 'time',$timefile); + if(@create_zip($webcastparentdir,array('webcast'),$webcastdir . "." . $webcastcode . ".tmp") != 1) { LOGError("Cannot create score webcast.tmp file"); MSGError("Cannot create score webcast.tmp file"); } else { - $cf = globalconf(); - file_put_contents($webcastdir . ".tmp",encryptData(file_get_contents($webcastdir . ".tmp"), $cf["key"],false)); - @rename($webcastdir . ".tmp",$webcastdir . '.zip'); + echo file_get_contents($webcastdir . "." . $webcastcode . ".tmp"); } - echo "


"; - echo "CLICK TO DOWNLOAD"; - echo "
"; } else { LOGError('Error creating the folder for the ZIP file: '. $webcastdir); MSGError('Error creating the folder for the ZIP file: '.$webcastdir); ForceLoad("../index.php"); } -echo "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; -?> - +?> \ No newline at end of file -- cgit v1.2.3 From e5f85442a4fc5413b2d345e66d63e21dce2bc7a3 Mon Sep 17 00:00:00 2001 From: cassio Date: Fri, 2 Nov 2018 17:47:44 +0100 Subject: remove last mod line --- src/admin/report/header.php | 1 - src/admin/report/webcast.php | 1 - 2 files changed, 2 deletions(-) (limited to 'src/admin/report') diff --git a/src/admin/report/header.php b/src/admin/report/header.php index 7764527..05375bd 100644 --- a/src/admin/report/header.php +++ b/src/admin/report/header.php @@ -15,7 +15,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -// Last modified 05/aug/2012 by cassio@ime.usp.br ob_start(); session_start(); diff --git a/src/admin/report/webcast.php b/src/admin/report/webcast.php index 9a56e44..a9a925c 100644 --- a/src/admin/report/webcast.php +++ b/src/admin/report/webcast.php @@ -15,7 +15,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -//Last updated 07/nov/2012 by cassio@ime.usp.br require('header.php'); $ds = DIRECTORY_SEPARATOR; -- cgit v1.2.3 From cc0dde31e8abb67ff0b055807cc8e0bd25efdb4b Mon Sep 17 00:00:00 2001 From: cassio Date: Fri, 2 Nov 2018 17:53:30 +0100 Subject: better logs --- src/admin/report/webcast.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/admin/report') diff --git a/src/admin/report/webcast.php b/src/admin/report/webcast.php index a9a925c..04b8a5f 100644 --- a/src/admin/report/webcast.php +++ b/src/admin/report/webcast.php @@ -17,18 +17,21 @@ //////////////////////////////////////////////////////////////////////////////// require('header.php'); +if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit; + $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; if(isset($_SESSION['locr'])) { - $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 'webcast'; + $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 'webcast.' . $webcastcode; $webcastparentdir = $_SESSION['locr'] . $ds. 'private'; } else { - $webcastdir = $locr . $ds . 'private' . $ds . 'webcast'; + $webcastdir = $locr . $ds . 'private' . $ds . 'webcast.' . $webcastcode; $webcastparentdir = $locr . $ds . 'private'; } -if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit; $webcastcode=$_GET['webcastcode']; +@file_put_contents($webcastparentdir . $ds . 'webcast.log', $webcastcode . "|" . getIP() . "|" . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND); + $wcdata=@file($webcastparentdir . $ds . 'webcast.sep'); $wcsite = array(); $wcloweruser = array(); @@ -178,11 +181,11 @@ if(is_writable($webcastdir)) { @file_put_contents($webcastdir . $ds . 'contest',$contestfile); @file_put_contents($webcastdir . $ds . 'version',$versionfile); @file_put_contents($webcastdir . $ds . 'time',$timefile); - if(@create_zip($webcastparentdir,array('webcast'),$webcastdir . "." . $webcastcode . ".tmp") != 1) { + if(@create_zip($webcastparentdir,array('webcast'),$webcastdir . ".zip") != 1) { LOGError("Cannot create score webcast.tmp file"); MSGError("Cannot create score webcast.tmp file"); } else { - echo file_get_contents($webcastdir . "." . $webcastcode . ".tmp"); + echo file_get_contents($webcastdir . ".zip"); } } else { LOGError('Error creating the folder for the ZIP file: '. $webcastdir); -- cgit v1.2.3 From a9dec1f8e0d0d244b63dd75502c54a4f76efe22f Mon Sep 17 00:00:00 2001 From: cassio Date: Fri, 2 Nov 2018 18:06:12 +0100 Subject: bf --- src/admin/report/header.php | 2 +- src/admin/report/webcast.php | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src/admin/report') diff --git a/src/admin/report/header.php b/src/admin/report/header.php index 05375bd..50c36af 100644 --- a/src/admin/report/header.php +++ b/src/admin/report/header.php @@ -26,7 +26,6 @@ header ("Pragma: no-cache"); //$loc = $_SESSION['loc']; $loc = $locr = "../.."; -require $locr.'/version.php'; require_once($locr . "/globals.php"); require_once($locr."/db.php"); require_once($locr."/freport.php"); @@ -37,6 +36,7 @@ if(isset($_GET['webcastcode']) && ctype_alnum($_GET['webcastcode'])) { ob_end_flush(); } else { header ("Content-Type: text/html; charset=utf-8"); + require $locr.'/version.php'; if(!ValidSession()) { InvalidSession($_SERVER['PHP_SELF']); ForceLoad($loc."/index.php"); diff --git a/src/admin/report/webcast.php b/src/admin/report/webcast.php index 04b8a5f..54ec4b8 100644 --- a/src/admin/report/webcast.php +++ b/src/admin/report/webcast.php @@ -18,9 +18,11 @@ require('header.php'); if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit; +$webcastcode=$_GET['webcastcode']; $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; + if(isset($_SESSION['locr'])) { $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 'webcast.' . $webcastcode; $webcastparentdir = $_SESSION['locr'] . $ds. 'private'; @@ -29,15 +31,12 @@ if(isset($_SESSION['locr'])) { $webcastparentdir = $locr . $ds . 'private'; } -$webcastcode=$_GET['webcastcode']; -@file_put_contents($webcastparentdir . $ds . 'webcast.log', $webcastcode . "|" . getIP() . "|" . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND); - $wcdata=@file($webcastparentdir . $ds . 'webcast.sep'); $wcsite = array(); $wcloweruser = array(); $wcupperuser = array(); for($i=0; $i=count($wcdata)) { + @file_put_contents($webcastparentdir . $ds . 'webcast.log', $webcastcode . "|N|" . getIP() . "|" . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND); exit; } -- cgit v1.2.3 From 336e0c032cc0f9e9547853f814ebffdfd00c5e2d Mon Sep 17 00:00:00 2001 From: cassio Date: Fri, 2 Nov 2018 18:08:02 +0100 Subject: post instead of get --- src/admin/report/header.php | 2 +- src/admin/report/webcast.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/admin/report') diff --git a/src/admin/report/header.php b/src/admin/report/header.php index 50c36af..77e524a 100644 --- a/src/admin/report/header.php +++ b/src/admin/report/header.php @@ -30,7 +30,7 @@ require_once($locr . "/globals.php"); require_once($locr."/db.php"); require_once($locr."/freport.php"); -if(isset($_GET['webcastcode']) && ctype_alnum($_GET['webcastcode'])) { +if(isset($_POST['webcastcode']) && ctype_alnum($_POST['webcastcode'])) { header ("Content-transfer-encoding: binary\n"); header ("Content-type: application/force-download"); ob_end_flush(); diff --git a/src/admin/report/webcast.php b/src/admin/report/webcast.php index 54ec4b8..a6aaceb 100644 --- a/src/admin/report/webcast.php +++ b/src/admin/report/webcast.php @@ -17,8 +17,8 @@ //////////////////////////////////////////////////////////////////////////////// require('header.php'); -if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit; -$webcastcode=$_GET['webcastcode']; +if(!isset($_POST['webcastcode']) || !ctype_alnum($_POST['webcastcode'])) exit; +$webcastcode=$_POST['webcastcode']; $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; @@ -69,7 +69,7 @@ $ct = DBContestInfo($contest); if(($st = DBSiteInfo($contest, $site)) == null) ForceLoad("../index.php"); -if(isset($_GET['full']) && $_GET['full'] > 0) +if(isset($_POST['full']) && $_POST['full'] > 0) $freezeTime = $st['siteduration']; else $freezeTime = $st['sitelastmilescore']; -- cgit v1.2.3