forked from halo-battle/game
690 lines
19 KiB
PHP
690 lines
19 KiB
PHP
|
<?
|
|||
|
function showHeaderPage()
|
|||
|
{
|
|||
|
?>
|
|||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>WebcronSave V1.41</title>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
|
|||
|
<meta http-equiv="expires" content="0">
|
|||
|
<style type="text/css">
|
|||
|
<!--
|
|||
|
body { background: #FFFFFF; }
|
|||
|
|
|||
|
#topnav {
|
|||
|
background-color: #003399;
|
|||
|
padding: 1px;
|
|||
|
}
|
|||
|
|
|||
|
#topnav li {
|
|||
|
display : inline;
|
|||
|
width: 100%;
|
|||
|
background-color: #FFFFFF;
|
|||
|
margin: 1 0px 1 0px;
|
|||
|
}
|
|||
|
|
|||
|
#topnav a {
|
|||
|
color: #003399;
|
|||
|
}
|
|||
|
|
|||
|
#topnav a {
|
|||
|
color: #003399;
|
|||
|
}
|
|||
|
|
|||
|
.message {
|
|||
|
color: black;
|
|||
|
font_weight:bold;
|
|||
|
}
|
|||
|
.error {
|
|||
|
color: red;
|
|||
|
font_weight:bold;
|
|||
|
}
|
|||
|
|
|||
|
//-->
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<?
|
|||
|
}
|
|||
|
|
|||
|
// recup chaine de get, post ou cookie avec ou sans stripslashes selon magic_quotes_gpc
|
|||
|
function RecupChaine($chaine) {
|
|||
|
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
|
|||
|
return $chaine; // il n'y avait pas magic
|
|||
|
}
|
|||
|
|
|||
|
function showMessage($message,$class)
|
|||
|
{
|
|||
|
?>
|
|||
|
<div class="<?=$class?>">
|
|||
|
<?=$message?>
|
|||
|
</div>
|
|||
|
<?
|
|||
|
}
|
|||
|
|
|||
|
function moimeme($paramget='') {
|
|||
|
|
|||
|
global $_CONFIG;
|
|||
|
$ret=rtrim($_SERVER['PHP_SELF'],'/');
|
|||
|
$ret .=$paramget;
|
|||
|
if ($_CONFIG['IDENTIF'] != 'basic') {
|
|||
|
$ret .= empty($paramget)?'?':'&';
|
|||
|
$ret .= 'login='.urlencode($_CONFIG['LOGIN_HTTP']);
|
|||
|
$ret .= '&pass='.urlencode($_CONFIG['PASS_HTTP']);
|
|||
|
}
|
|||
|
return '"'.$ret.'"';
|
|||
|
}
|
|||
|
|
|||
|
function showFormConfig()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
?>
|
|||
|
<H1>CONFIGURATION</H1>
|
|||
|
<B>ATTENTION !</B><BR />
|
|||
|
Les mots de passe de base de donn<EFBFBD>es et d'administration doivent <EFBFBD>tre saisis lors de la premi<EFBFBD>re configuration.
|
|||
|
Lors des autres acc<EFBFBD>s <EFBFBD> l'administration, laissez-les en blanc, sauf si vous d<EFBFBD>sirez les changer.<BR>
|
|||
|
Nous conseillons le mode d'identification 'basic', mais il se peut qu'il ne fonctionne pas sur certains syst<EFBFBD>mes.
|
|||
|
Utilisez alors le mode 'par URL'.<br>
|
|||
|
<B>Si vous <EFBFBD>tes oblig<EFBFBD> d'utiliser le mode 'par URL' et que d'autres personnes utilisent votre machine, videz l'historique de
|
|||
|
votre browser sinon d'autres personnes pourront retrouver vos login et mot de passe.</B>
|
|||
|
<BR><BR>
|
|||
|
<B>Utilisation de Webcronsave avec webcron.org :</B><br>
|
|||
|
<UL>
|
|||
|
<LI>identification basic : cr<EFBFBD>ez une t<EFBFBD>che quotidienne avec l'url :<BR>
|
|||
|
<i>http://monsite.com/webcronsave.php?action=savewebcron</i><BR>
|
|||
|
et mettez le login et le mot de passe d'administration dans les login et mot de passe de la cr<63>ation/<2F>dition d'une t<EFBFBD>che.
|
|||
|
<LI>identification par URL : cr<EFBFBD>ez une t<EFBFBD>che quotidienne avec l'url :<BR>
|
|||
|
<i>http://monsite.com/webcronsave.php?action=savewebcron&login=monlogin&pass=monpass</i><BR>
|
|||
|
mais laissez vides les login et mot de passe de la cr<EFBFBD>ation/<EFBFBD>dition d'une t<EFBFBD>che.
|
|||
|
</UL>
|
|||
|
|
|||
|
<form action=<?=moimeme()?> method="POST">
|
|||
|
<input type="hidden" name="action" value="saveconfig">
|
|||
|
<TABLE border=1 cellpadding="3" align="center">
|
|||
|
|
|||
|
<tr bgcolor="#FFFFCC"><td colspan="2" align = "center" ><b>BASE DE DONNEES</b></td></tr>
|
|||
|
<TR bgcolor="#FFFFCC">
|
|||
|
<td align="right">Nom du serveur :</td>
|
|||
|
<td><input type="text" name="SERVER" value="<?=$_CONFIG['SERVER']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#FFFFCC">
|
|||
|
<td align="right">Login utilisateur :</td>
|
|||
|
<td><input type="text" name="USER" value="<?=$_CONFIG['USER']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#FFFFCC">
|
|||
|
<td align="right">Nouveau mot de passe utilisateur :</td>
|
|||
|
<td><input type="text" name="PASS"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#FFFFCC">
|
|||
|
<td align="right">Nom de la base de donn<EFBFBD>es :</td>
|
|||
|
<td><input type="text" name="BASE" value="<?=$_CONFIG['BASE']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCCCFF"><td colspan="2" align = "center"><b>ADMINISTRATION</b></td></tr>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Email en cas de probl<EFBFBD>me :</td>
|
|||
|
<td><input type="text" name="EMAIL" value="<?=$_CONFIG['EMAIL']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Login d'acc<63>s <20> l'admin :</td>
|
|||
|
<td><input type="text" name="LOGIN_HTTP" value="<?=$_CONFIG['LOGIN_HTTP']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Nouveau mot de passe d'acc<63>s <20> l'admin :</td>
|
|||
|
<td><input type="text" name="PASS_HTTP"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Mode d'identification :</td>
|
|||
|
<td>
|
|||
|
basic : <input type="radio" name="IDENTIF" value="basic"<? echo $_CONFIG['IDENTIF']!='basic'?'':'CHECKED'?>>
|
|||
|
par URL : <input type="radio" name="IDENTIF" value="url"<? echo $_CONFIG['IDENTIF']=='basic'?'':'CHECKED'?>>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td colspan="2" align="center"><b>LISTE DES SAUVEGARDES A FAIRE</b</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td align="right"> sauvegarde du 1er du mois : </td>
|
|||
|
<td><input type="radio" name="MONTH" value="1" <?=($_CONFIG['MONTH']==1)?"CHECKED":""?>> Oui <input type="radio" name="MONTH" value="0" <?=($_CONFIG['MONTH']==0)?"CHECKED":""?>> Non </td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td align="right">sauvegarde du dimanche : </td>
|
|||
|
<td><input type="radio" name="WEEK" value="1" <?=($_CONFIG['WEEK']==1)?"CHECKED":""?>> Oui <input type="radio" name="WEEK" value="0" <?=($_CONFIG['WEEK']==0)?"CHECKED":""?>> Non </td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td align="right">sauvegarde de la veille : </td>
|
|||
|
<td><input type="radio" name="YESTERDAY" value="1" <?=($_CONFIG['YESTERDAY']==1)?"CHECKED":""?>> Oui <input type="radio" name="YESTERDAY" value="0" <?=($_CONFIG['YESTERDAY']==0)?"CHECKED":""?>> Non </td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td align="right">sauvegarde du jour : </td>
|
|||
|
<td><input type="radio" name="TODAY" value="1" <?=($_CONFIG['TODAY']==1)?"CHECKED":""?>> Oui <input type="radio" name="TODAY" value="0" <?=($_CONFIG['TODAY']==0)?"CHECKED":""?>> Non </td>
|
|||
|
</tr>
|
|||
|
<? if (isset($_CONFIG["BASE"]) && isset($_CONFIG["SERVER"]) && isset($_CONFIG["USER"]) && isset($_CONFIG["PASS"])) {
|
|||
|
if (checkMysql())
|
|||
|
{
|
|||
|
$list=listTable();
|
|||
|
?>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td colspan="2" align="center"><b>LISTE DES TABLES A SAUVEGARDER</b</td>
|
|||
|
</tr>
|
|||
|
<?
|
|||
|
foreach($list as $table)
|
|||
|
{
|
|||
|
if (!isset($_CONFIG['TABLE_'.$table['nom']])) $_CONFIG['TABLE_'.$table['nom']]=1;
|
|||
|
?>
|
|||
|
<tr bgcolor="#CCFFFF">
|
|||
|
<td align="right">table <b><?=$table['nom']?></b></td>
|
|||
|
<td><input type="radio" name="TABLE_<?=$table['nom']?>" value="1" <?=($_CONFIG['TABLE_'.$table['nom']]==1)?"CHECKED":""?>> Oui <input type="radio" name="TABLE_<?=$table['nom']?>" value="0" <?=($_CONFIG['TABLE_'.$table['nom']]==0)?"CHECKED":""?>> Non </td>
|
|||
|
</tr>
|
|||
|
<?
|
|||
|
}
|
|||
|
?>
|
|||
|
<? } else {?>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td colspan="2" align="center"><b>TOUTES LES TABLES SONT SAUVEGARDEES</b</td>
|
|||
|
</tr>
|
|||
|
<? } } else { ?>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td colspan="2" align="center"><b>TOUTES LES TABLES SONT SAUVEGARDEES</b</td>
|
|||
|
</tr>
|
|||
|
<? } ?>
|
|||
|
<TR>
|
|||
|
<td colspan="2" align="center"><input type="submit" name="submit" value="Valider"></td>
|
|||
|
</tr>
|
|||
|
|
|||
|
</table>
|
|||
|
</form>
|
|||
|
<?
|
|||
|
}
|
|||
|
function showFooterPage()
|
|||
|
{
|
|||
|
?>
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
<?
|
|||
|
}
|
|||
|
function showMenu()
|
|||
|
{
|
|||
|
?>
|
|||
|
<ul id="topnav">
|
|||
|
<li> <a href=<?=moimeme('?action=config')?>>Configuration</a> </li>
|
|||
|
<li> <a href=<?=moimeme('?action=save')?>>Sauvegarde Manuelle</a> </li>
|
|||
|
<li> <a href=<?=moimeme('?action=restore')?>>Restauration</a> </li>
|
|||
|
<li> <a href="http://www.webcron.org">Webcron</a> </li>
|
|||
|
</ul>
|
|||
|
<?
|
|||
|
}
|
|||
|
|
|||
|
function showIdentifPage()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
?>
|
|||
|
<H1>IDENTIFICATION</H1>
|
|||
|
<FORM align="center" method="GET" action="<?=$_SERVER['PHP_SELF']?>">
|
|||
|
<TABLE border=1 cellpadding="3" align="center">
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Login d'acc<63>s <20> l'admin :</td>
|
|||
|
<td><input type="text" name="login" value="<?=$_CONFIG['LOGIN_HTTP']?>"></td>
|
|||
|
</tr>
|
|||
|
<tr bgcolor="#CCCCFF">
|
|||
|
<td align="right">Mot de passe d'acc<63>s <20> l'admin :</td>
|
|||
|
<td><input type="text" name="pass"></td>
|
|||
|
</tr>
|
|||
|
<TR>
|
|||
|
<td colspan="2" align="center"><input type="submit" name="submit" value="Valider"></td>
|
|||
|
</tr>
|
|||
|
</TABLE>
|
|||
|
</FORM>
|
|||
|
<?
|
|||
|
}
|
|||
|
|
|||
|
function checkMysql()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
include('./webcronsave/config.php');
|
|||
|
|
|||
|
if (!$my=mysql_connect($_CONFIG['SERVER'],$_CONFIG['USER'],$_CONFIG['PASS']))
|
|||
|
return false;
|
|||
|
else
|
|||
|
{
|
|||
|
if (!mysql_select_db($_CONFIG['BASE']))
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
function saveData()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
checkMysql();
|
|||
|
$fname=date('Y-m-d')."_".$_CONFIG['BASE'];
|
|||
|
$list=listTable();
|
|||
|
if (!function_exists('gzopen'))
|
|||
|
$fp=fopen('./webcronsave/'.$fname.'.sql','w');
|
|||
|
else
|
|||
|
$fp=gzopen('./webcronsave/'.$fname.'.gz','w');
|
|||
|
if ($fp)
|
|||
|
{
|
|||
|
foreach($list as $table)
|
|||
|
{
|
|||
|
if (isset($_CONFIG['TABLE_'.$table['nom']]))
|
|||
|
{
|
|||
|
if ($_CONFIG['TABLE_'.$table['nom']]=='1')
|
|||
|
{
|
|||
|
dumpTable($fp,$table);
|
|||
|
}
|
|||
|
}
|
|||
|
else dumpTable($fp,$table);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
return false;
|
|||
|
}
|
|||
|
function restoreFile($file)
|
|||
|
{
|
|||
|
showMessage('Restauration en cours','message');
|
|||
|
checkMysql();
|
|||
|
list($name,$ext)=explode('.',$file);
|
|||
|
if ($ext=='gz')
|
|||
|
$pref='gz';
|
|||
|
else
|
|||
|
$pref='f';
|
|||
|
$open=$pref.'open';
|
|||
|
$gets=$pref.'gets';
|
|||
|
$eof=$pref.'eof';
|
|||
|
$close=$pref.'close';
|
|||
|
$fp=$open($dir='./webcronsave/'.$file,'r');
|
|||
|
if ($fp)
|
|||
|
{
|
|||
|
$buffer='';
|
|||
|
$inChamp=false;
|
|||
|
while (!$eof($fp)) {
|
|||
|
$s=$gets($fp, 4096);
|
|||
|
$old='';
|
|||
|
for($i=0;$i<strlen($s);$i++)
|
|||
|
{
|
|||
|
$current=$s[$i];
|
|||
|
if ($current=="'" && $old!='\\')
|
|||
|
$inChamp=!$inChamp;
|
|||
|
|
|||
|
if ($current==';' && $inChamp==false)
|
|||
|
{
|
|||
|
$query=$buffer;
|
|||
|
if (!mysql_query($query))
|
|||
|
{
|
|||
|
showMessage('Probl<62>me de requete <b>'.htmlentities($query).'</b> Mysql '.mysql_error(),'error');
|
|||
|
return false;
|
|||
|
}
|
|||
|
$buffer='';
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$buffer.=$current;
|
|||
|
}
|
|||
|
$old=$current;
|
|||
|
}
|
|||
|
}
|
|||
|
$close($fp);
|
|||
|
return true;
|
|||
|
}
|
|||
|
else return false;
|
|||
|
}
|
|||
|
|
|||
|
function dumpTable($fp,$table)
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
$nomtable=$table['nom'];
|
|||
|
|
|||
|
if (!function_exists('gzopen'))
|
|||
|
$fwrite='fwrite';
|
|||
|
else
|
|||
|
$fwrite='gzwrite';
|
|||
|
|
|||
|
$fwrite($fp,'#sauvegarde base mysql '.$_CONFIG['BASE']."\n\n");
|
|||
|
$fwrite($fp,"DROP TABLE IF EXISTS `$nomtable`;\n\n");
|
|||
|
|
|||
|
$sql='SET SQL_QUOTE_SHOW_CREATE=1';
|
|||
|
$res=mysql_query($sql); // pas fatal
|
|||
|
|
|||
|
$sql="SHOW CREATE TABLE `$nomtable`";
|
|||
|
$res=mysql_query($sql) or die ('Erreur Mysql '.mysql_error().'<br>');
|
|||
|
while($res && $row=mysql_fetch_row($res))
|
|||
|
{
|
|||
|
if (is_numeric($table['autoinc'])) $row[1] .= ' AUTO_INCREMENT='.$table['autoinc'];
|
|||
|
$fwrite($fp,$row[1].";\n");
|
|||
|
}
|
|||
|
$fwrite($fp,"\n\n");
|
|||
|
|
|||
|
$res = mysql_query("SELECT * FROM `$nomtable`") or die ('Erreur Mysql '.mysql_error().'<br>');
|
|||
|
|
|||
|
while ($row = mysql_fetch_assoc($res)){
|
|||
|
$strFieldsNames = '';
|
|||
|
$strFieldsValues = '';
|
|||
|
|
|||
|
foreach ($row as $field_name => $field_value){
|
|||
|
if ($strFieldsNames) $strFieldsNames .= ', ';
|
|||
|
$strFieldsNames .= "`$field_name`";
|
|||
|
|
|||
|
if($strFieldsValues) $strFieldsValues .= ', ';
|
|||
|
$strFieldsValues .= "'" . addslashes($field_value) . "'";
|
|||
|
}
|
|||
|
|
|||
|
$fwrite($fp,"INSERT INTO `$nomtable` ($strFieldsNames) values($strFieldsValues);\n");
|
|||
|
}
|
|||
|
$fwrite($fp,"\n\n");
|
|||
|
}
|
|||
|
|
|||
|
function listTable()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
$list_table=array();
|
|||
|
$list_autoinc =array();
|
|||
|
$res=mysql_query('SHOW TABLE STATUS') or die ('Erreur Mysql '.mysql_error().'<br>');
|
|||
|
// $tmpfile=tempnam(ini_get("session.save_path"),"webcronsave_");
|
|||
|
if (!$res)
|
|||
|
{
|
|||
|
echo 'Erreur Mysql '.mysql_error().'<br>';
|
|||
|
die;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
while($row=mysql_fetch_array($res))
|
|||
|
{
|
|||
|
$list_table[]=array('nom'=>$row['Name'],'autoinc'=>$row['Auto_increment']);
|
|||
|
}
|
|||
|
}
|
|||
|
return $list_table;
|
|||
|
}
|
|||
|
|
|||
|
function saveConfig($data)
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
|
|||
|
// on v<>rifie si config correcte
|
|||
|
if (empty($data['PASS'])) {
|
|||
|
if (empty($_CONFIG['PASS'])) {
|
|||
|
showMessage ('Le mot de passe de la base de donn<6E>es est vide.','error');
|
|||
|
showMessage ('Ceci n\'est acceptable que si vous faites un essai en local','error');
|
|||
|
$_CONFIG['PASS']='';
|
|||
|
}
|
|||
|
$data['PASS']=$_CONFIG['PASS']; // prise en compte nouveau mot de passe bdd
|
|||
|
}
|
|||
|
|
|||
|
if (empty($data['PASS_HTTP'])) {
|
|||
|
if (empty($_CONFIG['PASS_HTTP'])) {
|
|||
|
return 'le mot de passe admin ne doit pas <20>tre vide'; // mot de passe admin vide interdit
|
|||
|
}
|
|||
|
$data['PASS_HTTP']=$_CONFIG['PASS_HTTP']; // prise en compte nouveau mot de passe admin
|
|||
|
}
|
|||
|
|
|||
|
if (empty($data['USER'])) {
|
|||
|
showMessage ('Le nom d\'utilisateur de la base de donn<6E>es est vide.','error');
|
|||
|
showMessage ('Ceci n\'est acceptable que si vous faites un essai en local','error');
|
|||
|
}
|
|||
|
if (empty($data['LOGIN_HTTP'])) {
|
|||
|
return 'le nom d\'utilisateur admin ne doit pas <20>tre vide';
|
|||
|
}
|
|||
|
|
|||
|
if($fd = fopen('./webcronsave/config.php','w'))
|
|||
|
{
|
|||
|
fputs($fd,"<?php\n");
|
|||
|
foreach($data as $key => $val)
|
|||
|
{
|
|||
|
fputs($fd,"\$_CONFIG[\"$key\"]=".var_export(recupchaine($val),true).";\n");
|
|||
|
$_CONFIG[$key]=$val;
|
|||
|
}
|
|||
|
fputs($fd,'?','>');
|
|||
|
fclose($fd);
|
|||
|
//je cr<63>e un htaccess pour ne pas que les gens viennent chercher les fichiers en direct
|
|||
|
if($fd = @fopen('./webcronsave/.htaccess','w'))
|
|||
|
{
|
|||
|
$str="order deny,allow\ndeny from all\n";
|
|||
|
fputs($fd,$str);
|
|||
|
fclose($fd);
|
|||
|
}
|
|||
|
return '';
|
|||
|
}
|
|||
|
else
|
|||
|
return 'Probl<62>me de droits : impossible de sauvegarder le fichier de config';
|
|||
|
}
|
|||
|
|
|||
|
function getFileSize($size) {
|
|||
|
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
|
|||
|
for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
|
|||
|
return round($size, 2).$units[$i];
|
|||
|
}
|
|||
|
|
|||
|
function fileData($file)
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
$dir='./webcronsave/';
|
|||
|
list($name,$ext)=explode('.',$file);
|
|||
|
list($date,$db)=explode('_',$name);
|
|||
|
list($year,$month,$day)=explode('-',$date);
|
|||
|
if ($ext=='gz') $ext_f='Fichier compress<73> (algorithme GZIP)';
|
|||
|
else $ext_f='Fichier non compress<73>';
|
|||
|
return 'sauvegarde du '.$day.'/'.$month.'/'.$year.' '.getFileSize(filesize($dir.$file)).' '.$ext_f;
|
|||
|
}
|
|||
|
function checkFile()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
if (!function_exists('gzopen'))
|
|||
|
$ext='.sql';
|
|||
|
else
|
|||
|
$ext='.gz';
|
|||
|
//sauvegarde du jour
|
|||
|
if ($_CONFIG['TODAY']=='1') $names[date('Y-m-d').'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d').'_'.$_CONFIG['BASE'].$ext;
|
|||
|
//sauvegarde de la veille
|
|||
|
if ($_CONFIG['YESTERDAY']=='1') $names[date('Y-m-d',time()-86400).'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d',time()-86400).'_'.$_CONFIG['BASE'].$ext;
|
|||
|
//sauvegarde du debut du mois
|
|||
|
if ($_CONFIG['MONTH']=='1') $names[date('Y-m-01').'_'.$_CONFIG['BASE'].$ext]=date('Y-m-01').'_'.$_CONFIG['BASE'].$ext;
|
|||
|
//sauvegarde du dimanche
|
|||
|
if ($_CONFIG['WEEK']=='1') $names[date('Y-m-d',time()-date('w')*86400).'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d',time()-date("w")*86400)."_".$_CONFIG['BASE'].$ext;
|
|||
|
//var_dump($names);
|
|||
|
$list_f=listFileSave();
|
|||
|
foreach($list_f as $file)
|
|||
|
{
|
|||
|
if (!in_array($file,$names)) unlink('./webcronsave/'.$file);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
function listFileSave()
|
|||
|
{
|
|||
|
$dir='./webcronsave/';
|
|||
|
$list_f=array();
|
|||
|
if (is_dir($dir)) {
|
|||
|
if ($dh = opendir($dir)) {
|
|||
|
while (($file = readdir($dh)) !== false) {
|
|||
|
if (!in_array($file,array('.','..','config.php','.htaccess')))
|
|||
|
{
|
|||
|
$list_f[]=$file;
|
|||
|
}
|
|||
|
}
|
|||
|
closedir($dh);
|
|||
|
}
|
|||
|
}
|
|||
|
return $list_f;
|
|||
|
}
|
|||
|
function listeSave()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
|
|||
|
$list_f=listFileSave();
|
|||
|
|
|||
|
echo '<ul id="list_archive">';
|
|||
|
foreach($list_f as $val)
|
|||
|
{
|
|||
|
echo '<li> <a href='.moimeme('?action=dorestore&file='.urlencode($val)).'>Restaurer</a> '.fileData($val).'</li>';
|
|||
|
}
|
|||
|
echo '</ul>';
|
|||
|
}
|
|||
|
function readConfig()
|
|||
|
{
|
|||
|
global $_CONFIG;
|
|||
|
$rsrc=@opendir( './webcronsave');
|
|||
|
if ($rsrc===false) return false;
|
|||
|
closedir ($rsrc);
|
|||
|
|
|||
|
if (file_exists('./webcronsave/config.php'))
|
|||
|
include_once('./webcronsave/config.php');
|
|||
|
if (!isset($_CONFIG['TODAY'])) $_CONFIG['TODAY']=0;
|
|||
|
if (!isset($_CONFIG['YESTERDAY'])) $_CONFIG['YESTERDAY']=0;
|
|||
|
if (!isset($_CONFIG['MONTH'])) $_CONFIG['MONTH']=1;
|
|||
|
if (!isset($_CONFIG['WEEK'])) $_CONFIG['WEEK']=0;
|
|||
|
if (!isset($_CONFIG['SERVER'])) $_CONFIG['SERVER']='localhost';
|
|||
|
if (!isset($_CONFIG['USER'])) $_CONFIG['USER']='';
|
|||
|
if (!isset($_CONFIG['PASS'])) $_CONFIG['PASS']='';
|
|||
|
if (!isset($_CONFIG['BASE'])) $_CONFIG['BASE']='';
|
|||
|
if (!isset($_CONFIG['EMAIL'])) $_CONFIG['EMAIL']='';
|
|||
|
if (!isset($_CONFIG['LOGIN_HTTP'])) $_CONFIG['LOGIN_HTTP']='';
|
|||
|
if (!isset($_CONFIG['PASS_HTTP'])) $_CONFIG['PASS_HTTP']='';
|
|||
|
if (!isset($_CONFIG['IDENTIF'])) $_CONFIG['IDENTIF']='basic';
|
|||
|
return true;
|
|||
|
|
|||
|
} // function readConfig()
|
|||
|
|
|||
|
|
|||
|
function AfficherListe() {
|
|||
|
echo 'sauvegarde(s) disponible(s) :<BR>';
|
|||
|
$lst= ListFileSave();
|
|||
|
for ($k= 0; $k < count($lst); $k++) {
|
|||
|
echo htmlentities($lst[$k]),'<BR>';
|
|||
|
}
|
|||
|
|
|||
|
} //function AfficherListe()
|
|||
|
|
|||
|
//GESTION DE LA PAGE
|
|||
|
|
|||
|
if (isset($_POST['action']) && strlen($_POST['action'])>0) $action=recupchaine($_POST['action']);
|
|||
|
else if (isset($_GET['action']) && strlen($_GET['action'])>0) $action=recupchaine($_GET['action']);
|
|||
|
//par d<>faut l'action est la configuration
|
|||
|
else $action='config';
|
|||
|
|
|||
|
if (!readConfig())
|
|||
|
{
|
|||
|
$action='error';
|
|||
|
$errorMessage='Veuillez cr<63>er le repertoire \'webcronsave\' pour sauvegarder votre config et vos sauvegardes.';
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!empty($_CONFIG['LOGIN_HTTP']) && !empty($_CONFIG['PASS_HTTP']))
|
|||
|
{
|
|||
|
if ($_CONFIG['IDENTIF']!='basic') {
|
|||
|
if (empty($_GET['login']) || empty($_GET['pass'])) // identification non fournie
|
|||
|
$action='demandermdp';
|
|||
|
else if ((recupchaine($_GET['login']) != $_CONFIG['LOGIN_HTTP']) ||
|
|||
|
(recupchaine($_GET['pass']) != $_CONFIG['PASS_HTTP']) ) // identif incorrecte
|
|||
|
$action='demandermdp';
|
|||
|
|
|||
|
} // fin identif par url
|
|||
|
else { // identif par basic
|
|||
|
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
|||
|
header('WWW-Authenticate: Basic realm="WebCronSave"');
|
|||
|
header('HTTP/1.0 401 Unauthorized');
|
|||
|
exit;
|
|||
|
} else {
|
|||
|
if ($_SERVER['PHP_AUTH_USER']!=$_CONFIG['LOGIN_HTTP'] || $_SERVER['PHP_AUTH_PW']!=$_CONFIG['PASS_HTTP'])
|
|||
|
{
|
|||
|
header('WWW-Authenticate: Basic realm="WebCronSave"');
|
|||
|
header('HTTP/1.0 401 Unauthorized');
|
|||
|
exit;
|
|||
|
}
|
|||
|
}
|
|||
|
} // fin identif par basic
|
|||
|
}
|
|||
|
}
|
|||
|
checkFile();
|
|||
|
//traitement sp<73>cifique
|
|||
|
switch($action)
|
|||
|
{
|
|||
|
//webcron sauvegarde automatique
|
|||
|
case 'savewebcron':
|
|||
|
if (!saveData()) {
|
|||
|
mail($_CONFIG['EMAIL'],'Probl<62>me avec votre sauvegarde','Veuillez v<>rifier votre configuration : http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n");
|
|||
|
echo 'pb sauvegarde';
|
|||
|
} else {
|
|||
|
checkFile();
|
|||
|
AfficherListe();
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
//Affichage de la config
|
|||
|
case 'config':
|
|||
|
showHeaderPage();
|
|||
|
showMenu();
|
|||
|
showFormConfig();
|
|||
|
break;
|
|||
|
|
|||
|
//sauvegarde de la config
|
|||
|
case 'saveconfig':
|
|||
|
showHeaderPage();
|
|||
|
$diag=saveConfig($_POST);
|
|||
|
showMenu();
|
|||
|
if ($diag!='')
|
|||
|
{
|
|||
|
showMessage($diag,'error');
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
showMessage('La configuration a <20>t<EFBFBD> sauvegard<72>e',"message");
|
|||
|
showMessage('V<>rification de la connexion de la base de donn<6E>es','message');
|
|||
|
if (!checkMysql()) showMessage('Probl<62>me de connexion Mysql '.mysql_error(),'error');
|
|||
|
else showMessage('La connexion est bien configur<75>e !','message');
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
//Affichage d'une erreur
|
|||
|
case 'error':
|
|||
|
showHeaderPage();
|
|||
|
showMenu();
|
|||
|
showMessage($errorMessage,'error');
|
|||
|
showFooterPage();
|
|||
|
break;
|
|||
|
|
|||
|
//Gestion de la sauvegarde manuel
|
|||
|
case 'save':
|
|||
|
showHeaderPage();
|
|||
|
showMenu();
|
|||
|
if (saveData())
|
|||
|
{
|
|||
|
showMessage('La sauvegarde a <20>t<EFBFBD> effectu<74>e avec succ<63>s','message');
|
|||
|
}
|
|||
|
else
|
|||
|
showMessage('Probl<62>me de cr<63>ation de fichier','error');
|
|||
|
showFooterPage();
|
|||
|
break;
|
|||
|
|
|||
|
//gestion de la restauration
|
|||
|
case 'restore':
|
|||
|
showHeaderPage();
|
|||
|
showMenu();
|
|||
|
listeSave();
|
|||
|
showFooterPage();
|
|||
|
break;
|
|||
|
|
|||
|
//gestion de la restauration
|
|||
|
case 'dorestore':
|
|||
|
showHeaderPage();
|
|||
|
showMenu();
|
|||
|
$file=recupchaine($_GET['file']);
|
|||
|
if (!restoreFile($file)) showMessage('Probl<62>me de requ<71>te Mysql '.mysql_error(),'error');
|
|||
|
else showMessage('Restauration effectu<74>e avec succ<63>s','message');
|
|||
|
showFooterPage();
|
|||
|
break;
|
|||
|
|
|||
|
//saisie de l'identification par URL
|
|||
|
case 'demandermdp':
|
|||
|
showHeaderPage();
|
|||
|
showIdentifPage();
|
|||
|
showFooterPage();
|
|||
|
break;
|
|||
|
|
|||
|
//gestion par d<>faut
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
?>
|