From 997085a195f04ac4c9685bab8308d6aceea4f266 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Mon, 9 Mar 2020 15:29:58 +0100 Subject: [PATCH] Correzione modulo backup in caso di permessi mancanti --- modules/backups/actions.php | 5 +--- modules/backups/edit.php | 52 ++++++++++++++++++++----------------- modules/backups/init.php | 3 +-- src/Backup.php | 9 +++++-- 4 files changed, 37 insertions(+), 32 deletions(-) diff --git a/modules/backups/actions.php b/modules/backups/actions.php index b2eb2fed1..c676e2085 100755 --- a/modules/backups/actions.php +++ b/modules/backups/actions.php @@ -2,8 +2,6 @@ include_once __DIR__.'/../../core.php'; -$backup_dir = Backup::getDirectory(); - switch (filter('op')) { case 'getfile': $number = filter('number'); @@ -53,8 +51,7 @@ switch (filter('op')) { $number = intval($number); $backups = Backup::getList(); - $backup = $backups[$number]; - $filename = basename($backup); + $backup = $backups[$number] ?: $backup_dir; echo Util\FileSystem::size($backup); diff --git a/modules/backups/edit.php b/modules/backups/edit.php index 053369948..4ffb1ac9c 100755 --- a/modules/backups/edit.php +++ b/modules/backups/edit.php @@ -2,11 +2,9 @@ include_once __DIR__.'/../../core.php'; -$backup_dir = Backup::getDirectory(); $backups = Backup::getList(); -echo '

'.tr('Il backup è molto importante perché permette di creare una copia della propria installazione e relativi dati per poterla poi ripristinare in seguito a errori, cancellazioni accidentali o guasti hardware').'.

'; - +// Controllo sul requisito ZIP if (!extension_loaded('zip')) { echo "
@@ -15,27 +13,33 @@ if (!extension_loaded('zip')) {
'; } -if (starts_with($backup_dir, $docroot)) { +if (!empty($backup_dir)) { + $message = tr('Il percorso di backup è attualmente in: _PATH_', [ + '_PATH_' => ''.slashes($backup_dir).'', + ]); +} else { + $message = tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.'; +} + +// Controllo sui permessi di scrittura +if (!is_writable($backup_dir) || !is_readable($backup_dir)) { + echo ' +
+ '.$message.'
'.tr('La cartella di backup indicata non è utilizzabile dal gestionale a causa di alcuni permessi di scrittura non impostati correttamente').'. +
'; + + return; +} + +echo '

'.tr('Il backup è molto importante perché permette di creare una copia della propria installazione e relativi dati per poterla poi ripristinare in seguito a errori, cancellazioni accidentali o guasti hardware').'.

'; + +if (starts_with($backup_dir, DOCROOT)) { echo '
'.tr('Per motivi di sicurezza si consiglia di modificare il percorso della cartella di backup al di fuori della cartella di OSM, possibilmente in una unità esterna').'.
'; } -if (!is_writable($backup_dir)) { - echo ' -
- '.tr('La cartella di backup presente nella configurazione non è utilizzabile dal gestionale').'. - '.tr('Verificare che la cartella abbia i permessi di scrittura abilitati').'. -
'; -} - -if (!empty($backup_dir)) { - $message = tr('Il percorso di backup è attualmente in').': '.slashes($backup_dir).''; -} else { - $message = tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.'; -} - // Operazioni JavaScript echo ' '; @@ -158,7 +162,7 @@ if (file_exists($backup_dir)) { if (empty($backups_zip) && empty($backups_file)) { echo ' -
+
'.tr('Non è ancora stato trovato alcun backup!').' '.tr('Se hai già inserito dei dati su OSM crealo il prima possibile...').'
'; @@ -186,11 +190,11 @@ if (file_exists($backup_dir)) { '.tr('Nome del file').': '.$name.'
'.tr('Dimensione').':

- + - + '.tr('Scarica').'
@@ -236,7 +240,7 @@ if (file_exists($backup_dir)) { '.tr('Nome del file').': '.$name.'
'.tr('Dimensione').':

- + diff --git a/modules/backups/init.php b/modules/backups/init.php index dab6a26ee..acc0f251e 100644 --- a/modules/backups/init.php +++ b/modules/backups/init.php @@ -4,6 +4,5 @@ include_once __DIR__.'/../../core.php'; try { $backup_dir = Backup::getDirectory(); -}catch (UnexpectedValueException $e){ - +} catch (UnexpectedValueException $e) { } diff --git a/src/Backup.php b/src/Backup.php index bf3874551..15f9c9c7d 100755 --- a/src/Backup.php +++ b/src/Backup.php @@ -29,7 +29,7 @@ class Backup $result = rtrim($result, '/'); if (!directory($result) || !is_writable($result)) { - throw new UnexpectedValueException(); + //throw new UnexpectedValueException(); } return slashes($result); @@ -44,6 +44,11 @@ class Backup */ public static function getList($pattern = null) { + $directory = self::getDirectory(); + if (!is_writable($directory) || !is_readable($directory)) { + return []; + } + // Costruzione del pattern if (empty($pattern)) { $replaces = self::getReplaces(); @@ -56,7 +61,7 @@ class Backup $backups = Symfony\Component\Finder\Finder::create() ->name('/^'.$pattern.'/') ->sortByName() - ->in(self::getDirectory()) + ->in($directory) ->depth('== 0'); $results = [];