diff options
| -rw-r--r-- | src/admin/misc.php | 6 | ||||
| -rw-r--r-- | src/fextdata.php | 35 | ||||
| -rwxr-xr-x | src/globals.php | 46 | ||||
| -rw-r--r-- | src/private/score.sep | 42 | ||||
| -rw-r--r-- | src/private/score.sep.sample | 23 | ||||
| -rw-r--r-- | src/scoretable.php | 28 |
6 files changed, 110 insertions, 70 deletions
diff --git a/src/admin/misc.php b/src/admin/misc.php index 4264a47..6eae53a 100644 --- a/src/admin/misc.php +++ b/src/admin/misc.php @@ -45,7 +45,6 @@ require 'header.php'; <input type="submit" name="Submit7" value="Revert Update" onClick="conf2()"> </center> </form> -<br> <pre> OPERATION LOG DISPLAYS BELOW: @@ -98,8 +97,9 @@ if (isset($_POST["Submit6"]) && $_POST["Submit6"] == "Update BOCA") { if($curv[0] != $newv[0] || $curv[1] != $newv[1]) echo "Cannot updated because of major version difference\n"; else { + echo "Updating\n"; $q = updatebocafile($dir, $dir . $ds . "private" . $ds . "newboca." . $t, $t); - echo "" . $q . " files updated to " . $BOCAVERSION . "\n\n"; + echo $q . " files updated to " . $BOCAVERSION . "\n\n"; $str = @file_get_contents($dir . $ds . "private" . $ds . "updateboca.log"); @file_put_contents($dir . $ds . "private" . $ds . "updateboca.log", $str . $t . "\n"); } @@ -167,7 +167,7 @@ if($dotransfer || $doscore || $dotransferall) { @file_put_contents($fname . ".tmp",base64_encode(serialize($data0))); @rename($fname . ".tmp",$fname . ".dat"); echo "Transferring scores\n"; - scoretransfer($fname . ".dat", $localsite); + echo scoretransfer($fname . ".dat", $localsite); echo "Saving scores\n"; if(@create_zip($remotedir,glob($remotedir . '/*.dat'),$fname . ".tmp") != 1) { LOGError("Cannot create score zip file"); diff --git a/src/fextdata.php b/src/fextdata.php index 468c2d3..49fc8fb 100644 --- a/src/fextdata.php +++ b/src/fextdata.php @@ -30,16 +30,21 @@ function makeurlhttps($siteurl) { function scoretransfer($putname, $localsite, $timeo=5) { $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; + $logstr=''; if(is_readable('/etc/boca.conf')) { $pif=parse_ini_file('/etc/boca.conf'); $bocaproxy = @trim($pif['proxy']); - if($bocaproxy != "" && substr($bocaproxy,0,6) != 'tcp://') + if($bocaproxy != "" && substr($bocaproxy,0,6) != 'tcp://') { $bocaproxy = 'tcp://' . $bocaproxy; + $logstr .= "proxy configuration found\n"; + } $bocaproxylogin = @trim($pif['proxylogin']); $bocaproxypass = @trim($pif['proxypassword']); - if($bocaproxylogin != "") + if($bocaproxylogin != "") { + $logstr .= "proxy authentication found\n"; $bocaproxypass = base64_encode($bocaproxylogin . ":" . $bocaproxypass); + } } else { $bocaproxy = ""; $bocaproxypass = ""; @@ -72,12 +77,14 @@ function scoretransfer($putname, $localsite, $timeo=5) { if(strpos($siteurl,'#') !== false) continue; LOGError("scoretransfer: found site $siteurl"); $siteurl = makeurlhttps($siteurl); + $logstr .= "Found site $siteurl to share info\n"; // LOGError("url=" .$siteurl . "index.php?getsessionid=1"); $opts = array(); $opts['http']['timeout'] = $timeo; $context = stream_context_create($opts); if(($sess = @file_get_contents($siteurl . "index.php?getsessionid=1", 0, $context))===false) { LOGError("scoretransfer: timeout at get session id for $siteurl"); + $logstr .= "timeout at get-session-id for $siteurl\n"; continue; } // LOGError("sess=$sess pass=" . trim($sitedata[2]) . " hash=" . myhash(trim($sitedata[2]))); @@ -104,12 +111,14 @@ function scoretransfer($putname, $localsite, $timeo=5) { } if($ok===false) { LOGError("scoretransfer: timeout at login for $siteurl"); + $logstr .= "timeout at login for $siteurl\n"; continue; } // LOGError("ok=" . $ok); if(substr($ok,strlen($ok)-strlen('TRANSFER OK'),strlen('TRANSFER OK')) == 'TRANSFER OK') { if(($res = @file_get_contents($siteurl . "scoretable.php?remote=-42", 0, $context))===false) { LOGError("scoretransfer: timeout at get score for $siteurl"); + $logstr .= "timeout at get-score for $siteurl\n"; continue; } @file_put_contents($privatedir . $ds . 'remotescores' . $ds . 'tmp.zip', $res); @@ -130,16 +139,20 @@ function scoretransfer($putname, $localsite, $timeo=5) { } $zip->close(); LOGError("scoretransfer: download OK"); + $logstr .= "download OK from $siteurl\n"; } else { + $logstr .= "reading failed from $siteurl (zip open error)\n"; LOGError("scoretransfer: download failed (2)"); } cleardir($privatedir . $ds . 'remotescores' . $ds . 'tmp'); @unlink($privatedir . $ds . 'remotescores' . $ds . 'tmp.zip'); } else { LOGError("scoretransfer: download failed (3)"); + $logstr .= "download failed from $siteurl (file error)\n"; } } else { LOGError("scoretransfer: download failed (1)"); + $logstr .= "download failed from $siteurl (connection establishing error)\n"; } if(is_readable($putname)) { @@ -168,11 +181,15 @@ function scoretransfer($putname, $localsite, $timeo=5) { } if($s===false) { LOGError("scoretransfer: timeout at upload for $siteurl"); + $logstr .= "timeout at full upload to $siteurl\n"; } else { - if(strpos($s,'SCORE UPLOADED OK') !== false) + if(strpos($s,'SCORE UPLOADED OK') !== false) { LOGError("scoretransfer: upload OK"); - else + $logstr .= "upload of score to $siteurl OK\n"; + } else { LOGError("scoretransfer: upload failed (" . $s . ")"); + $logstr .= "upload of score to $siteurl failed (" . $s . ")\n"; + } } } if(is_readable($superlfile)) { @@ -200,15 +217,21 @@ function scoretransfer($putname, $localsite, $timeo=5) { } if($s===false) { LOGError("scoretransfer: timeout at full upload for $siteurl"); + $logstr .= "timeout at full upload to $siteurl\n"; continue; } else { - if(strpos($s,'SCORE UPLOADED OK') !== false) + if(strpos($s,'SCORE UPLOADED OK') !== false) { LOGError("scoretransfer: upload full OK"); - else + $logstr .= 'upload of full score to $siteurl OK\n'; + } + else { LOGError("scoretransfer: upload full failed (" . $s . ")"); + $logstr .= 'upload of full score to $siteurl failed (' . $s . ')'; + } } } } + return $logstr; } diff --git a/src/globals.php b/src/globals.php index 0af5662..952533e 100755 --- a/src/globals.php +++ b/src/globals.php @@ -40,29 +40,31 @@ function filedownload($oid,$fname,$msg='') { if($msg != '') $str .= "&msg=" . rawurlencode($msg); return $str; } -function dirrec($dir, $func, $dirPermissions, $filePermissions, $avoid=array()) { +function dirrec($dir, $user, $group, $dirPermissions, $filePermissions, $avoid=array()) { $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; - $dp = opendir($dir); - while($file = readdir($dp)) { - if (($file == ".") || ($file == "..")) - continue; - $cont = false; - for($i = 0; $i < count($avoid); $i++) - if(substr($file, strlen($file)-strlen($avoid[$i])) == $avoid[$i]) { - $cont = true; - break; - } - if($cont) continue; - $fullPath = $dir . $ds . $file; - if(is_dir($fullPath)) { - $func($fullPath, $dirPermissions); - dirrec($fullPath, $func, $dirPermissions, $filePermissions, $avoid); - } else { - $func($fullPath, $filePermissions); + chown($dir, $user); + chgrp($dir, $group); + if(is_dir($dir)) { + chmod($dir, $dirPermissions); + if(($dp = opendir($dir)) === false) return; + while($file = readdir($dp)) { + if (($file == ".") || ($file == "..")) + continue; + $cont = false; + for($i = 0; $i < count($avoid); $i++) + if(substr($file, strlen($file)-strlen($avoid[$i])) == $avoid[$i]) { + $cont = true; + break; + } + if($cont) continue; + $fullPath = $dir . $ds . $file; + dirrec($fullPath, $user, $group, $dirPermissions, $filePermissions, $avoid); } + closedir($dp); + } else { + chmod($dir, $filePermissions); } - closedir($dp); } function fixbocadir($dir,$full=false) { @@ -79,10 +81,8 @@ function fixbocadir($dir,$full=false) { else $d = array('problemtmp','runtmp','scoretmp'); foreach($d as $a) cleardir($a,true,true,false); - dirrec($dir, chown, $un, $un); - dirrec($dir, chgrp, $ug, $ug); - dirrec($dir, chmod, 0755, 0644, array('private', '.oldboca')); - dirrec($dir . $ds . 'private', chmod, 0750, 0640, array('.oldboca')); + dirrec($dir, $un, $ug, 0755, 0644, array('private', '.oldboca')); + dirrec($dir . $ds . 'private', $un, $ug, 0750, 0640, array('.oldboca')); if(@file_put_contents($dir . $ds . 'private' . $ds . '.htaccess', "Deny from all\n") === false) return false; return true; } else { diff --git a/src/private/score.sep b/src/private/score.sep index fb45aae..b4798d9 100644 --- a/src/private/score.sep +++ b/src/private/score.sep @@ -1,23 +1,19 @@ -General 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 100 9999 -Site_1 1 -Site_2 2 -Site_3 3 -Site_4 4 -Site_5 5 -Site_6 6 -Site_7 7 -Site_8 8 -Site_9 9 -Site_10 10 -Site_11 11 -Site_12 12 -Site_13 13 -Site_14 14 -Site_15 15 -Site_16 16 -Site_17 17 -Site_18 18 -Site_19 19 -Site_20 20 -Site_100 100 -Site_9999 9999 +Global 101 102 103 104 105 106 107 108 109 110 121 122 123 124 +Caribbean 110 121 123 +MexicoCA 104 109 122 124 +NorthRegion 102 103 +SouthRegion 105 106 107 108 +Argentina 105 +Bolivia 106 +Brasil 101 +Chile 107 +Colombia 102 +CostaRica 122 +Cuba 110 +ElSalvador 124 +Mexico 109 +Panama 104 +Peru 108 +PuertoRico 123 +RepDominicana 121 +Venezuela 103 diff --git a/src/private/score.sep.sample b/src/private/score.sep.sample new file mode 100644 index 0000000..fb45aae --- /dev/null +++ b/src/private/score.sep.sample @@ -0,0 +1,23 @@ +General 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 100 9999 +Site_1 1 +Site_2 2 +Site_3 3 +Site_4 4 +Site_5 5 +Site_6 6 +Site_7 7 +Site_8 8 +Site_9 9 +Site_10 10 +Site_11 11 +Site_12 12 +Site_13 13 +Site_14 14 +Site_15 15 +Site_16 16 +Site_17 17 +Site_18 18 +Site_19 19 +Site_20 20 +Site_100 100 +Site_9999 9999 diff --git a/src/scoretable.php b/src/scoretable.php index 3d69ba5..33c421f 100644 --- a/src/scoretable.php +++ b/src/scoretable.php @@ -47,7 +47,7 @@ if(isset($_GET["clock"]) && $_GET["clock"]==1) { else echo "0"; exit; } -if(isset($_GET['remote']) && is_numeric($_GET['remote'])) { +if(isset($_GET['remote'])) { ob_start(); header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); @@ -59,13 +59,13 @@ if(isset($_GET['remote']) && is_numeric($_GET['remote'])) { if (isset($_SESSION["usertable"])) { $tmp = DBUserInfo($_SESSION["usertable"]["contestnumber"], - $_SESSION["usertable"]["usersitenumber"], $_SESSION["usertable"]["usernumber"]); + $_SESSION["usertable"]["usersitenumber"], $_SESSION["usertable"]["usernumber"]); $_SESSION["usertable"]['usersessionextra'] = $tmp['usersessionextra']; } else { IntrusionNotify("scoretable1"); ForceLoad("index.php"); } - if(!isset($_SESSION['usertable']['usertype']) || ($_SESSION["usertable"]["usertype"] != "score" && $_SESSION["usertable"]["usertype"] != "site")) { + if(!isset($_SESSION['usertable']['usertype']) || $_SESSION["usertable"]["usertype"] != "site") { IntrusionNotify("scoretable2"); ForceLoad("index.php"); } @@ -83,7 +83,7 @@ $scoredelay["score"] = 60; $scoredelay["team"] = 30; $scoredelay["judge"] = 20; $scoredelay["staff"] = 30; -$actualdelay = 60; +$actualdelay = 30; if(isset($scoredelay[$_SESSION["usertable"]["usertype"]])) $actualdelay = $scoredelay[$_SESSION["usertable"]["usertype"]]; $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; @@ -99,7 +99,7 @@ if(file_exists($scoretmp)) { } } -if($_SESSION["usertable"]["usertype"]=='score' || $_SESSION["usertable"]["usertype"]=='admin' || (isset($_GET["remote"]) && is_numeric($_GET["remote"]))) { +if(isset($_GET["remote"])) { $privatedir = $_SESSION['locr'] . $ds . "private"; $remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores"; $destination = $remotedir . $ds ."scores.zip"; @@ -132,7 +132,7 @@ if($_SESSION["usertable"]["usertype"]=='score' || $_SESSION["usertable"]["userty $fname = $remotedir . $ds . "score_site" . $localsite . "_" . $localsite . "_x"; // . md5($_SERVER['HTTP_HOST']); @file_put_contents($fname . ".tmp",base64_encode(serialize($data0))); @rename($fname . ".tmp",$fname . ".dat"); - scoretransfer($fname . ".dat", $localsite); + //scoretransfer($fname . ".dat", $localsite); if(@create_zip($remotedir,glob($remotedir . '/*.dat'),$fname . ".tmp") != 1) { LOGError("Cannot create score zip file"); @@ -152,10 +152,7 @@ if($_SESSION["usertable"]["usertype"]=='score' || $_SESSION["usertable"]["userty } } } -} - -if(isset($_GET["remote"])) { - if(is_numeric($_GET["remote"])) { + if(is_numeric($_GET["remote"])) { if($_GET["remote"]==-42) { echo file_get_contents($destination); } else { @@ -166,15 +163,16 @@ if(isset($_GET["remote"])) { $score = array(); if($level>0) { list($score,$data0) = DBScoreSite($_SESSION["usertable"]["contestnumber"], - $_SESSION["usertable"]["usersitenumber"], 1, -1, $_GET["remote"]); + $_SESSION["usertable"]["usersitenumber"], 1, -1, $_GET["remote"]); } echo base64_encode(serialize($score)); } - } else { - echo base64_encode(serialize(array())); - } - exit; + } else { + echo base64_encode(serialize(array())); + } + exit; } + if(!$redo) { $conf=globalconf(); if($conf['doenc']) |