From d8f2907fb00b701f91e6e98d33c4e6c0dd0619a5 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Mon, 16 Oct 2017 22:34:48 +0100 Subject: bug fixes --- src/fextdata.php | 67 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 12 deletions(-) (limited to 'src/fextdata.php') diff --git a/src/fextdata.php b/src/fextdata.php index c7ebc31..6df8fbe 100644 --- a/src/fextdata.php +++ b/src/fextdata.php @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -// Last modified 10/aug/2017 by cassio@ime.usp.br +// Last modified 16/oct/2017 by cassio@ime.usp.br function makeurlhttps($siteurl) { if(substr($siteurl,0,7) == 'http://') @@ -236,7 +236,7 @@ function getMainXML($contest,$timeo=5) { if ($c==null) return false; $r = DBExec($c, "select * from contesttable where contestnumber=$contest"); if (DBnLines($r)==0) { - echo "Unable to find the contest $contest in the database."; + echo "Unable to find the contest $contest in the database.\n"; LOGError("Unable to find the contest $contest in the database."); return false; } @@ -264,12 +264,15 @@ function getMainXML($contest,$timeo=5) { $opts = array(); $opts['http']['timeout'] = $timeo; $context = stream_context_create($opts); + echo "
";
+  echo "Connecting to ". $siteurl . "\n";
   try {
     $sess = @file_get_contents($siteurl . "index.php?getsessionid=1", 0, $context);
   } catch(Exception $e) {
     $sess=false;
   }
   if($sess===false) {
+    echo "timeout at connection\n
"; LOGError("getMainXML: timeout at get session id for $siteurl"); return false; } @@ -288,19 +291,21 @@ function getMainXML($contest,$timeo=5) { $opts['http']['header'] .= "\r\nProxy-Authorization: Basic " . $bocaproxypass; $opts['http']['timeout'] = $timeo; $context = stream_context_create($opts); + echo "Authorizing\n"; try { $ok = @file_get_contents($siteurl . "index.php?name=${user}&password=${res}&action=transfer", 0, $context); } catch(Exception $e) { $ok=false; } if($ok===false) { + echo "timeout at authorization\n"; LOGError("getMainXML: timeout at login for $siteurl"); return false; } $ti = mytime(); // LOGError("ok=" . $ok); if(substr($ok,strlen($ok)-strlen('TRANSFER OK'),strlen('TRANSFER OK')) == 'TRANSFER OK') { - + echo "Generating local data\n"; $data = encryptData(generateSiteXML($contest, $localsite, $updatetime-30),myhash(trim($sitedata[2]))); $data_url = http_build_query(array('xml' => $data, 'updatetime' => ($updatetime-30) @@ -320,27 +325,35 @@ function getMainXML($contest,$timeo=5) { $opts['http']['header'] .= "\r\nProxy-Authorization: Basic " . $bocaproxypass; $opts['http']['timeout'] = $timeo; $context = stream_context_create($opts); + echo "Transferring data\n"; try { $s = @file_get_contents($siteurl . "site/getsite.php", 0, $context); } catch(Exception $e) { $s=false; } if($s===false) { + echo "timeout at transferring\n"; LOGError("getMainXML: timeout at transfer for $siteurl"); return false; } - - if(strpos($s,'') !== false) + $chstr = "\n"; + if(strpos($s,$chstr) !== false) { + echo "Transfer succeeded\n"; LOGInfo("xmltransfer: OK"); - else + } else { + echo "Transfer error (" . $s . ")\n"; LOGError("xmltransfer: failed (" . $s . ")"); + } - $s = substr($s, strpos($s, "\n") + 1); + echo "Processing received data\n"; + $s = substr($s, strpos($s, $chstr) + strlen($chstr)); // LOGError("string: " . substr($s,0,50)); $s = decryptData($s,myhash (trim($sitedata[2])),'xml from main not ok'); if(strtoupper(substr($s,0,5)) != "") { + echo "Data corrupted\n"; return false; } + echo "Importing data to local server\n"; if(importFromXML($s, $contest, $localsite, false, 1+$ct['updatetime'])) { $str = $sitedata[0] . ' ' . $sitedata[1] . ' ' . $sitedata[2] . ' ' . $ti; $ti = 2+$ct['updatetime']; @@ -348,16 +361,20 @@ function getMainXML($contest,$timeo=5) { DBUpdateContest ($param, null); return true; } else { + echo "Importing error\n"; LOGError("error importing xml"); } } else { + echo "Transfer error (" . $ok . ")\n"; LOGError("xmltransfer: failed (" . $ok . ")"); } + echo "\n"; return false; } function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { LOGInfo("importFromXML: contest $contest site $site tomain $tomain"); + if($tomain) $serv='Main'; else $serv='Local'; $data = implode("",explode("\n",$ar)); $parser = xml_parser_create(''); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 1); @@ -372,6 +389,7 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { // DBExec($conn,"lock","importFromXML(lock)"); $r = DBExec($conn, "select * from contesttable where contestnumber=$contest"); if (DBnLines($r)==0) { + echo "$serv - error finding contest $contest \n"; LOGError("importFromXML: Unable to find the contest $contest in the database."); // DBExec($conn,"rollback work"); return false; @@ -411,10 +429,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if($uptime > 0) $param['updatetime']=$uptime; if(($ret=DBUpdateContest ($param, $conn))) { if($ret==2) { + echo "$serv - Contest " . $param["contestnumber"] . " updated\n"; LOGInfo("importFromXML: Contest " . $param["contestnumber"] . " updated"); } } else { + echo "$serv - error to update $table ". $param["contestnumber"] . "\n"; LOGError("importFromXML: error to update $table ". $param["contestnumber"]); if($conn != null) DBExec($conn,"rollback work"); @@ -427,10 +447,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if(!$tomain && $table == "answertable") { if(($ret=DBNewAnswer ($contest, $param, $conn))) { if($ret==2) { + echo "$serv - Answer " . $param["answernumber"] . " updated\n"; LOGInfo("importFromXML: Answer " . $param["answernumber"] . " updated"); } } else { + echo "$serv - error to update $table ". $param["answernumber"] . "\n"; LOGError("importFromXML: error to update $table ". $param["answernumber"]); if($conn != null) DBExec($conn,"rollback work"); @@ -440,10 +462,12 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if(!$tomain && $table == "langtable") { if(($ret=DBNewLanguage ($contest,$param, $conn))) { if($ret==2) { + echo "$serv - Language " . $param['langnumber'] ." updated\n"; LOGInfo("importFromXML: Language " . $param['langnumber'] ." updated"); } } else { + echo "$serv - error to update $table ". $param['langnumber'] . "\n"; LOGError("importFromXML: error to update $table ". $param['langnumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -453,9 +477,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if(!$tomain && $table == "problemtable") { if(($ret=DBNewProblem ($contest,$param, $conn))) { if($ret==2) + echo "$serv - Problem " . $param['problemnumber'] ." updated\n"; LOGInfo("importFromXML: Problem " . $param['problemnumber'] ." updated"); } else { + echo "$serv - error to update $table ". $param['problemnumber'] . "\n"; LOGError("importFromXML: error to update $table " . $param['problemnumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -466,11 +492,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if(isset($param['clarsitenumber']) && !isset($param['sitenumber'])) $param['sitenumber']=$param['clarsitenumber']; if(isset($param['runsitenumber']) && !isset($param['sitenumber'])) $param['sitenumber']=$param['runsitenumber']; if(!isset($param['sitenumber']) || $param['sitenumber'] != $site) { + echo "$serv - site mismatch $site " . $param['sitenumber'] . "\n"; LOGError("importFromXML: site mismatch $site " . $param['sitenumber']); continue; } if($tomain && $table == "sitetable") { if(!DBNewSite($contest, $conn, $param)) { + echo "$serv - error to update $table \n"; LOGError("importFromXML: error to update $table"); if($conn != null) DBExec($conn,"rollback work"); @@ -478,9 +506,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } if(($ret=DBUpdateSite($param, $conn))) { if($ret==2) { + echo "$serv - Site " . $param["sitenumber"] . " updated\n"; LOGInfo("importFromXML: Site " . $param["sitenumber"] . " updated"); } } else { + echo "$serv - error to update $table ". $param["sitenumber"] . "\n"; LOGError("importFromXML: error to update $table ". $param["sitenumber"]); if($conn != null) DBExec($conn,"rollback work"); @@ -489,6 +519,7 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } if($tomain && $table == "sitetimetable") { if(!DBUpdateSiteTime($contest, $param, $firsttimetime, $conn)) { + echo "$serv - error to update $table \n"; LOGError("importFromXML: error to update $table"); if($conn != null) DBExec($conn,"rollback work"); @@ -501,9 +532,11 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { if($table == "usertable") { if(($ret=DBNewUser($param, $conn))) { if($ret==2) { + echo "$serv - User " . $param["usernumber"]."/".$param['sitenumber']. " updated\n"; LOGInfo("importFromXML: User " . $param["usernumber"]."/".$param['sitenumber']. " updated"); } } else { + echo "$serv - error to update $table ". $param["usernumber"]."/".$param['sitenumber'] . "\n"; LOGError("importFromXML: error to update $table ". $param["usernumber"]."/".$param['sitenumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -512,10 +545,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } if($table == "tasktable") { if(($ret=DBNewTask ($param, $conn))) { - if($ret==2) + if($ret==2) { + echo "$serv - Task " . $param['tasknumber']."/".$param['sitenumber']." updated\n"; LOGInfo("importFromXML: Task " . $param['tasknumber']."/".$param['sitenumber']." updated"); + } } else { + echo "$serv - error to update $table " . $param['tasknumber']."/".$param['sitenumber'] . "\n"; LOGError("importFromXML: error to update $table " . $param['tasknumber']."/".$param['sitenumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -524,10 +560,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } if($table == "clartable") { if(($ret=DBNewClar ($param, $conn))) { - if($ret==2) + if($ret==2) { + echo "$serv - Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated\n"; LOGInfo("importFromXML: Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated"); + } } else { + echo "$serv - error to update $table ". $param['clarnumber']."/".$param['sitenumber'] . "\n"; LOGError("importFromXML: error to update $table ". $param['clarnumber']."/".$param['sitenumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -536,10 +575,13 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } if($table == "runtable") { if(($ret=DBNewRun ($param, $conn))) { - if($ret==2) + if($ret==2) { + echo "$serv - Run " . $param['runnumber'] ."/".$param['sitenumber']." updated\n"; LOGInfo("importFromXML: Run " . $param['runnumber'] ."/".$param['sitenumber']." updated"); + } } else { + echo "$serv - error to update $table ". $param['runnumber'] ."/".$param['sitenumber'] . "\n"; LOGError("importFromXML: error to update $table ". $param['runnumber'] ."/".$param['sitenumber']); if($conn != null) DBExec($conn,"rollback work"); @@ -550,7 +592,8 @@ function importFromXML($ar,$contest,$site,$tomain=false,$uptime=0) { } } } - // DBExec($conn,"commit work","importFromXML(commit)"); + if($conn != null) + DBExec($conn,"commit work","importFromXML(commit)"); return true; } @@ -601,7 +644,7 @@ function generateSiteXML($contest,$site,$updatetime) { } } $str .= "\n"; - DBExec($c,"commit work","generateXML(commit)"); + DBExec($c,"commit work","generateSiteXML(commit)"); LOGInfo("xml data generated for contest $contest site $site at time $updatetime"); return $str; } -- cgit v1.2.3 From 9f80afacfda4fbcede275901c9027f29afc4c100 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Mon, 16 Oct 2017 23:05:03 +0100 Subject: more displaying --- src/admin/transfer.php | 10 ++++++---- src/fextdata.php | 10 ++++------ 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/fextdata.php') diff --git a/src/admin/transfer.php b/src/admin/transfer.php index 718c33a..20ea2e5 100644 --- a/src/admin/transfer.php +++ b/src/admin/transfer.php @@ -29,7 +29,8 @@ if(is_writable($remotedir)) { if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null) ForceLoad("index.php"); - + echo "
\n";
+    echo "Building scores\n"
     $level=$s["sitescorelevel"];
     $data0 = array();
     if($level>0) {
@@ -52,8 +53,9 @@ if(is_writable($remotedir)) {
     $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");
+    echo "Transferring scores\n";
     scoretransfer($fname . ".dat", $localsite);
-    
+    echo "Saving scores\n";
     if(@create_zip($remotedir,glob($remotedir . '/*.dat'),$fname . ".tmp") != 1) {
       LOGError("Cannot create score zip file");
       if(@create_zip($remotedir,array(),$fname . ".tmp") == 1)
@@ -62,9 +64,9 @@ if(is_writable($remotedir)) {
       @rename($fname . ".tmp",$destination);
     }
     @fclose($fp);
-    
+    echo "Processing other data\n";
     getMainXML($_SESSION["usertable"]["contestnumber"]);
-    
+    echo "
\n"; @unlink($destination . ".lck"); } else { if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 180) diff --git a/src/fextdata.php b/src/fextdata.php index 6df8fbe..3eae683 100644 --- a/src/fextdata.php +++ b/src/fextdata.php @@ -264,7 +264,6 @@ function getMainXML($contest,$timeo=5) { $opts = array(); $opts['http']['timeout'] = $timeo; $context = stream_context_create($opts); - echo "
";
   echo "Connecting to ". $siteurl . "\n";
   try {
     $sess = @file_get_contents($siteurl . "index.php?getsessionid=1", 0, $context);
@@ -272,7 +271,7 @@ function getMainXML($contest,$timeo=5) {
     $sess=false;
   }
   if($sess===false) {
-    echo "timeout at connection\n
"; + echo "timeout at connection\n"; LOGError("getMainXML: timeout at get session id for $siteurl"); return false; } @@ -298,7 +297,7 @@ function getMainXML($contest,$timeo=5) { $ok=false; } if($ok===false) { - echo "timeout at authorization\n"; + echo "timeout at authorization\n"; LOGError("getMainXML: timeout at login for $siteurl"); return false; } @@ -332,7 +331,7 @@ function getMainXML($contest,$timeo=5) { $s=false; } if($s===false) { - echo "timeout at transferring\n"; + echo "timeout at transferring\n"; LOGError("getMainXML: timeout at transfer for $siteurl"); return false; } @@ -350,7 +349,7 @@ function getMainXML($contest,$timeo=5) { // LOGError("string: " . substr($s,0,50)); $s = decryptData($s,myhash (trim($sitedata[2])),'xml from main not ok'); if(strtoupper(substr($s,0,5)) != "") { - echo "Data corrupted\n"; + echo "Data corrupted\n"; return false; } echo "Importing data to local server\n"; @@ -368,7 +367,6 @@ function getMainXML($contest,$timeo=5) { echo "Transfer error (" . $ok . ")\n"; LOGError("xmltransfer: failed (" . $ok . ")"); } - echo "\n"; return false; } -- cgit v1.2.3 From c1e9a742ab8567fc7026a39ea95ae3e95400faf8 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Thu, 19 Oct 2017 14:04:41 +0100 Subject: new features --- src/admin/misc.php | 56 ++++++++++++++++++++++++++---------- src/admin/transfer.php | 77 -------------------------------------------------- src/fextdata.php | 4 +-- 3 files changed, 43 insertions(+), 94 deletions(-) delete mode 100644 src/admin/transfer.php (limited to 'src/fextdata.php') diff --git a/src/admin/misc.php b/src/admin/misc.php index 9872f12..3e5df80 100644 --- a/src/admin/misc.php +++ b/src/admin/misc.php @@ -27,28 +27,51 @@ require 'header.php'; document.form1.confirmation.value='confirm'; } } + function conf2() { + if (confirm("Confirm updating BOCA?")) { + if (confirm("This operation will update your BOCA system. Confirm?")) { + document.form1.confirmation.value='confirm'; + } + } + }
  -   +     - +
Not implemented
\n"; +} +$privatedir = $_SESSION['locr'] . $ds . "private"; +$remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores"; +$destination = $remotedir . $ds ."scores.zip"; +if(is_writable($remotedir)) { + if(($fp = @fopen($destination . ".lck",'x')) !== false) { + if($doscore) { if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null) ForceLoad("index.php"); - echo "
\n";
+      echo "
\n";
       echo "Building scores\n";
       $level=$s["sitescorelevel"];
       $data0 = array();
@@ -83,14 +106,17 @@ if (isset($_POST["Submit1"]) && $_POST["Submit1"] == "Transfer") {
 	@rename($fname . ".tmp",$destination);
       }
       @fclose($fp);
+    }
+    if($dotransfer) {
       echo "Processing other data\n";
-      getMainXML($_SESSION["usertable"]["contestnumber"]);
+      getMainXML($_SESSION["usertable"]["contestnumber"],10,$dotransferall);
       echo "
\n"; - @unlink($destination . ".lck"); - } else { - if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 180) - @unlink($destination . ".lck"); } + @unlink($destination . ".lck"); + } else { + if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 120) + @unlink($destination . ".lck"); + echo "
Transfers locked by other process - try again soon
\n"; } } ?> diff --git a/src/admin/transfer.php b/src/admin/transfer.php deleted file mode 100644 index 7f62326..0000000 --- a/src/admin/transfer.php +++ /dev/null @@ -1,77 +0,0 @@ -. -//////////////////////////////////////////////////////////////////////////////// -//Last updated 16/oct/2017 by cassio@ime.usp.br -require 'header.php'; - -$ds = DIRECTORY_SEPARATOR; -if($ds=="") $ds = "/"; - -$privatedir = $_SESSION['locr'] . $ds . "private"; -$remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores"; -$destination = $remotedir . $ds ."scores.zip"; -if(is_writable($remotedir)) { - if(($fp = @fopen($destination . ".lck",'x')) !== false) { - - if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null) - ForceLoad("index.php"); - echo "
\n";
-    echo "Building scores\n";
-    $level=$s["sitescorelevel"];
-    $data0 = array();
-    if($level>0) {
-      list($score,$data0) = DBScoreSite($_SESSION["usertable"]["contestnumber"], 
-					$_SESSION["usertable"]["usersitenumber"], 0, -1);
-    }
-    $ct=DBGetActiveContest();
-    $localsite=$ct['contestlocalsite'];
-    $fname = $privatedir . $ds . "score_localsite_" . $localsite . "_x"; // . md5($_SERVER['HTTP_HOST']);
-    @file_put_contents($fname . ".tmp",base64_encode(serialize($data0)));
-    @rename($fname . ".tmp",$fname . ".dat");
-    
-    $data0 = array();
-    if($level>0) {
-      list($score,$data0) = DBScoreSite($_SESSION["usertable"]["contestnumber"], 
-					$_SESSION["usertable"]["usersitenumber"], 1, -1);
-    }
-    $ct=DBGetActiveContest();
-    $localsite=$ct['contestlocalsite'];
-    $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");
-    echo "Transferring scores\n";
-    scoretransfer($fname . ".dat", $localsite);
-    echo "Saving scores\n";
-    if(@create_zip($remotedir,glob($remotedir . '/*.dat'),$fname . ".tmp") != 1) {
-      LOGError("Cannot create score zip file");
-      if(@create_zip($remotedir,array(),$fname . ".tmp") == 1)
-	@rename($fname . ".tmp",$destination);
-    } else {
-      @rename($fname . ".tmp",$destination);
-    }
-    @fclose($fp);
-    echo "Processing other data\n";
-    getMainXML($_SESSION["usertable"]["contestnumber"]);
-    echo "
\n"; - @unlink($destination . ".lck"); - } else { - if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 180) - @unlink($destination . ".lck"); - } -} - -?> diff --git a/src/fextdata.php b/src/fextdata.php index 3eae683..468c2d3 100644 --- a/src/fextdata.php +++ b/src/fextdata.php @@ -212,7 +212,7 @@ function scoretransfer($putname, $localsite, $timeo=5) { } -function getMainXML($contest,$timeo=5) { +function getMainXML($contest,$timeo=5,$upd=false) { $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; @@ -252,7 +252,7 @@ function getMainXML($contest,$timeo=5) { LOGError("getMainXML: invalid mainsiteurl entry"); return false; } - if(count($sitedata) == 3) { + if(count($sitedata) == 3 || $upd) { $updatetime=0; } else $updatetime=trim($sitedata[3]); -- cgit v1.2.3 From 618cb71ee7d196afe6fbf5ba82308e8afea24a20 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Tue, 24 Oct 2017 15:10:55 +0100 Subject: bug fixes --- src/admin/misc.php | 6 +++--- src/fextdata.php | 35 +++++++++++++++++++++++++++------ src/globals.php | 46 ++++++++++++++++++++++---------------------- src/private/score.sep | 42 ++++++++++++++++++---------------------- src/private/score.sep.sample | 23 ++++++++++++++++++++++ src/scoretable.php | 28 +++++++++++++-------------- 6 files changed, 110 insertions(+), 70 deletions(-) create mode 100644 src/private/score.sep.sample (limited to 'src/fextdata.php') 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'; -
 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'])
-- 
cgit v1.2.3