55use Illuminate \Http \Request ;
66use Illuminate \Http \JsonResponse ;
77use Pterodactyl \Http \Controllers \Controller ;
8+ use Pterodactyl \Repositories \Eloquent \NodeRepository ;
89use Pterodactyl \Services \Eggs \EggConfigurationService ;
910use Pterodactyl \Repositories \Eloquent \ServerRepository ;
1011use Pterodactyl \Services \Servers \ServerConfigurationStructureService ;
@@ -26,21 +27,29 @@ class ServerDetailsController extends Controller
2627 */
2728 private $ configurationStructureService ;
2829
30+ /**
31+ * @var \Pterodactyl\Repositories\Eloquent\NodeRepository
32+ */
33+ private $ nodeRepository ;
34+
2935 /**
3036 * ServerConfigurationController constructor.
3137 *
3238 * @param \Pterodactyl\Repositories\Eloquent\ServerRepository $repository
3339 * @param \Pterodactyl\Services\Servers\ServerConfigurationStructureService $configurationStructureService
3440 * @param \Pterodactyl\Services\Eggs\EggConfigurationService $eggConfigurationService
41+ * @param \Pterodactyl\Repositories\Eloquent\NodeRepository $nodeRepository
3542 */
3643 public function __construct (
3744 ServerRepository $ repository ,
3845 ServerConfigurationStructureService $ configurationStructureService ,
39- EggConfigurationService $ eggConfigurationService
46+ EggConfigurationService $ eggConfigurationService ,
47+ NodeRepository $ nodeRepository
4048 ) {
4149 $ this ->eggConfigurationService = $ eggConfigurationService ;
4250 $ this ->repository = $ repository ;
4351 $ this ->configurationStructureService = $ configurationStructureService ;
52+ $ this ->nodeRepository = $ nodeRepository ;
4453 }
4554
4655 /**
@@ -62,4 +71,32 @@ public function __invoke(Request $request, $uuid)
6271 'process_configuration ' => $ this ->eggConfigurationService ->handle ($ server ),
6372 ]);
6473 }
74+
75+ /**
76+ * Lists all servers with their configurations that are assigned to the requesting node.
77+ *
78+ * @param \Illuminate\Http\Request $request
79+ *
80+ * @return \Illuminate\Http\JsonResponse
81+ *
82+ * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
83+ */
84+ public function list (Request $ request )
85+ {
86+ $ authorization = substr ($ request ->header ('Authorization ' ), 7 );
87+
88+ $ node = $ this ->nodeRepository ->findFirstWhere ([ 'daemonSecret ' => $ authorization ]);
89+ $ servers = $ this ->repository ->loadEveryServerForNode ($ node ->id );
90+
91+ $ configurations = [];
92+
93+ foreach ($ servers as $ server ) {
94+ $ configurations [$ server ->uuid ] = [
95+ 'settings ' => $ this ->configurationStructureService ->handle ($ server ),
96+ 'process_configuration ' => $ this ->eggConfigurationService ->handle ($ server ),
97+ ];
98+ }
99+
100+ return JsonResponse::create ($ configurations );
101+ }
65102}
0 commit comments