diff --git a/.gitignore b/.gitignore index 578c3da9..1c959d05 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ site/i18n/*.json core/vendor/tinymce/link_list.json robots.txt sitemap.xml -.gitignore \ No newline at end of file +.gitignore +core/module/config/tool/data.key \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index 169f2a03..7fcba400 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,7 +6,8 @@ ### Améliorations - Sauvegarde de l'état des sélecteurs dans les tables des fontes et des utilisateurs. -- Ajoute des contrôles d'intégrité des base de données Json lors des opérations de chargement et de sauvegarde. +- Ajoute des contrôles d'intégrité des bases de données Json lors des opérations de chargement et de sauvegarde. +- Fournit une interface pour le contrôle des sauvegardes automatisées et de leur nettoyage. ## Version 13.1.07 diff --git a/core/module/config/tool/.htaccess b/core/module/config/tool/.htaccess new file mode 100644 index 00000000..a5decbff --- /dev/null +++ b/core/module/config/tool/.htaccess @@ -0,0 +1,4 @@ + + Order Allow,Deny + Deny from all + diff --git a/core/module/config/tool/autobackup.php b/core/module/config/tool/autobackup.php new file mode 100644 index 00000000..52166257 --- /dev/null +++ b/core/module/config/tool/autobackup.php @@ -0,0 +1,47 @@ +open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE); + $directory = '../../../../site'; + $files = new RecursiveIteratorIterator( + new RecursiveCallbackFilterIterator( + new RecursiveDirectoryIterator( + $directory, + RecursiveDirectoryIterator::SKIP_DOTS + ), + function ($fileInfo, $key, $iterator) use ($filter) { + return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); + } + ) + ); + foreach ($files as $name => $file) { + if (!$file->isDir()) { + $filePath = $file->getRealPath(); + $relativePath = substr($filePath, strlen(realpath($directory)) + 1); + $zip->addFile($filePath, $relativePath); + } + } + $zip->close(); + http_response_code(201); +} \ No newline at end of file diff --git a/core/module/config/tool/cleanautobackup.php b/core/module/config/tool/cleanautobackup.php new file mode 100644 index 00000000..f0144d10 --- /dev/null +++ b/core/module/config/tool/cleanautobackup.php @@ -0,0 +1,49 @@ +isFile() && $file->getExtension() === 'tar.gz') { + // Vérifie si le fichier a été modifié avant la limite de temps + if ($file->getMTime() < $timeLimit) { + // Supprime le fichier + unlink($file->getRealPath()); + } + } + } + // Si la clé est manquante, affiche un message d'erreur et arrête l'exécution du script + http_response_code(201); +} \ No newline at end of file