mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 04:16:52 +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,
 | |
|         ]);
 | |
|     }
 | |
| }
 | 
