Path: blob/1.0-develop/app/Http/Controllers/Admin/Nodes/NodeViewController.php
10284 views
<?php12namespace Pterodactyl\Http\Controllers\Admin\Nodes;34use Illuminate\View\View;5use Illuminate\Http\Request;6use Pterodactyl\Models\Node;7use Illuminate\Support\Collection;8use Pterodactyl\Models\Allocation;9use Pterodactyl\Http\Controllers\Controller;10use Pterodactyl\Repositories\Eloquent\NodeRepository;11use Pterodactyl\Repositories\Eloquent\ServerRepository;12use Pterodactyl\Traits\Controllers\JavascriptInjection;13use Pterodactyl\Services\Helpers\SoftwareVersionService;14use Pterodactyl\Repositories\Eloquent\LocationRepository;1516class NodeViewController extends Controller17{18use JavascriptInjection;1920/**21* NodeViewController constructor.22*/23public function __construct(24private LocationRepository $locationRepository,25private NodeRepository $repository,26private ServerRepository $serverRepository,27private SoftwareVersionService $versionService,28) {29}3031/**32* Returns index view for a specific node on the system.33*/34public function index(Request $request, Node $node): View35{36$node = $this->repository->loadLocationAndServerCount($node);3738return view('admin.nodes.view.index', [39'node' => $node,40'stats' => $this->repository->getUsageStats($node),41'version' => $this->versionService,42]);43}4445/**46* Returns the settings page for a specific node.47*/48public function settings(Request $request, Node $node): View49{50return view('admin.nodes.view.settings', [51'node' => $node,52'locations' => $this->locationRepository->all(),53]);54}5556/**57* Return the node configuration page for a specific node.58*/59public function configuration(Request $request, Node $node): View60{61return view('admin.nodes.view.configuration', compact('node'));62}6364/**65* Return the node allocation management page.66*/67public function allocations(Request $request, Node $node): View68{69$node = $this->repository->loadNodeAllocations($node);7071$this->plainInject(['node' => Collection::make([$node])->only(['id'])]);7273return view('admin.nodes.view.allocation', [74'node' => $node,75'allocations' => Allocation::query()->where('node_id', $node->id)76->groupBy('ip')77->orderByRaw('INET_ATON(ip) ASC')78->get(['ip']),79]);80}8182/**83* Return a listing of servers that exist for this specific node.84*/85public function servers(Request $request, Node $node): View86{87$this->plainInject([88'node' => Collection::make([$node->makeVisible(['daemon_token_id', 'daemon_token'])])89->only(['scheme', 'fqdn', 'daemonListen', 'daemon_token_id', 'daemon_token']),90]);9192return view('admin.nodes.view.servers', [93'node' => $node,94'servers' => $this->serverRepository->loadAllServersForNode($node->id, 25),95]);96}97}9899100