CONFIGURATION

ATTENTION !
Les mots de passe de base de données et d'administration doivent être saisis lors de la première configuration. Lors des autres accès à l'administration, laissez-les en blanc, sauf si vous désirez les changer.
Nous conseillons le mode d'identification 'basic', mais il se peut qu'il ne fonctionne pas sur certains systèmes. Utilisez alors le mode 'par URL'.
Si vous êtes obligé 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.

Utilisation de Webcronsave avec webcron.org :
method="POST">
BASE DE DONNEES
Nom du serveur :
Login utilisateur :
Nouveau mot de passe utilisateur :
Nom de la base de données :
ADMINISTRATION
Email en cas de problème :
Login d'accès à l'admin :
Nouveau mot de passe d'accès à l'admin :
Mode d'identification : basic : > par URL : >
LISTE DES SAUVEGARDES A FAIRE
sauvegarde du 1er du mois : > Oui > Non
sauvegarde du dimanche : > Oui > Non
sauvegarde de la veille : > Oui > Non
sauvegarde du jour : > Oui > Non
LISTE DES TABLES A SAUVEGARDER
table > Oui > Non
TOUTES LES TABLES SONT SAUVEGARDEES
TOUTES LES TABLES SONT SAUVEGARDEES

IDENTIFICATION

Login d'accès à l'admin :
Mot de passe d'accès à l'admin :
'.htmlentities($query).' 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().'
'); 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().'
'); 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().'
'); // $tmpfile=tempnam(ini_get("session.save_path"),"webcronsave_"); if (!$res) { echo 'Erreur Mysql '.mysql_error().'
'; 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é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 ê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é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 être vide'; } if($fd = fopen('./webcronsave/config.php','w')) { fputs($fd," $val) { fputs($fd,"\$_CONFIG[\"$key\"]=".var_export(recupchaine($val),true).";\n"); $_CONFIG[$key]=$val; } fputs($fd,'?','>'); fclose($fd); //je cré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è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é (algorithme GZIP)'; else $ext_f='Fichier non compressé'; 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 ''; } 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) :
'; $lst= ListFileSave(); for ($k= 0; $k < count($lst); $k++) { echo htmlentities($lst[$k]),'
'; } } //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é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écifique switch($action) { //webcron sauvegarde automatique case 'savewebcron': if (!saveData()) { mail($_CONFIG['EMAIL'],'Problè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 été sauvegardée',"message"); showMessage('Vérification de la connexion de la base de données','message'); if (!checkMysql()) showMessage('Problème de connexion Mysql '.mysql_error(),'error'); else showMessage('La connexion est bien configuré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 été effectuée avec succès','message'); } else showMessage('Problème de cré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ème de requête Mysql '.mysql_error(),'error'); else showMessage('Restauration effectuée avec succès','message'); showFooterPage(); break; //saisie de l'identification par URL case 'demandermdp': showHeaderPage(); showIdentifPage(); showFooterPage(); break; //gestion par défaut default: break; } ?>