node->allocations->toBase(); return view('admin.servers.view.build', [ 'server' => $server, 'assigned' => $allocations->where('server_id', $server->id)->sortBy('port')->sortBy('ip'), 'unassigned' => $allocations->where('server_id', null)->sortBy('port')->sortBy('ip'), ]); } /** * Returns the server startup management page. */ public function startup(Request $request, Server $server): View { $variables = $this->environmentService->handle($server); $eggs = Egg::all()->keyBy('id'); $this->plainInject([ 'server' => $server, 'server_variables' => $variables, 'eggs' => $eggs, ]); return view('admin.servers.view.startup', compact('server', 'eggs')); } /** * Returns all the databases that exist for the server. */ public function database(Request $request, Server $server): View { return view('admin.servers.view.database', [ 'hosts' => DatabaseHost::all(), 'server' => $server, ]); } /** * Returns all the mounts that exist for the server. */ public function mounts(Request $request, Server $server): View { $server->load('mounts'); $mounts = Mount::query() ->whereHas('eggs', fn ($q) => $q->where('id', $server->egg_id)) ->whereHas('nodes', fn ($q) => $q->where('id', $server->node_id)) ->get(); return view('admin.servers.view.mounts', [ 'mounts' => $mounts, 'server' => $server, ]); } /** * Returns the base server management page, or an exception if the server * is in a state that cannot be recovered from. * * @throws \App\Exceptions\DisplayException */ public function manage(Request $request, Server $server): View { if ($server->status === ServerState::InstallFailed) { throw new DisplayException('This server is in a failed install state and cannot be recovered. Please delete and re-create the server.'); } // Check if the panel doesn't have at least 2 nodes configured. $nodeCount = Node::query()->count(); $canTransfer = false; if ($nodeCount >= 2) { $canTransfer = true; } \JavaScript::put([ 'nodeData' => Node::getForServerCreation(), ]); return view('admin.servers.view.manage', [ 'nodes' => Node::all(), 'server' => $server, 'canTransfer' => $canTransfer, ]); } /** * Returns the server deletion page. */ public function delete(Request $request, Server $server): View { return view('admin.servers.view.delete', compact('server')); } }