aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/admin/misc.php6
-rw-r--r--src/fextdata.php35
-rwxr-xr-xsrc/globals.php46
-rw-r--r--src/private/score.sep42
-rw-r--r--src/private/score.sep.sample23
-rw-r--r--src/scoretable.php28
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'])