admin(eggs): add force_outgoing_ip option (#4323)

Closes #3841
This commit is contained in:
Matthew Penner 2022-09-25 13:24:54 -06:00 committed by GitHub
parent b04a47a4a4
commit 68e9100e57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 81 additions and 3 deletions

View file

@ -73,7 +73,7 @@ class EggController extends Controller
*/
public function store(EggFormRequest $request): RedirectResponse
{
$data = $request->normalize();
$data = $request->validated();
$data['docker_images'] = $this->normalizeDockerImages($data['docker_images'] ?? null);
$egg = $this->creationService->handle($data);
@ -106,7 +106,7 @@ class EggController extends Controller
*/
public function update(EggFormRequest $request, Egg $egg): RedirectResponse
{
$data = $request->normalize();
$data = $request->validated();
$data['docker_images'] = $this->normalizeDockerImages($data['docker_images'] ?? null);
$this->updateService->handle($egg, $data);

View file

@ -22,6 +22,7 @@ class EggFormRequest extends AdminFormRequest
'name' => 'required|string|max:191',
'description' => 'nullable|string',
'docker_images' => 'required|string',
'force_outgoing_ip' => 'sometimes|boolean',
'file_denylist' => 'array',
'startup' => 'required|string',
'config_from' => 'sometimes|bail|nullable|numeric',
@ -47,4 +48,13 @@ class EggFormRequest extends AdminFormRequest
return (int) $this->input('config_from') !== 0;
});
}
public function validated(): array
{
$data = parent::validated();
return array_merge($data, [
'force_outgoing_ip' => array_get($data, 'force_outgoing_ip', false),
]);
}
}

View file

@ -11,8 +11,9 @@ namespace Pterodactyl\Models;
* @property string|null $description
* @property array|null $features
* @property string $docker_image -- deprecated, use $docker_images
* @property string $update_url
* @property array<string, string> $docker_images
* @property string $update_url
* @property bool $force_outgoing_ip
* @property array|null $file_denylist
* @property string|null $config_files
* @property string|null $config_startup
@ -84,6 +85,7 @@ class Egg extends Model
'description',
'features',
'docker_images',
'force_outgoing_ip',
'file_denylist',
'config_files',
'config_startup',
@ -107,6 +109,7 @@ class Egg extends Model
'nest_id' => 'integer',
'config_from' => 'integer',
'script_is_privileged' => 'boolean',
'force_outgoing_ip' => 'boolean',
'copy_script_from' => 'integer',
'features' => 'array',
'docker_images' => 'array',
@ -134,6 +137,7 @@ class Egg extends Model
'config_logs' => 'required_without:config_from|nullable|json',
'config_files' => 'required_without:config_from|nullable|json',
'update_url' => 'sometimes|nullable|string',
'force_outgoing_ip' => 'sometimes|boolean',
];
/**

View file

@ -73,6 +73,7 @@ class ServerConfigurationStructureService
'requires_rebuild' => false,
],
'allocations' => [
'force_outgoing_ip' => $server->egg->force_outgoing_ip,
'default' => [
'ip' => $server->allocation->ip,
'port' => $server->allocation->port,