From 19a4da6301d765c9b07bf829095bf9fc4d3dad1a Mon Sep 17 00:00:00 2001 From: michele Date: Tue, 28 Apr 2026 18:05:54 +0000 Subject: [PATCH] Add fallback node refresh without maintenance --- app/Filament/Pages/Supporto/Modifiche.php | 33 ++++++++++++++++--- .../supporto/aggiornamento-launcher.blade.php | 7 ++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/app/Filament/Pages/Supporto/Modifiche.php b/app/Filament/Pages/Supporto/Modifiche.php index 4d8173d..cd24bfe 100644 --- a/app/Filament/Pages/Supporto/Modifiche.php +++ b/app/Filament/Pages/Supporto/Modifiche.php @@ -343,6 +343,21 @@ public function runNodeRefresh(): void $this->startNodeRefreshJob(); } + public function runNodeRefreshFallback(): void + { + if (! $this->canRunUpdate()) { + Notification::make() + ->title('Permessi insufficienti') + ->body('Solo super-admin/admin/amministratore possono lanciare il refresh completo del nodo.') + ->danger() + ->send(); + + return; + } + + $this->startNodeRefreshJob(true); + } + public function generateDevelopmentSnapshot(): void { if (! $this->canRunUpdate()) { @@ -1749,7 +1764,7 @@ private function startGitSyncJob(): void ->send(); } - private function startNodeRefreshJob(): void + private function startNodeRefreshJob(bool $skipMaintenance = false): void { $jobId = now()->format('YmdHis') . '-' . Str::lower(Str::random(6)); $jobsDir = storage_path('app/support/update-jobs'); @@ -1763,13 +1778,17 @@ private function startNodeRefreshJob(): void $this->updateJobId = $jobId; $this->updateInProgress = true; $this->updateProgressPercent = 1; - $this->updateProgressMessage = 'Preparazione refresh nodo da Gitea...'; + $this->updateProgressMessage = $skipMaintenance + ? 'Preparazione refresh nodo da Gitea senza maintenance mode...' + : 'Preparazione refresh nodo da Gitea...'; $this->updateProgressStatus = 'running'; @file_put_contents($progressPath, json_encode([ 'timestamp' => now()->toIso8601String(), 'percent' => 1, - 'message' => 'Preparazione refresh nodo da Gitea...', + 'message' => $skipMaintenance + ? 'Preparazione refresh nodo da Gitea senza maintenance mode...' + : 'Preparazione refresh nodo da Gitea...', 'status' => 'running', 'exit_code' => null, ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); @@ -1795,6 +1814,10 @@ private function startNodeRefreshJob(): void $args[] = '--skip-backup'; } + if ($skipMaintenance) { + $args[] = '--skip-maintenance'; + } + if ($driveEnabled && $adminId > 0) { $args[] = '--drive'; $args[] = '--admin-id=' . $adminId; @@ -1826,7 +1849,9 @@ private function startNodeRefreshJob(): void Notification::make() ->title('Refresh nodo avviato') - ->body('Sync da Gitea, migrate e rebuild cache verranno eseguiti direttamente sul nodo da browser.') + ->body($skipMaintenance + ? 'Refresh nodo avviato senza maintenance mode. Usalo solo come percorso di riserva su macchine dove il blocco accessi non si attiva.' + : 'Sync da Gitea, migrate e rebuild cache verranno eseguiti direttamente sul nodo da browser.') ->success() ->send(); } diff --git a/resources/views/filament/pages/supporto/aggiornamento-launcher.blade.php b/resources/views/filament/pages/supporto/aggiornamento-launcher.blade.php index 2aefda0..7265f9b 100644 --- a/resources/views/filament/pages/supporto/aggiornamento-launcher.blade.php +++ b/resources/views/filament/pages/supporto/aggiornamento-launcher.blade.php @@ -62,6 +62,9 @@ Aggiorna staging da Gitea + + Refresh di riserva senza maintenance + Solo sync Git avanzata @@ -74,6 +77,10 @@ Il pulsante Aggiorna staging da Gitea esegue il refresh completo del nodo: backup pre-update, maintenance mode per bloccare nuove operazioni utente, sync da Gitea, composer install, tentativo di build frontend se disponibile, migrate --force, pulizia cache, rebuild Blade e riapertura automatica del sistema. +
+ Se la macchina remota fallisce su Maintenance mode non attivata, prima allinea il nodo con Solo sync Git avanzata e poi usa Refresh di riserva senza maintenance. E un percorso di recupero per nodi dove il blocco accessi Laravel non parte correttamente. +
+ @if($this->updateInProgress)
@else