From f0d6ae289c6db17e0bf955093cef7acacf3daac6 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Fri, 12 Dec 2025 21:20:35 +0100 Subject: [PATCH] Read upgrade status file via SSH from localhost server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The status file is on the host filesystem, not inside the container. Use instant_remote_process() to read the file via SSH to Server::find(0). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- app/Http/Controllers/Api/OtherController.php | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/OtherController.php b/app/Http/Controllers/Api/OtherController.php index a0d5c6e56..c77c36d1e 100644 --- a/app/Http/Controllers/Api/OtherController.php +++ b/app/Http/Controllers/Api/OtherController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; +use App\Models\Server; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use OpenApi\Attributes as OA; @@ -234,13 +235,25 @@ public function upgradeStatus(Request $request) return response()->json(['message' => 'You are not allowed to view upgrade status.'], 403); } - $statusFile = '/data/coolify/source/.upgrade-status'; - - if (! file_exists($statusFile)) { + $server = Server::find(0); + if (! $server) { + return response()->json(['status' => 'none']); + } + + $statusFile = '/data/coolify/source/.upgrade-status'; + + // Read status file from localhost via SSH + try { + $content = instant_remote_process( + ["cat {$statusFile} 2>/dev/null || echo ''"], + $server, + false + ); + $content = trim($content ?? ''); + } catch (\Exception $e) { return response()->json(['status' => 'none']); } - $content = trim(file_get_contents($statusFile)); if (empty($content)) { return response()->json(['status' => 'none']); }