Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Http/Controllers/Api/Remote/EggInstallController.php
10280 views
1
<?php
2
3
namespace Pterodactyl\Http\Controllers\Api\Remote;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Http\JsonResponse;
7
use Pterodactyl\Http\Controllers\Controller;
8
use Pterodactyl\Services\Servers\EnvironmentService;
9
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
10
11
class EggInstallController extends Controller
12
{
13
/**
14
* EggInstallController constructor.
15
*/
16
public function __construct(private EnvironmentService $environment, private ServerRepositoryInterface $repository)
17
{
18
}
19
20
/**
21
* Handle request to get script and installation information for a server
22
* that is being created on the node.
23
*
24
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
25
*/
26
public function index(Request $request, string $uuid): JsonResponse
27
{
28
$node = $request->attributes->get('node');
29
30
/** @var \Pterodactyl\Models\Server $server */
31
$server = $this->repository->findFirstWhere([
32
['uuid', '=', $uuid],
33
['node_id', '=', $node->id],
34
]);
35
36
$this->repository->loadEggRelations($server);
37
$egg = $server->getRelation('egg');
38
39
return response()->json([
40
'scripts' => [
41
'install' => !$egg->copy_script_install ? null : str_replace(["\r\n", "\n", "\r"], "\n", $egg->copy_script_install),
42
'privileged' => $egg->script_is_privileged,
43
],
44
'config' => [
45
'container' => $egg->copy_script_container,
46
'entry' => $egg->copy_script_entry,
47
],
48
'env' => $this->environment->handle($server),
49
]);
50
}
51
}
52
53