From 3f47fa5e9fb88f7c4d1410771e49c643d2963108 Mon Sep 17 00:00:00 2001 From: SahrulGnwn Date: Mon, 15 Aug 2022 20:36:14 +0700 Subject: [PATCH] Fix Bypass node limit when upgrade --- app/Http/Controllers/ServerController.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 28242206..f53f4756 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -266,6 +266,19 @@ class ServerController extends Controller $oldProduct = Product::where('id', $server->product->id)->first(); $newProduct = Product::where('id', $request->product_upgrade)->first(); $serverAttributes = Pterodactyl::getServerAttributes($server->pterodactyl_id); + $serverRelationships = $serverAttributes['relationships']; + + // Get node resource allocation info + $nodeId = $serverRelationships['node']['attributes']['id']; + $node = Node::where('id', $nodeId)->firstOrFail(); + $nodeName = $node->name; + + // Check if node has enough memory and disk space + $requireMemory = $newProduct->memory - $oldProduct->memory; + $requiredisk = $newProduct->disk - $oldProduct->disk; + $checkResponse = Pterodactyl::checkNodeResources($node, $requireMemory, $requiredisk); + if ($checkResponse == False) return redirect()->route('servers.index')->with('error', __("The node '" . $nodeName . "' doesn't have the required memory or disk left to upgrade the server.")); + $priceupgrade = $newProduct->getHourlyPrice(); if ($priceupgrade < $oldProduct->getHourlyPrice()) { @@ -283,7 +296,7 @@ class ServerController extends Controller $user->decrement('credits', $priceupgrade); //restart the server $response = Pterodactyl::powerAction($server, "restart"); - if ($response->failed()) return $this->serverCreationFailed($response, $server); + if ($response->failed()) return redirect()->route('servers.index')->with('error', $response->json()['errors'][0]['detail']); return redirect()->route('servers.show', ['server' => $server->id])->with('success', __('Server Successfully Upgraded')); } else