body
{
width:100%;
margin:0 auto;
padding:0px;
font-family:helvetica;
background-color:#A9D0F5;
}
#wrapper
{
text-align:left;
margin-left:20px;
padding:0px;
width:995px;
}
#wrapperleft
{
text-align:center;
margin:0 auto;
padding:0px;
width:995px;
}
#wrapper h1
{
margin-top:100px;
font-size:40px;
}
#wrapper h1 p
{
font-size:17px;
}
#wrapper #feed_div
{
background-color:white;
width:550px;
height:320px;
overflow-y:scroll;
margin-left:20px;
margin-top:20px;
text-align:left;
border:1px solid silver;
padding:10px;
}
#wrapper #feed_div h2
{
font-size:17px;
}
#wrapper #feed_div .title a
{
text-decoration:none;
color:#0080FF;
}
";
global $dbi;
$aid=$_SESSION['aid'];
$prefix=$_SESSION['prefix'];
$id_comune=$_SESSION['id_comune'];
$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
if(isset($param['id_cons_gen'])) $id_cons_gen=intval($param['id_cons_gen']); else $id_cons_gen=0;
$perms=ChiSei(0);
if ($perms!=256) return; # $mex = htmlspecialchars("Non sono disponibili nuovi aggiornamenti");
include("modules/Elezioni/ele.php");
global $righe,$righedb;
function aggiornadb(){
global $righedb,$prefix,$dbi,$dbname;
$righedb='';
global $ctrlerr;
$ctrlerr=0;
if(file_exists(dirname(__FILE__)."/aggiornadb.php")) {
ob_start();
include (dirname(__FILE__).'/aggiornadb.php');
$righedb=ob_get_contents();
ob_end_clean();
}
}
function risultati()
{
global $ctrlerr,$righe,$righedb;
if($ctrlerr)
echo "
Aggiornamento completato con errori
Controllare i log di aggiornamento del database
";
else
echo "
Aggiornamento completato
";
echo "
Log delle operazioni
";
echo $righe;
echo "";
echo "
Operazioni effettuate sul db:
";
echo "
";
echo $righedb;
echo "
";
echo "
";
echo "
Operazioni di aggiornamento concluse.
";
}
//if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
if(isset($param['file'])) $pfile=$param['file']; else $pfile='';
if (isset($param['errmex'])) {
switch ($param['errmex']) {
case 1:
$mex='Non sono disponibili nuovi aggiornamenti';
break;
case 2:
$mex="Non c'è connessione con il server";
break;
case 3:
$mex="E' presente un file di nome $pfile nella cartella admin, va cancellato per poter aggiornare";
break;
case 4:
$mex="Errore durante la copia del pacchetto $pfile - aggiornamento interrotto";
break;
case 5:
$mex="Errore nell'estrazione del file zip! Aggiornamento interrotto";
break;
case 6:
$mex="Errore durante la creazione della directory $pfile (controllare i permessi), aggiornamento interrotto";
break;
case 7:
$mex="Errore durante la creazione della directory $pfile (controllare i permessi), aggiornamento interrotto";
break;
case 8:
$mex="Errore durante la copia del file $pfile (controllare i permessi), aggiornamento interrotto";
break;
default:
$mex='';
}
} else $mex='';
if (isset($param['procedi'])) $procedi=intval($param['procedi']); else $procedi=0;
if(isset($param['errmex']) and $param['errmex']<3) {
ele();
if(!$procedi){
echo "
$mex
";
echo "";
}else{
aggiornadb();
risultati();
}
include("footer.php");
die();
}
if(phpversion()<5.6) $host="http://80.211.143.127";
else $host="https://trac.eleonline.it";
######################
$rev=0;
if ($stream = fopen('http://mail.eleonline.it/version/risposta.php', 'r')) {
$rev= stream_get_contents($stream, 4);
fclose($stream);
$newrev=(int) filter_var($rev, FILTER_SANITIZE_NUMBER_INT);
$_SESSION['remoterev']=$newrev;
}else{
$errmex=2;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
}
#$newrev=$_SESSION['remoterev'];
#$myrev=$_SESSION['localrev'];
include('versione.php');
$myrev=intval(substr($versione,-4,4));
$_SESSION['localrev']=$myrev;
if (isset($_SESSION['forzadb'])) $myrev=378;
if($newrev<=$myrev) {
$errmex=1;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
}
#####
if(!$procedi){
ele();
if (isset($_SESSION['forzadb']))
echo "
E' necessario riallineare il DB, confermare l'aggiornamento.";
else
echo "
Revisione installata: $myrev";
echo "
Revisione disponibile: $newrev
";
unset($_SESSION['forzadb']);
#####
echo "";
echo "
Log delle modifiche (massimo 100 righe)
";
echo "
";
$myrev++;
$rss = simplexml_load_file("$host/ele3/log?format=rss&mode=stop_on_copy&rev=$newrev&stop_rev=$myrev&format=rss&max=100&verbose=on#");
#$rss = simplexml_load_file("$host/ele3/log?action=follow_copy&mode=stop_on_copy&rev=$newrev&stop_rev=$myrev&limit=100&verbose=on#");
echo '
'. $rss->channel->title . '
';
foreach ($rss->channel->item as $item)
{
echo '
' . $item->title . "
";
$str=preg_replace('/\s\--/','
--',$item->description);
echo "
" . $str . "
";
}
echo "
";
echo "
";
#####
$file = file("$host/ele3/log/?format=changelog&limit=100&mode=stop_on_copy&rev=$newrev&stop_rev=$myrev&verbose=off");
# echo "
Procedo con l'aggiornamento? ";
echo "
";
$filename = "$host/ele3/changeset?format=zip&new=$newrev&new_path=%2F&old=$myrev&old_path=%2F";
$za = new ZipArchive();
$path = "./files/";
$righe='';
if(file_exists($path)) {
if (!is_dir($path)) {
$errmex=3;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=$path"); exit;
}
else
$righe.= "
La cartella $path è già presente, procedo con l'aggiornamento";
}else{
$righe.= "
La cartella $path non è presente, procedo con la creazione";
mkdir($path, 0777, true);
}
/* $newfile=$path."aggiornamento".$newrev;
copy($filename,$newfile);
$za->open($newfile);
echo "
prima";
for( $i = 0; $i < $za->numFiles; $i++ ){
echo "
$i - dentro";
$stat = $za->statIndex( $i );
print_r( $stat['name'] . PHP_EOL );
}
*/ ############
include("footer.php");die();
}
$admin = '../admin';
$client = '../client';
# $path = "/tmp/files";
$backup = "backup".$myrev;
$path = "./files/";
$righe='';
/* if(file_exists($path)) {
$i=1;
$ispath=$path;
while(file_exists($ispath))
$ispath=$path.$i++;
$path.=--$i.'/';
}else $path.='/';
if (!is_dir($path)) {
if(false===rename($path,$path."_da_".$myrev."_a_".$newrev)) {
$errmex="E' presente un file di nome $path nella cartella admin, va cancellato per poter aggiornare";
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
}
$righe.= "
La cartella $path non è presente, procedo con la creazione";
mkdir($path, 0777, true);
}
else
$righe.= "
La cartella $path è già presente, procedo con l'aggiornamento";
}else{
$righe.= "
Creo la cartella $path";
mkdir($path, 0777, true);*/
$trunk=$path.'trunk';
$trunkadm=$trunk.'/admin';
$trunkcli=$trunk.'/client';
# }
# if(!file_exists($trunk)) if (false === mkdir($trunk)) { die("Impossibile creare la cartella trunk, il programma viene interrotto");}
# if(!copy($file,$trunkadm)){ $righe.= "
Errore durante la copia del pacchetto di aggiornamento
";}
// Nome del file zip : https://trac.eleonline.it/ele3/changeset?format=zip&new=377&new_path=%2F&old=360&old_path=%2F
# https://trac.eleonline.it/ele3/browser/trunk?format=zip&rev=377
$filename = "$host/ele3/changeset?format=zip&new=$newrev&new_path=%2F&old=$myrev&old_path=%2F";
$newfile=$path."aggiornamento".$newrev;
if(!copy($filename,$newfile)){
$errmex=4;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=$newfile"); exit;
}
$zip = new ZipArchive;
$res = $zip->open($newfile);
############
#$za = new ZipArchive();
#$za->open('theZip.zip');
# $za->open($newfile);
/*
for( $i = 0; $i < $za->numFiles; $i++ ){
$stat = $za->statIndex( $i );
print_r( basename( $stat['name'] ) . PHP_EOL );
}
die(); */
################
$righe.= "
$newfile scaricato";
if ($res === TRUE) {
$zip->extractTo($path);
$zip->close();
$righe.= '
File zip estratto';
} else {
$errmex= 5;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
}
if(file_exists($path.$backup)) {
$i=1;
$isback=$path.$backup;
while(file_exists($isback))
$isback=$path.$backup.$i++;
$backup=$path.$backup.$i.'/';
} else $backup=$path.$backup.'/';
/* if(false===rename($backup,$backup."_a_".$myrev)) {
$errmex="E' presente un file di nome $backup_a_$myrev nella cartella admin e non posso rinominare l'ultimo eseguito, va fatto a mano per poter aggiornare";
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
}
}else{ */
$righe.= "
Creo la cartella di backup: $backup";
mkdir($backup, 0755);
# }
$righe.= "
Copio i nuovi files nell'installazione di amministrazione locale";
recurse_copy($trunkadm,$admin,$backup.'/admin/');
$righe.= "
Files di aggiornamento copiati correttamente.";
$righe.= "
Copio i nuovi files nell'installazione client locale";
recurse_copy($trunkcli,$client,$backup.'/client/');
$righe.= "
Files di aggiornamento copiati correttamente.";
function recurse_copy($src,$dst,$bck) {
$dir = opendir($src);
if(!file_exists($dst))
if(@mkdir($dst)==false) {
$errmex= 6;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=$dst"); exit;
}
if(!file_exists($bck))
if(mkdir($bck,0777,true)==false) {
$errmex= 7;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=$bck"); exit;
}
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file,$bck . '/' . $file);
}
else {
if(file_exists($dst . '/' . $file))
if(false===copy($dst . '/' . $file,$bck . '/' . $file)) {
$errmex= 8;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=$bck/$file"); exit;
}
if(!copy($src . '/' . $file,$dst . '/' . $file)) {
$errmex= 8;
Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex&file=".$dst . '/' . $file); exit;
}
}
}
}
closedir($dir);
}
$righedb='';
global $ctrlerr;
$ctrlerr=0;
if(file_exists($trunkadm."/modules/Elezioni/aggiornadb.php")) {
ob_start();
include ('modules/Elezioni/aggiornadb.php');
$righedb=ob_get_contents();
ob_end_clean();
}
#$dir = "./files/";
if(file_exists($path)){
$di = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
chmod($file, 0777);
$file->isDir() ? rmdir($file) : unlink($file);
}
}
$_SESSION['localrev']=$newrev;
ele();
if($ctrlerr)
echo "
Aggiornamento completato con errori
Controllare i log di aggiornamento del database
";
else
echo "
Aggiornamento completato
";
echo "
Log delle operazioni
";
echo $righe;
echo "";
echo "
Operazioni effettuate sul db:
";
echo "
";
echo $righedb;
echo "
";
echo "
";
echo "
Operazioni di aggiornamento concluse.
";
include("footer.php");
die();
?>