Ajouter le paramètre get FILTER

This commit is contained in:
Fred Tempez 2024-03-18 19:05:37 +01:00
parent 137c151e19
commit 7138c07a89

View File

@ -4,22 +4,38 @@
Ce script PHP est conçu pour être appelé via une requête HTTP GET avec une clé spécifique pour déclencher la création d'une archive ZIP de sauvegarde. Ce script PHP est conçu pour être appelé via une requête HTTP GET avec une clé spécifique pour déclencher la création d'une archive ZIP de sauvegarde.
Exemple d'appel dans une URL : Exemple d'appel dans une URL :
http://example.com/chemin/vers/autobackup.php?key=your_secret_key http://example.com/chemin/vers/autobackup.php?key=your_secret_key&filter=site
La clé doit être fournie en tant que paramètre "key" dans l'URL et correspondre à celle stockée dans le fichier "data.key" pour que la création de l'archive soit autorisée. Si la clé est valide, le script parcourt le répertoire spécifié et ajoute les fichiers à l'archive ZIP. Si la clé est invalide ou absente, le script affiche un message d'erreur et termine son exécution. La clé doit être fournie en tant que paramètre "key" dans l'URL et correspondre à celle stockée dans le fichier "data.key" pour que la création de l'archive soit autorisée. Si la clé est valide, le script parcourt le répertoire spécifié en fonction du paramètre "filter" et ajoute les fichiers à l'archive ZIP. Si la clé est invalide ou absente, le script renvoie une réponse avec le code d'erreur 401 Unauthorized.
Le paramètre "filter" en GET permet de spécifier le filtre à appliquer lors de la création de l'archive. Sa valeur peut être "file" ou "data". Si le paramètre n'est pas spécifié, le filtre est vide par défaut, ce qui signifie que tous les fichiers seront inclus dans l'archive.
*/ */
// Vérification de la clé // Vérification de la clé
if (isset ($_GET['key'])) { if (isset($_GET['key'])) {
$key = $_GET['key']; $key = $_GET['key'];
$storedKey = file_get_contents('data.key'); $storedKey = file_get_contents('data.key');
if ($key !== $storedKey) { if ($key !== $storedKey) {
http_response_code(401); http_response_code(401); // Clé invalide, renvoie une réponse avec le code d'erreur 401 Unauthorized
exit(); exit();
} }
// Création du ZIP
// Définition du filtre par défaut
$filter = ['backup', 'tmp']; $filter = ['backup', 'tmp'];
// Tableau de correspondance entre les valeurs de "filter" et les répertoires à inclure
$filterDirectories = [
'file' => ['backup', 'tmp', 'file'],
'data' => ['backup', 'tmp', 'data']
];
// Vérification et traitement du paramètre "filter" en GET
if (isset($_GET['filter']) && isset($filterDirectories[$_GET['filter']])) {
$filter = $filterDirectories[$_GET['filter']];
}
// Création du ZIP
$fileName = date('Y-m-d-H-i-s', time()) . '-rolling-backup.zip'; $fileName = date('Y-m-d-H-i-s', time()) . '-rolling-backup.zip';
$zip = new ZipArchive(); $zip = new ZipArchive();
$zip->open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE); $zip->open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
@ -43,5 +59,7 @@ if (isset ($_GET['key'])) {
} }
} }
$zip->close(); $zip->close();
http_response_code(201);
} http_response_code(201); // Création de l'archive réussie, renvoie une réponse avec le code 201 Created
}
?>