mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-11-04 03:36:53 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Pterodactyl\Http\Controllers\Admin;
 | 
						|
 | 
						|
use Pterodactyl\Http\Controllers\Controller;
 | 
						|
use Pterodactyl\Contracts\Repository\EggRepositoryInterface;
 | 
						|
use Pterodactyl\Traits\Controllers\PlainJavascriptInjection;
 | 
						|
use Pterodactyl\Contracts\Repository\NodeRepositoryInterface;
 | 
						|
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
 | 
						|
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
 | 
						|
use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;
 | 
						|
use Pterodactyl\Contracts\Repository\AllocationRepositoryInterface;
 | 
						|
 | 
						|
class StatisticsController extends Controller
 | 
						|
{
 | 
						|
    use PlainJavascriptInjection;
 | 
						|
 | 
						|
    private $allocationRepository;
 | 
						|
 | 
						|
    private $databaseRepository;
 | 
						|
 | 
						|
    private $eggRepository;
 | 
						|
 | 
						|
    private $nodeRepository;
 | 
						|
 | 
						|
    private $serverRepository;
 | 
						|
 | 
						|
    private $userRepository;
 | 
						|
 | 
						|
    public function __construct(
 | 
						|
        AllocationRepositoryInterface $allocationRepository,
 | 
						|
        DatabaseRepositoryInterface $databaseRepository,
 | 
						|
        EggRepositoryInterface $eggRepository,
 | 
						|
        NodeRepositoryInterface $nodeRepository,
 | 
						|
        ServerRepositoryInterface $serverRepository,
 | 
						|
        UserRepositoryInterface $userRepository
 | 
						|
    ) {
 | 
						|
        $this->allocationRepository = $allocationRepository;
 | 
						|
        $this->databaseRepository = $databaseRepository;
 | 
						|
        $this->eggRepository = $eggRepository;
 | 
						|
        $this->nodeRepository = $nodeRepository;
 | 
						|
        $this->serverRepository = $serverRepository;
 | 
						|
        $this->userRepository = $userRepository;
 | 
						|
    }
 | 
						|
 | 
						|
    public function index()
 | 
						|
    {
 | 
						|
        $servers = $this->serverRepository->all();
 | 
						|
        $nodes = $this->nodeRepository->all();
 | 
						|
        $usersCount = $this->userRepository->count();
 | 
						|
        $eggsCount = $this->eggRepository->count();
 | 
						|
        $databasesCount = $this->databaseRepository->count();
 | 
						|
        $totalAllocations = $this->allocationRepository->count();
 | 
						|
        $suspendedServersCount = $this->serverRepository->getSuspendedServersCount();
 | 
						|
 | 
						|
        $totalServerRam = 0;
 | 
						|
        $totalNodeRam = 0;
 | 
						|
        $totalServerDisk = 0;
 | 
						|
        $totalNodeDisk = 0;
 | 
						|
        foreach ($nodes as $node) {
 | 
						|
            $stats = $this->nodeRepository->getUsageStatsRaw($node);
 | 
						|
            $totalServerRam += $stats['memory']['value'];
 | 
						|
            $totalNodeRam += $stats['memory']['max'];
 | 
						|
            $totalServerDisk += $stats['disk']['value'];
 | 
						|
            $totalNodeDisk += $stats['disk']['max'];
 | 
						|
        }
 | 
						|
 | 
						|
        $tokens = [];
 | 
						|
        foreach ($nodes as $node) {
 | 
						|
            $tokens[$node->id] = $node->daemonSecret;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->injectJavascript([
 | 
						|
            'servers' => $servers,
 | 
						|
            'suspendedServers' => $suspendedServersCount,
 | 
						|
            'totalServerRam' => $totalServerRam,
 | 
						|
            'totalNodeRam' => $totalNodeRam,
 | 
						|
            'totalServerDisk' => $totalServerDisk,
 | 
						|
            'totalNodeDisk' => $totalNodeDisk,
 | 
						|
            'nodes' => $nodes,
 | 
						|
            'tokens' => $tokens,
 | 
						|
        ]);
 | 
						|
 | 
						|
        return view('admin.statistics', [
 | 
						|
            'servers' => $servers,
 | 
						|
            'nodes' => $nodes,
 | 
						|
            'usersCount' => $usersCount,
 | 
						|
            'eggsCount' => $eggsCount,
 | 
						|
            'totalServerRam' => $totalServerRam,
 | 
						|
            'databasesCount' => $databasesCount,
 | 
						|
            'totalNodeRam' => $totalNodeRam,
 | 
						|
            'totalNodeDisk' => $totalNodeDisk,
 | 
						|
            'totalServerDisk' => $totalServerDisk,
 | 
						|
            'totalAllocations' => $totalAllocations,
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
}
 |