misc_pterodactyl-panel/resources/views/admin/servers/new.blade.php

393 lines
18 KiB
PHP
Raw Normal View History

2017-09-26 02:43:01 +00:00
{{-- Pterodactyl - Panel --}}
2017-02-19 00:31:44 +00:00
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
2017-09-26 02:43:01 +00:00
{{-- This software is licensed under the terms of the MIT license. --}}
{{-- https://opensource.org/licenses/MIT --}}
2017-02-19 00:31:44 +00:00
@extends('layouts.admin')
@section('title')
New Server
@endsection
@section('content-header')
<h1>Create Server<small>Add a new server to the panel.</small></h1>
<ol class="breadcrumb">
<li><a href="{{ route('admin.index') }}">Admin</a></li>
<li><a href="{{ route('admin.servers') }}">Servers</a></li>
<li class="active">Create Server</li>
</ol>
@endsection
@section('content')
<form action="{{ route('admin.servers.new') }}" method="POST">
<div class="row">
<div class="col-xs-12">
2017-02-24 03:52:05 +00:00
<div class="box">
2017-02-19 00:31:44 +00:00
<div class="box-header with-border">
<h3 class="box-title">Core Details</h3>
</div>
2017-02-19 00:31:44 +00:00
<div class="box-body row">
<div class="col-md-6">
<div class="form-group">
<label for="pName">Server Name</label>
<input type="text" class="form-control" id="pName" name="name" value="{{ old('name') }}" placeholder="Server Name">
<p class="small text-muted no-margin">Character limits: <code>a-z A-Z 0-9 _ - .</code> and <code>[Space]</code> (max 200 characters).</p>
</div>
<div class="form-group">
<label for="pUserId">Server Owner</label>
<select id="pUserId" name="owner_id" class="form-control" style="padding-left:0;"></select>
</div>
2017-02-19 00:31:44 +00:00
</div>
<div class="col-md-6">
<div class="form-group">
<label for="pDescription" class="control-label">Server Description</label>
<textarea id="pDescription" name="description" rows="3" class="form-control">{{ old('description') }}</textarea>
<p class="text-muted small">A brief description of this server.</p>
</div>
<div class="form-group">
<div class="checkbox checkbox-primary no-margin-bottom">
<input id="pStartOnCreation" name="start_on_completion" type="checkbox" {{ \Pterodactyl\Helpers\Utilities::checked('start_on_completion', 1) }} />
<label for="pStartOnCreation" class="strong">Start Server when Installed</label>
</div>
</div>
2017-02-19 00:31:44 +00:00
</div>
</div>
</div>
</div>
</div>
2017-02-19 00:31:44 +00:00
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="overlay" id="allocationLoader" style="display:none;"><i class="fa fa-refresh fa-spin"></i></div>
<div class="box-header with-border">
<h3 class="box-title">Allocation Management</h3>
</div>
2017-02-19 00:31:44 +00:00
<div class="box-body row">
2017-02-24 03:52:05 +00:00
<div class="form-group col-sm-4">
<label for="pNodeId">Node</label>
<select name="node_id" id="pNodeId" class="form-control">
2017-02-19 00:31:44 +00:00
@foreach($locations as $location)
<optgroup label="{{ $location->long }} ({{ $location->short }})">
@foreach($location->nodes as $node)
<option value="{{ $node->id }}"
@if($location->id === old('location_id')) selected @endif
>{{ $node->name }}</option>
@endforeach
</optgroup>
2017-02-19 00:31:44 +00:00
@endforeach
</select>
2017-02-19 00:31:44 +00:00
<p class="small text-muted no-margin">The node which this server will be deployed to.</p>
</div>
2017-02-24 03:52:05 +00:00
<div class="form-group col-sm-4">
<label for="pAllocation">Default Allocation</label>
<select id="pAllocation" name="allocation_id" class="form-control"></select>
2017-02-24 03:52:05 +00:00
<p class="small text-muted no-margin">The main allocation that will be assigned to this server.</p>
2017-02-19 00:31:44 +00:00
</div>
<div class="form-group col-sm-4">
2017-02-24 03:52:05 +00:00
<label for="pAllocationAdditional">Additional Allocation(s)</label>
<select id="pAllocationAdditional" name="allocation_additional[]" class="form-control" multiple></select>
2017-02-24 03:52:05 +00:00
<p class="small text-muted no-margin">Additional allocations to assign to this server on creation.</p>
2017-02-19 00:31:44 +00:00
</div>
</div>
</div>
</div>
</div>
2018-03-03 05:11:30 +00:00
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="overlay" id="allocationLoader" style="display:none;"><i class="fa fa-refresh fa-spin"></i></div>
<div class="box-header with-border">
<h3 class="box-title">Application Feature Limits</h3>
</div>
2018-03-03 05:11:30 +00:00
<div class="box-body row">
<div class="form-group col-xs-6">
<label for="pDatabaseLimit" class="control-label">Database Limit</label>
2018-03-03 05:11:30 +00:00
<div>
<input type="text" id="pDatabaseLimit" name="database_limit" class="form-control" value="{{ old('database_limit', 0) }}"/>
2018-03-03 05:11:30 +00:00
</div>
<p class="text-muted small">The total number of databases a user is allowed to create for this server. Leave blank to allow unlimited.</p>
2018-03-03 05:11:30 +00:00
</div>
2018-03-03 05:11:30 +00:00
<div class="form-group col-xs-6">
<label for="pAllocationLimit" class="control-label">Allocation Limit</label>
2018-03-03 05:11:30 +00:00
<div>
<input type="text" id="pAllocationLimit" name="allocation_limit" class="form-control" value="{{ old('allocation_limit', 0) }}"/>
2018-03-03 05:11:30 +00:00
</div>
<p class="text-muted small">The total number of allocations a user is allowed to create for this server. Leave blank to allow unlimited.</p>
</div>
</div>
</div>
</div>
</div>
2017-02-24 03:52:05 +00:00
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Resource Management</h3>
</div>
2017-02-24 03:52:05 +00:00
<div class="box-body row">
<div class="form-group col-xs-6">
<label for="pCPU">CPU Limit</label>
<div class="input-group">
<input type="text" id="pCPU" name="cpu" class="form-control" value="{{ old('cpu', 0) }}" />
<span class="input-group-addon">%</span>
</div>
<p class="text-muted small">If you do not want to limit CPU usage, set the value to <code>0</code>. To determine a value, take the number of <em>physical</em> cores and multiply it by 100. For example, on a quad core system <code>(4 * 100 = 400)</code> there is <code>400%</code> available. To limit a server to using half of a single core, you would set the value to <code>50</code>. To allow a server to use up to two physical cores, set the value to <code>200</code>. BlockIO should be a value between <code>10</code> and <code>1000</code>. Please see <a href="https://docs.docker.com/engine/reference/run/#/block-io-bandwidth-blkio-constraint" target="_blank">this documentation</a> for more information about it.<p>
</div>
<div class="form-group col-xs-6">
<label for="pThreads">CPU Threads</label>
<div>
<input type="text" id="pThreads" name="threads" class="form-control" value="{{ old('threads') }}" />
</div>
<p class="text-muted small"><strong>Advanced:</strong> Enter the specific CPU cores that this process can run on, or leave blank to allow all cores. This can be a single number, or a comma seperated list. Example: <code>0</code>, <code>0-1,3</code>, or <code>0,1,3,4</code>.</p>
</div>
</div>
<div class="box-body row">
<div class="form-group col-xs-6">
2017-02-24 03:52:05 +00:00
<label for="pMemory">Memory</label>
2017-02-24 03:52:05 +00:00
<div class="input-group">
<input type="text" id="pMemory" name="memory" class="form-control" value="{{ old('memory') }}" />
2017-02-24 03:52:05 +00:00
<span class="input-group-addon">MB</span>
</div>
</div>
<div class="form-group col-xs-6">
2017-02-24 03:52:05 +00:00
<label for="pSwap">Swap</label>
2017-02-24 03:52:05 +00:00
<div class="input-group">
<input type="text" id="pSwap" name="swap" class="form-control" value="{{ old('swap', 0) }}" />
2017-02-24 03:52:05 +00:00
<span class="input-group-addon">MB</span>
</div>
</div>
</div>
2017-09-14 03:38:28 +00:00
<div class="box-footer no-border no-pad-top no-pad-bottom">
<p class="text-muted small">If you do not want to assign swap space to a server, simply put <code>0</code> for the value, or <code>-1</code> to allow unlimited swap space. If you want to disable memory limiting on a server, simply enter <code>0</code> into the memory field.<p>
2017-02-24 03:52:05 +00:00
</div>
2017-02-24 03:52:05 +00:00
<div class="box-body row">
<div class="form-group col-xs-6">
2017-02-24 03:52:05 +00:00
<label for="pDisk">Disk Space</label>
2017-02-24 03:52:05 +00:00
<div class="input-group">
<input type="text" id="pDisk" name="disk" class="form-control" value="{{ old('disk') }}" />
<span class="input-group-addon">MB</span>
</div>
2017-02-24 03:52:05 +00:00
</div>
<div class="form-group col-xs-6">
2017-02-24 03:52:05 +00:00
<label for="pIO">Block IO Weight</label>
2020-04-03 21:43:15 +00:00
<div>
<input type="text" id="pIO" name="io" class="form-control" value="{{ old('io', 500) }}" />
2017-02-24 03:52:05 +00:00
</div>
<p class="text-muted small"><strong>Advanced</strong>: The IO performance of this server relative to other <em>running</em> containers on the system. Value should be between <code>10</code> and <code>1000</code>.</p>
2017-02-24 03:52:05 +00:00
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="box">
<div class="box-header with-border">
2017-10-07 22:21:41 +00:00
<h3 class="box-title">Nest Configuration</h3>
</div>
<div class="box-body row">
<div class="form-group col-xs-12">
2017-10-07 22:21:41 +00:00
<label for="pNestId">Nest</label>
<select id="pNestId" name="nest_id" class="form-control">
2017-10-07 22:21:41 +00:00
@foreach($nests as $nest)
<option value="{{ $nest->id }}"
@if($nest->id === old('nest_id'))
selected="selected"
@endif
2017-10-07 22:21:41 +00:00
>{{ $nest->name }}</option>
@endforeach
</select>
2017-10-07 22:21:41 +00:00
<p class="small text-muted no-margin">Select the Nest that this server will be grouped under.</p>
</div>
<div class="form-group col-xs-12">
2017-10-07 22:21:41 +00:00
<label for="pEggId">Egg</label>
<select id="pEggId" name="egg_id" class="form-control"></select>
2017-10-07 22:21:41 +00:00
<p class="small text-muted no-margin">Select the Egg that will define how this server should operate.</p>
</div>
<div class="form-group col-xs-12">
2017-10-07 22:21:41 +00:00
<label for="pPackId">Data Pack</label>
<select id="pPackId" name="pack_id" class="form-control"></select>
2017-10-07 22:21:41 +00:00
<p class="small text-muted no-margin">Select a data pack to be automatically installed on this server when first created.</p>
</div>
2017-04-20 21:57:40 +00:00
<div class="form-group col-xs-12">
<div class="checkbox checkbox-primary no-margin-bottom">
<input type="checkbox" id="pSkipScripting" name="skip_scripts" {{ \Pterodactyl\Helpers\Utilities::checked('skip_scripts', 0) }} />
2017-10-07 22:21:41 +00:00
<label for="pSkipScripting" class="strong">Skip Egg Install Script</label>
2017-04-20 21:57:40 +00:00
</div>
2017-10-07 22:21:41 +00:00
<p class="small text-muted no-margin">If the selected Egg has an install script attached to it, the script will run during install after the pack is installed. If you would like to skip this step, check this box.</p>
2017-04-20 21:57:40 +00:00
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Docker Configuration</h3>
</div>
<div class="box-body row">
<div class="form-group col-xs-12">
2017-10-07 22:21:41 +00:00
<label for="pDefaultContainer">Docker Image</label>
<input id="pDefaultContainer" name="image" value="{{ old('image') }}" class="form-control" />
2017-10-07 22:21:41 +00:00
<p class="small text-muted no-margin">This is the default Docker image that will be used to run this server.</p>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Startup Configuration</h3>
</div>
<div class="box-body row">
<div class="form-group col-xs-12">
<label for="pStartup">Startup Command</label>
<input type="text" id="pStartup" name="startup" value="{{ old('startup') }}" class="form-control" />
2018-05-13 14:34:09 +00:00
<p class="small text-muted no-margin">The following data substitutes are available for the startup command: <code>@{{SERVER_MEMORY}}</code>, <code>@{{SERVER_IP}}</code>, and <code>@{{SERVER_PORT}}</code>. They will be replaced with the allocated memory, server IP, and server port respectively.</p>
</div>
</div>
<div class="box-header with-border" style="margin-top:-10px;">
<h3 class="box-title">Service Variables</h3>
</div>
<div class="box-body row" id="appendVariablesTo"></div>
<div class="box-footer">
{!! csrf_field() !!}
<input type="submit" class="btn btn-success pull-right" value="Create Server" />
</div>
</div>
</div>
</div>
2017-02-19 00:31:44 +00:00
</form>
@endsection
@section('footer-scripts')
@parent
{!! Theme::js('vendor/lodash/lodash.js') !!}
2020-04-11 20:46:30 +00:00
<script type="application/javascript">
// Persist 'Service Variables'
function serviceVariablesUpdated(eggId, ids) {
@if (old('egg_id'))
// Check if the egg id matches.
if (eggId != '{{ old('egg_id') }}') {
return;
}
@if (old('environment'))
@foreach (old('environment') as $key => $value)
$('#' + ids['{{ $key }}']).val('{{ $value }}');
@endforeach
@endif
@endif
}
// END Persist 'Service Variables'
</script>
{!! Theme::js('js/admin/new-server.js') !!}
<script type="application/javascript">
$(document).ready(function() {
2020-04-11 20:46:30 +00:00
// Persist 'Server Owner' select2
2020-04-11 20:14:05 +00:00
@if (old('owner_id'))
$.ajax({
url: '/admin/users/accounts.json?user_id={{ old('owner_id') }}',
dataType: 'json',
}).then(function (data) {
initUserIdSelect([ data ]);
});
@else
initUserIdSelect();
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Server Owner' select2
2020-04-11 20:14:05 +00:00
2020-04-11 20:46:30 +00:00
// Persist 'Node' select2
@if (old('node_id'))
$('#pNodeId').val('{{ old('node_id') }}').change();
2020-04-11 20:46:30 +00:00
// Persist 'Default Allocation' select2
@if (old('allocation_id'))
$('#pAllocation').val('{{ old('allocation_id') }}').change();
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Default Allocation' select2
2020-04-11 20:46:30 +00:00
// Persist 'Additional Allocations' select2
@if (old('allocation_additional'))
const additional_allocations = [];
@for ($i = 0; $i < count(old('allocation_additional')); $i++)
additional_allocations.push('{{ old('allocation_additional.'.$i)}}');
@endfor
$('#pAllocationAdditional').val(additional_allocations).change();
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Additional Allocations' select2
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Node' select2
2020-04-11 20:46:30 +00:00
// Persist 'Nest' select2
2020-04-11 20:14:05 +00:00
@if (old('nest_id'))
$('#pNestId').val('{{ old('nest_id') }}').change();
2020-04-11 20:46:30 +00:00
// Persist 'Egg' select2
2020-04-11 20:14:05 +00:00
@if (old('egg_id'))
$('#pEggId').val('{{ old('egg_id') }}').change();
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Egg' select2
2020-04-11 20:14:05 +00:00
2020-04-11 20:46:30 +00:00
// Persist 'Data Pack' select2
2020-04-11 20:14:05 +00:00
@if (old('pack_id'))
$('#pPackId').val('{{ old('pack_id') }}').change();
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Data Pack' select2
@endif
2020-04-11 20:46:30 +00:00
// END Persist 'Nest' select2
});
</script>
2017-02-19 00:31:44 +00:00
@endsection