'\d+'])] public function showServer(int $id): void { $server = new Server(); if ($id > 0) { $server->check($id, READ); } else { $server->check(-1, CREATE); $server->getEmpty(); } $server->display(['id' => $id]); } #[Route('/plugin/urbackup/server/test/{id}', name: 'urbackup_server_test', methods: ['POST', 'GET'])] public function testConnection(int $id = 0): JsonResponse { if (!Profile::canCurrentUser(READ)) { return new JsonResponse([ 'success' => false, 'message' => 'No permission', ], 403); } if ($id <= 0) { $id = (int) ($_POST['id'] ?? $_GET['id'] ?? 0); } if ($id <= 0) { return new JsonResponse([ 'success' => false, 'message' => 'Invalid server ID', ], 400); } $server = new Server(); if (!$server->getFromDB($id)) { return new JsonResponse([ 'success' => false, 'message' => 'Server not found', ], 404); } try { $client = new UrbackupApiClient($server); $result = $client->testConnection(); $server->update([ 'id' => $id, 'last_api_status' => $result['success'] ? 1 : 0, 'last_api_message' => $result['message'], 'last_api_check' => date('Y-m-d H:i:s'), ]); return new JsonResponse($result); } catch (Throwable $e) { return new JsonResponse([ 'success' => false, 'message' => $e->getMessage(), ], 500); } } }