Correzione modulo backup in caso di permessi mancanti

This commit is contained in:
Thomas Zilio 2020-03-09 15:29:58 +01:00
parent 49ee854fd3
commit 997085a195
4 changed files with 37 additions and 32 deletions

View File

@ -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);

View File

@ -2,11 +2,9 @@
include_once __DIR__.'/../../core.php';
$backup_dir = Backup::getDirectory();
$backups = Backup::getList();
echo '<p>'.tr('Il backup è <b>molto importante</b> 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').'.</p>';
// Controllo sul requisito ZIP
if (!extension_loaded('zip')) {
echo "
<div class='alert alert-warning'>
@ -15,27 +13,33 @@ if (!extension_loaded('zip')) {
</div>';
}
if (starts_with($backup_dir, $docroot)) {
if (!empty($backup_dir)) {
$message = tr('Il percorso di backup è attualmente in: _PATH_', [
'_PATH_' => '<b>'.slashes($backup_dir).'</b>',
]);
} 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 '
<div class="alert alert-danger">
<i class="fa fa-warning"></i> '.$message.'<br>'.tr('La cartella di backup indicata non è utilizzabile dal gestionale a causa di alcuni permessi di scrittura non impostati correttamente').'.
</div>';
return;
}
echo '<p>'.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').'.</p>';
if (starts_with($backup_dir, DOCROOT)) {
echo '
<div class="alert alert-warning">
<i class="fa fa-warning"></i> '.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').'.
</div>';
}
if (!is_writable($backup_dir)) {
echo '
<div class="alert alert-warning">
<i class="fa fa-warning"></i> '.tr('La cartella di backup presente nella configurazione non è utilizzabile dal gestionale').'.
'.tr('Verificare che la cartella abbia i permessi di scrittura abilitati').'.
</div>';
}
if (!empty($backup_dir)) {
$message = tr('Il percorso di backup è attualmente in').': <b>'.slashes($backup_dir).'</b>';
} else {
$message = tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.';
}
// Operazioni JavaScript
echo '
<script>
@ -97,7 +101,7 @@ echo '
<div class="col-md-8">
<div class="callout callout-success">
<p>'.$message.'</p>
<p><small>'.tr('Dimensione totale: _SPAZIO_', [
<p><small>'.tr('Spazio totale occupato dai backup: _SPAZIO_', [
'_SPAZIO_' => '<i id="total_size"></i>',
]).'</small></p>
<p><small>'.tr('Numero di backup: _NUM_', [
@ -158,7 +162,7 @@ if (file_exists($backup_dir)) {
if (empty($backups_zip) && empty($backups_file)) {
echo '
<div class="alert alert-warning">
<div class="alert alert-info">
<i class="fa fa-warning"></i> '.tr('Non è ancora stato trovato alcun backup!').'
'.tr('Se hai già inserito dei dati su OSM crealo il prima possibile...').'
</div>';

View File

@ -5,5 +5,4 @@ include_once __DIR__.'/../../core.php';
try {
$backup_dir = Backup::getDirectory();
} catch (UnexpectedValueException $e) {
}

View File

@ -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 = [];