daemonRepository = $daemonRepository; $this->keyProviderService = $keyProviderService; $this->repository = $repository; } /** * Returns listing of user's servers. * * @param \Illuminate\Http\Request $request * @return \Illuminate\View\View */ public function index(Request $request) { $servers = $this->repository->setSearchTerm($request->input('query'))->filterUserAccessServers( $request->user(), User::FILTER_LEVEL_ALL, config('pterodactyl.paginate.frontend.servers') ); return view('templates/base.core', ['servers' => $servers]); } /** * Returns status of the server in a JSON response used for populating active status list. * * @param \Illuminate\Http\Request $request * @param string $uuid * @return \Illuminate\Http\JsonResponse * @throws \Exception */ public function status(Request $request, $uuid) { $server = $this->repository->findFirstWhere([['uuidShort', '=', $uuid]]); $token = $this->keyProviderService->handle($server, $request->user()); if (! $server->installed) { return response()->json(['status' => 20]); } elseif ($server->suspended) { return response()->json(['status' => 30]); } try { $response = $this->daemonRepository->setServer($server)->setToken($token)->details(); } catch (ConnectException $exception) { throw new HttpException(Response::HTTP_GATEWAY_TIMEOUT, $exception->getMessage()); } catch (RequestException $exception) { throw new HttpException(500, $exception->getMessage()); } return response()->json(json_decode($response->getBody())); } }