diff --git a/.dev/docker/README.md b/.dev/docker/README.md new file mode 100644 index 000000000..c5c2991c7 --- /dev/null +++ b/.dev/docker/README.md @@ -0,0 +1,76 @@ +# Pterodactyl Panel - Docker Image +This is a ready to use docker image for the panel. + +## Requirements +This docker image requires some additional software to function. The software can either be provided in other containers (see the [docker-compose.yml](docker-compose.yml) as an example) or as existing instances. + +A mysql database is required. We recommend the stock [MariaDB Image](https://hub.docker.com/_/mariadb/) image if you prefer to run it in a docker container. As a non-containerized option we recommend mariadb. + +A caching software is required as well. We recommend the stock [Redis Image](https://hub.docker.com/_/redis/) image. You can choose any of the [supported options](#cache-drivers). + +You can provide additional settings using a custom `.env` file or by setting the appropriate environment variables in the docker-compose file. + +## Setup + +Start the docker container and the required dependencies (either provide existing ones or start containers as well, see the [docker-compose.yml](docker-compose.yml) file as an example). + +After the startup is complete you'll need to create a user. +If you are running the docker container without docker-compose, use: +``` +docker exec -it php artisan p:user:make +``` +If you are using docker compose use +``` +docker-compose exec panel php artisan p:user:make +``` + +## Environment Variables +There are multiple environment variables to configure the panel when not providing your own `.env` file, see the following table for details on each available option. + +Note: If your `APP_URL` starts with `https://` you need to provide an `LETSENCRYPT_EMAIL` as well so Certificates can be generated. + +| Variable | Description | Required | +| ------------------- | ------------------------------------------------------------------------------ | -------- | +| `APP_URL` | The URL the panel will be reachable with (including protocol) | yes | +| `APP_TIMEZONE` | The timezone to use for the panel | yes | +| `LETSENCRYPT_EMAIL` | The email used for letsencrypt certificate generation | yes | +| `DB_HOST` | The host of the mysql instance | yes | +| `DB_PORT` | The port of the mysql instance | yes | +| `DB_DATABASE` | The name of the mysql database | yes | +| `DB_USERNAME` | The mysql user | yes | +| `DB_PASSWORD` | The mysql password for the specified user | yes | +| `CACHE_DRIVER` | The cache driver (see [Cache drivers](#cache-drivers) for detais) | yes | +| `SESSION_DRIVER` | | yes | +| `QUEUE_DRIVER` | | yes | +| `REDIS_HOST` | The hostname or IP address of the redis database | yes | +| `REDIS_PASSWORD` | The password used to secure the redis database | maybe | +| `REDIS_PORT` | The port the redis database is using on the host | maybe | +| `MAIL_DRIVER` | The email driver (see [Mail drivers](#mail-drivers) for details) | yes | +| `MAIL_FROM` | The email that should be used as the sender email | yes | +| `MAIL_HOST` | The host of your mail driver instance | maybe | +| `MAIL_PORT` | The port of your mail driver instance | maybe | +| `MAIL_USERNAME` | The username for your mail driver | maybe | +| `MAIL_PASSWORD` | The password for your mail driver | maybe | + + +### Cache drivers +You can choose between different cache drivers depending on what you prefer. +We recommend redis when using docker as it can be started in a container easily. + +| Driver | Description | Required variables | +| -------- | ------------------------------------ | ------------------------------------------------------ | +| redis | host where redis is running | `REDIS_HOST` | +| redis | port redis is running on | `REDIS_PORT` | +| redis | redis database password | `REDIS_PASSWORD` | + +### Mail drivers +You can choose between different mail drivers according to your needs. +Every driver requires `MAIL_FROM` to be set. + +| Driver | Description | Required variables | +| -------- | ------------------------------------ | ------------------------------------------------------------- | +| mail | uses the installed php mail | | +| mandrill | [Mandrill](http://www.mandrill.com/) | `MAIL_USERNAME` | +| postmark | [Postmark](https://postmarkapp.com/) | `MAIL_USERNAME` | +| mailgun | [Mailgun](https://www.mailgun.com/) | `MAIL_USERNAME`, `MAIL_HOST` | +| smtp | Any SMTP server can be configured | `MAIL_USERNAME`, `MAIL_HOST`, `MAIL_PASSWORD`, `MAIL_PORT` | \ No newline at end of file diff --git a/.dev/docker/default.conf b/.dev/docker/default.conf new file mode 100644 index 000000000..0944bf799 --- /dev/null +++ b/.dev/docker/default.conf @@ -0,0 +1,51 @@ +# If using Ubuntu this file should be placed in: +# /etc/nginx/sites-available/ +# +# If using CentOS this file should be placed in: +# /etc/nginx/conf.d/ +# +server { + listen 80; + server_name _; + + root /app/public; + index index.html index.htm index.php; + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + access_log off; + error_log /var/log/nginx/pterodactyl.app-error.log error; + + # allow larger file uploads and longer script runtimes + client_max_body_size 100m; + client_body_timeout 120s; + + sendfile off; + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + # the fastcgi_pass path needs to be changed accordingly when using CentOS + fastcgi_pass unix:/var/run/php/php-fpm7.2.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors off; + fastcgi_buffer_size 16k; + fastcgi_buffers 4 16k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/.dev/docker/default_ssl.conf b/.dev/docker/default_ssl.conf new file mode 100644 index 000000000..b102d5723 --- /dev/null +++ b/.dev/docker/default_ssl.conf @@ -0,0 +1,70 @@ +# If using Ubuntu this file should be placed in: +# /etc/nginx/sites-available/ +# +server { + listen 80; + server_name ; + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + server_name ; + + root /var/www/pterodactyl/public; + index index.php; + + access_log /var/log/nginx/pterodactyl.app-access.log; + error_log /var/log/nginx/pterodactyl.app-error.log error; + + # allow larger file uploads and longer script runtimes + client_max_body_size 100m; + client_body_timeout 120s; + + sendfile off; + + # strengthen ssl security + ssl_certificate /etc/letsencrypt/live//fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live//privkey.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; + + # See the link below for more SSL information: + # https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html + # + # ssl_dhparam /etc/ssl/certs/dhparam.pem; + + # Add headers to serve security related headers + add_header Strict-Transport-Security "max-age=15768000; preload;"; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Robots-Tag none; + add_header Content-Security-Policy "frame-ancestors 'self'"; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/run/php/pterodactyl.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors off; + fastcgi_buffer_size 16k; + fastcgi_buffers 4 16k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + include /etc/nginx/fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} \ No newline at end of file diff --git a/.dev/docker/entrypoint.sh b/.dev/docker/entrypoint.sh new file mode 100644 index 000000000..772645f62 --- /dev/null +++ b/.dev/docker/entrypoint.sh @@ -0,0 +1,46 @@ +#!/bin/ash +## Ensure we are in /app + +cd /app + +## check for .env file and generate app keys if missing +if [ -f /app/var/.env ]; then + echo "external vars exist" + rm /app/.env + + ln -s /app/var/.env /app/ +else + echo "external vars don't exist" + rm /app/.env + touch /app/var/.env + + ## manually generate a key because key generate --force fails + echo -e "Generating key" + APP_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + echo -e "Generated app key: $APP_KEY" + echo -e "APP_KEY=$APP_KEY" > /app/var/.env + + ln -s /app/var/.env /app/ +fi + +## check for DB up before starting the panel +echo "Checking database status." +until nc -z -v -w30 $DB_HOST 3306 + +do + echo "Waiting for database connection..." + # wait for 5 seconds before check again + sleep 5 +done + +## make sure the db is set up +echo -e "Migrating and Seeding DB" +php artisan migrate --force +php artisan db:seed --force + +## start cronjobs for the queue +echo -e "Starting cron jobs" +crond + +echo -e "Starting supervisord" +exec "$@" \ No newline at end of file diff --git a/.dev/docker/supervisord.conf b/.dev/docker/supervisord.conf new file mode 100644 index 000000000..f2fd3a1b5 --- /dev/null +++ b/.dev/docker/supervisord.conf @@ -0,0 +1,39 @@ +[unix_http_server] +file=/tmp/supervisor.sock ; path to your socket file + +[supervisord] +logfile=/var/log/supervisord/supervisord.log ; supervisord log file +logfile_maxbytes=50MB ; maximum size of logfile before rotation +logfile_backups=2 ; number of backed up logfiles +loglevel=error ; info, debug, warn, trace +pidfile=/var/run/supervisord.pid ; pidfile location +nodaemon=false ; run supervisord as a daemon +minfds=1024 ; number of startup file descriptors +minprocs=200 ; number of process descriptors +user=root ; default user +childlogdir=/var/log/supervisord/ ; where child log files will live + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket + +[program:php-fpm] +command=/usr/sbin/php-fpm7 -F +autostart=true +autorestart=true + +[program:queue-worker] +command=/usr/bin/php /app/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3 +user=nginx +autostart=true +autorestart=true + +[program:nginx] +command=/usr/sbin/nginx -g 'daemon off;' +autostart=true +autorestart=true +priority=10 +stdout_events_enabled=true +stderr_events_enabled=true \ No newline at end of file diff --git a/.dev/docker/www.conf b/.dev/docker/www.conf new file mode 100644 index 000000000..88142564c --- /dev/null +++ b/.dev/docker/www.conf @@ -0,0 +1,16 @@ +[pterodactyl] + +user = nginx +group = nginx + +listen = /var/run/php/php-fpm7.2.sock +listen.owner = nginx +listen.group = nginx +listen.mode = 0750 + +pm = ondemand +pm.max_children = 9 +pm.process_idle_timeout = 10s +pm.max_requests = 200 + +clear_env = no \ No newline at end of file diff --git a/.gitignore b/.gitignore index f1cc4279a..9fc4aee54 100644 --- a/.gitignore +++ b/.gitignore @@ -20,8 +20,9 @@ sami.phar # For local development with docker # Remove if we ever put the Dockerfile in the repo .dockerignore -Dockerfile +#Dockerfile docker-compose.yml + # for image related files misc .phpstorm.meta.php diff --git a/.phraseapp.yml b/.phraseapp.yml deleted file mode 100644 index 007c00ebb..000000000 --- a/.phraseapp.yml +++ /dev/null @@ -1,29 +0,0 @@ -phraseapp: - project_id: 94f8b39450cd749ae9c3cc0ab8cdb61d - file_format: laravel - push: - sources: - - file: ./resources/lang//.php - pull: - targets: - - file: ./resources/lang//auth.php - params: - tag: "auth" - - file: ./resources/lang//base.php - params: - tag: "base" - - file: ./resources/lang//pagination.php - params: - tag: "pagination" - - file: ./resources/lang//passwords.php - params: - tag: "passwords" - - file: ./resources/lang//server.php - params: - tag: "server" - - file: ./resources/lang//strings.php - params: - tag: "strings" - - file: ./resources/lang//validation.php - params: - tag: "validation" diff --git a/CHANGELOG.md b/CHANGELOG.md index 96beee1ff..0f388a7f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,22 @@ This file is a running track of new features and fixes to each version of the pa This project follows [Semantic Versioning](http://semver.org) guidelines. +## v0.7.11 (Derelict Dermodactylus) +### Fixed +* Fixes an issue with certain systems not handling an API folder that was named `API` but referenced as `Api` in the namespace. +* TS3 egg updated to use CLI arguments correctly and have a more minimalistic installation script. +* Terminal was not properly displaying longer lines leading to some visual inconsistency. +* Assorted translation updates. +* Pagination for server listing now properly respects configuration setting. +* Client API now properly respects permissions that are set and allows subusers to access their assigned servers. + +### Changed +* Removed PhraseApp integration from Panel code as it is no longer used. +* SFTP login endpoint now returns the permissions for that user rather than requiring additional queries to get that data. + +### Added +* You can now test your mail settings from the Admin CP without waiting to see if things are working correctly. + ## v0.7.10 (Derelict Dermodactylus) ### Fixed * Scheduled tasks triggered manually no longer improperly change the `next_run_at` time and do not run twice in a row anymore. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..ed4ede4ff --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM alpine:3.8 + +WORKDIR /app + +RUN apk add --no-cache --update ca-certificates certbot nginx dcron curl tini php7 php7-bcmath php7-common php7-dom php7-fpm php7-gd php7-mbstring php7-openssl php7-zip php7-pdo php7-phar php7-json php7-pdo_mysql php7-session php7-ctype php7-tokenizer php7-zlib php7-simplexml php7-fileinfo supervisor \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +COPY . ./ + +RUN cp .env.example .env \ + && composer install --no-dev --optimize-autoloader \ + && rm .env \ + && chown -R nginx:nginx . && chmod -R 777 storage/* bootstrap/cache + +RUN cp .dev/docker/default.conf /etc/nginx/conf.d/default.conf \ + && cp .dev/docker/www.conf /etc/php7/php-fpm.d/www.conf \ + && cat .dev/docker/supervisord.conf > /etc/supervisord.conf \ + && echo "* * * * * /usr/bin/php /app/pterodactyl/artisan schedule:run >> /dev/null 2>&1" >> /var/spool/cron/crontabs/root \ + && mkdir -p /var/run/php /var/run/nginx \ + && mkdir -p /var/log/supervisord/ + +EXPOSE 80 443 + +ENTRYPOINT ["/bin/ash", ".dev/docker/entrypoint.sh"] + +CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ] \ No newline at end of file diff --git a/README.md b/README.md index 1bc66ca2c..5831a8709 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,7 @@ In addition to our standard nest of supported games, our community is constantly * Discord ATLBot ## Credits -A huge thank you to [PhraseApp](https://phraseapp.com) who provide us the software to help translate this project. This software would not be possible -without the work of other open-source authors who provide tools such as: +This software would not be possible without the work of other open-source authors who provide tools such as: [Ace Editor](https://ace.c9.io), [AdminLTE](https://almsaeedstudio.com), [Animate.css](http://daneden.github.io/animate.css/), [AnsiUp](https://github.com/drudru/ansi_up), [Async.js](https://github.com/caolan/async), [Bootstrap](http://getbootstrap.com), [Bootstrap Notify](http://bootstrap-notify.remabledesigns.com), [Chart.js](http://www.chartjs.org), [FontAwesome](http://fontawesome.io), diff --git a/app/Contracts/Repository/ServerRepositoryInterface.php b/app/Contracts/Repository/ServerRepositoryInterface.php index 6f392d05d..f00d29d8e 100644 --- a/app/Contracts/Repository/ServerRepositoryInterface.php +++ b/app/Contracts/Repository/ServerRepositoryInterface.php @@ -103,10 +103,10 @@ interface ServerRepositoryInterface extends RepositoryInterface, SearchableInter * * @param \Pterodactyl\Models\User $user * @param int $level - * @param bool $paginate + * @param bool|int $paginate * @return \Illuminate\Pagination\LengthAwarePaginator|\Illuminate\Database\Eloquent\Collection */ - public function filterUserAccessServers(User $user, int $level, bool $paginate = true); + public function filterUserAccessServers(User $user, int $level, $paginate = 25); /** * Return a server by UUID. diff --git a/app/Extensions/PhraseAppTranslator.php b/app/Extensions/PhraseAppTranslator.php deleted file mode 100644 index 145f60392..000000000 --- a/app/Extensions/PhraseAppTranslator.php +++ /dev/null @@ -1,31 +0,0 @@ -. - * - * This software is licensed under the terms of the MIT license. - * https://opensource.org/licenses/MIT - */ - -namespace Pterodactyl\Extensions; - -use Illuminate\Translation\Translator as LaravelTranslator; - -class PhraseAppTranslator extends LaravelTranslator -{ - /** - * Get the translation for the given key. - * - * @param string $key - * @param array $replace - * @param string|null $locale - * @param bool $fallback - * @return string - */ - public function get($key, array $replace = [], $locale = null, $fallback = true) - { - $key = substr($key, strpos($key, '.') + 1); - - return "{{__phrase_${key}__}}"; - } -} diff --git a/app/Http/Controllers/Admin/NodesController.php b/app/Http/Controllers/Admin/NodesController.php index 1585b6acc..70c9ff071 100644 --- a/app/Http/Controllers/Admin/NodesController.php +++ b/app/Http/Controllers/Admin/NodesController.php @@ -285,6 +285,27 @@ class NodesController extends Controller return response('', 204); } + /** + * Removes multiple individual allocations from a node. + * + * @param \Illuminate\Http\Request $request + * @param int $node + * @return \Illuminate\Http\Response + * + * @throws \Pterodactyl\Exceptions\Service\Allocation\ServerUsingAllocationException + */ + public function allocationRemoveMultiple(Request $request, int $node): Response + { + $allocations = $request->input('allocations'); + foreach ($allocations as $rawAllocation) { + $allocation = new Allocation(); + $allocation->id = $rawAllocation['id']; + $this->allocationRemoveSingle($node, $allocation); + } + + return response('', 204); + } + /** * Remove all allocations for a specific IP at once on a node. * diff --git a/app/Http/Controllers/Admin/Settings/MailController.php b/app/Http/Controllers/Admin/Settings/MailController.php index f0b4495a4..7364a4ec5 100644 --- a/app/Http/Controllers/Admin/Settings/MailController.php +++ b/app/Http/Controllers/Admin/Settings/MailController.php @@ -2,10 +2,14 @@ namespace Pterodactyl\Http\Controllers\Admin\Settings; +use Exception; use Illuminate\View\View; -use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; +use Illuminate\Http\Response; use Prologue\Alerts\AlertsMessageBag; use Illuminate\Contracts\Console\Kernel; +use Pterodactyl\Notifications\MailTested; +use Illuminate\Support\Facades\Notification; use Pterodactyl\Exceptions\DisplayException; use Pterodactyl\Http\Controllers\Controller; use Illuminate\Contracts\Encryption\Encrypter; @@ -81,13 +85,13 @@ class MailController extends Controller * Handle request to update SMTP mail settings. * * @param \Pterodactyl\Http\Requests\Admin\Settings\MailSettingsFormRequest $request - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Http\Response * * @throws DisplayException * @throws \Pterodactyl\Exceptions\Model\DataValidationException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ - public function update(MailSettingsFormRequest $request): RedirectResponse + public function update(MailSettingsFormRequest $request): Response { if ($this->config->get('mail.driver') !== 'smtp') { throw new DisplayException('This feature is only available if SMTP is the selected email driver for the Panel.'); @@ -107,8 +111,25 @@ class MailController extends Controller } $this->kernel->call('queue:restart'); - $this->alert->success('Mail settings have been updated successfully and the queue worker was restarted to apply these changes.')->flash(); - return redirect()->route('admin.settings.mail'); + return response('', 204); + } + + /** + * Submit a request to send a test mail message. + * + * @param Request $request + * @return \Illuminate\Http\Response + */ + public function test(Request $request): Response + { + try { + Notification::route('mail', $request->user()->email) + ->notify(new MailTested($request->user())); + } catch (Exception $exception) { + return response($exception->getMessage(), 500); + } + + return response('', 204); } } diff --git a/app/Http/Controllers/Api/Client/ClientController.php b/app/Http/Controllers/Api/Client/ClientController.php index d2e1f33a9..2dffba8f0 100644 --- a/app/Http/Controllers/Api/Client/ClientController.php +++ b/app/Http/Controllers/Api/Client/ClientController.php @@ -35,7 +35,7 @@ class ClientController extends ClientApiController */ public function index(GetServersRequest $request): array { - $servers = $this->repository->filterUserAccessServers($request->user(), User::FILTER_LEVEL_SUBUSER); + $servers = $this->repository->filterUserAccessServers($request->user(), User::FILTER_LEVEL_SUBUSER, config('pterodactyl.paginate.frontend.servers')); return $this->fractal->collection($servers) ->transformWith($this->getTransformer(ServerTransformer::class)) diff --git a/app/Http/Controllers/Api/Client/Servers/CommandController.php b/app/Http/Controllers/Api/Client/Servers/CommandController.php index 8a5b951f5..881548fa0 100644 --- a/app/Http/Controllers/Api/Client/Servers/CommandController.php +++ b/app/Http/Controllers/Api/Client/Servers/CommandController.php @@ -7,7 +7,6 @@ use Pterodactyl\Models\Server; use Psr\Http\Message\ResponseInterface; use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Exception\RequestException; -use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService; use Pterodactyl\Http\Controllers\Api\Client\ClientApiController; use Pterodactyl\Http\Requests\Api\Client\Servers\SendCommandRequest; use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException; @@ -16,11 +15,6 @@ use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException; class CommandController extends ClientApiController { - /** - * @var \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService - */ - private $keyProviderService; - /** * @var \Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface */ @@ -30,13 +24,11 @@ class CommandController extends ClientApiController * CommandController constructor. * * @param \Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface $repository - * @param \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService $keyProviderService */ - public function __construct(CommandRepositoryInterface $repository, DaemonKeyProviderService $keyProviderService) + public function __construct(CommandRepositoryInterface $repository) { parent::__construct(); - $this->keyProviderService = $keyProviderService; $this->repository = $repository; } @@ -46,14 +38,12 @@ class CommandController extends ClientApiController * @param \Pterodactyl\Http\Requests\Api\Client\Servers\SendCommandRequest $request * @return \Illuminate\Http\Response * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException - * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException */ public function index(SendCommandRequest $request): Response { $server = $request->getModel(Server::class); - $token = $this->keyProviderService->handle($server, $request->user()); + $token = $request->attributes->get('server_token'); try { $this->repository->setServer($server) diff --git a/app/Http/Controllers/Api/Client/Servers/PowerController.php b/app/Http/Controllers/Api/Client/Servers/PowerController.php index 113b83398..7a96a2a4e 100644 --- a/app/Http/Controllers/Api/Client/Servers/PowerController.php +++ b/app/Http/Controllers/Api/Client/Servers/PowerController.php @@ -4,18 +4,12 @@ namespace Pterodactyl\Http\Controllers\Api\Client\Servers; use Illuminate\Http\Response; use Pterodactyl\Models\Server; -use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService; use Pterodactyl\Http\Controllers\Api\Client\ClientApiController; use Pterodactyl\Http\Requests\Api\Client\Servers\SendPowerRequest; use Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface; class PowerController extends ClientApiController { - /** - * @var \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService - */ - private $keyProviderService; - /** * @var \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface */ @@ -24,14 +18,12 @@ class PowerController extends ClientApiController /** * PowerController constructor. * - * @param \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService $keyProviderService * @param \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface $repository */ - public function __construct(DaemonKeyProviderService $keyProviderService, PowerRepositoryInterface $repository) + public function __construct(PowerRepositoryInterface $repository) { parent::__construct(); - $this->keyProviderService = $keyProviderService; $this->repository = $repository; } @@ -41,14 +33,12 @@ class PowerController extends ClientApiController * @param \Pterodactyl\Http\Requests\Api\Client\Servers\SendPowerRequest $request * @return \Illuminate\Http\Response * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException - * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException */ public function index(SendPowerRequest $request): Response { $server = $request->getModel(Server::class); - $token = $this->keyProviderService->handle($server, $request->user()); + $token = $request->attributes->get('server_token'); $this->repository->setServer($server)->setToken($token)->sendSignal($request->input('signal')); diff --git a/app/Http/Controllers/API/Remote/EggInstallController.php b/app/Http/Controllers/Api/Remote/EggInstallController.php similarity index 100% rename from app/Http/Controllers/API/Remote/EggInstallController.php rename to app/Http/Controllers/Api/Remote/EggInstallController.php diff --git a/app/Http/Controllers/API/Remote/EggRetrievalController.php b/app/Http/Controllers/Api/Remote/EggRetrievalController.php similarity index 100% rename from app/Http/Controllers/API/Remote/EggRetrievalController.php rename to app/Http/Controllers/Api/Remote/EggRetrievalController.php diff --git a/app/Http/Controllers/API/Remote/SftpController.php b/app/Http/Controllers/Api/Remote/SftpController.php similarity index 100% rename from app/Http/Controllers/API/Remote/SftpController.php rename to app/Http/Controllers/Api/Remote/SftpController.php diff --git a/app/Http/Controllers/API/Remote/ValidateKeyController.php b/app/Http/Controllers/Api/Remote/ValidateKeyController.php similarity index 100% rename from app/Http/Controllers/API/Remote/ValidateKeyController.php rename to app/Http/Controllers/Api/Remote/ValidateKeyController.php diff --git a/app/Http/Controllers/Base/IndexController.php b/app/Http/Controllers/Base/IndexController.php index f5272935f..20ef370eb 100644 --- a/app/Http/Controllers/Base/IndexController.php +++ b/app/Http/Controllers/Base/IndexController.php @@ -56,7 +56,7 @@ class IndexController extends Controller public function getIndex(Request $request) { $servers = $this->repository->setSearchTerm($request->input('query'))->filterUserAccessServers( - $request->user(), User::FILTER_LEVEL_ALL + $request->user(), User::FILTER_LEVEL_ALL, config('pterodactyl.paginate.frontend.servers') ); return view('base.index', ['servers' => $servers]); diff --git a/app/Http/Middleware/Api/Client/AuthenticateClientAccess.php b/app/Http/Middleware/Api/Client/AuthenticateClientAccess.php index 0a006aef0..e048b5869 100644 --- a/app/Http/Middleware/Api/Client/AuthenticateClientAccess.php +++ b/app/Http/Middleware/Api/Client/AuthenticateClientAccess.php @@ -4,24 +4,57 @@ namespace Pterodactyl\Http\Middleware\Api\Client; use Closure; use Illuminate\Http\Request; +use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService; +use Pterodactyl\Exceptions\Repository\RecordNotFoundException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class AuthenticateClientAccess { + /** + * @var \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService + */ + private $keyProviderService; + + /** + * AuthenticateClientAccess constructor. + * + * @param \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService $keyProviderService + */ + public function __construct(DaemonKeyProviderService $keyProviderService) + { + $this->keyProviderService = $keyProviderService; + } + /** * Authenticate that the currently authenticated user has permission - * to access the specified server. + * to access the specified server. This only checks that the user is an + * admin, owner, or a subuser. You'll need to do more specific checks in + * the API calls to determine if they can perform different actions. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed + * + * @throws \Pterodactyl\Exceptions\Model\DataValidationException */ public function handle(Request $request, Closure $next) { if (is_null($request->user())) { - throw new AccessDeniedHttpException('This account does not have permission to access this resource.'); + throw new AccessDeniedHttpException('A request must be made using an authenticated client.'); } + /** @var \Pterodactyl\Models\Server $server */ + $server = $request->route()->parameter('server'); + + try { + $token = $this->keyProviderService->handle($server, $request->user()); + } catch (RecordNotFoundException $exception) { + throw new NotFoundHttpException('The requested server could not be located.'); + } + + $request->attributes->set('server_token', $token); + return $next($request); } } diff --git a/app/Http/Requests/Api/Client/Servers/GetServerRequest.php b/app/Http/Requests/Api/Client/Servers/GetServerRequest.php index ad2312067..b69203fc1 100644 --- a/app/Http/Requests/Api/Client/Servers/GetServerRequest.php +++ b/app/Http/Requests/Api/Client/Servers/GetServerRequest.php @@ -2,7 +2,6 @@ namespace Pterodactyl\Http\Requests\Api\Client\Servers; -use Pterodactyl\Models\Server; use Pterodactyl\Http\Requests\Api\Client\ClientApiRequest; class GetServerRequest extends ClientApiRequest @@ -18,14 +17,4 @@ class GetServerRequest extends ClientApiRequest { return true; } - - /** - * Determine if the user should even know that this server exists. - * - * @return bool - */ - public function resourceExists(): bool - { - return $this->user()->can('view-server', $this->getModel(Server::class)); - } } diff --git a/app/Notifications/MailTested.php b/app/Notifications/MailTested.php new file mode 100644 index 000000000..fdb95f5cb --- /dev/null +++ b/app/Notifications/MailTested.php @@ -0,0 +1,33 @@ +user = $user; + } + + public function via() + { + return ['mail']; + } + + public function toMail() + { + return (new MailMessage) + ->subject('Pterodactyl Test Message') + ->greeting('Hello ' . $this->user->name . '!') + ->line('This is a test of the Pterodactyl mail system. You\'re good to go!'); + } +} diff --git a/app/Providers/PhraseAppTranslationProvider.php b/app/Providers/PhraseAppTranslationProvider.php deleted file mode 100644 index 1365bd021..000000000 --- a/app/Providers/PhraseAppTranslationProvider.php +++ /dev/null @@ -1,44 +0,0 @@ -. - * - * This software is licensed under the terms of the MIT license. - * https://opensource.org/licenses/MIT - */ - -namespace Pterodactyl\Providers; - -use Pterodactyl\Extensions\PhraseAppTranslator; -use Illuminate\Translation\TranslationServiceProvider; -use Illuminate\Translation\Translator as IlluminateTranslator; - -class PhraseAppTranslationProvider extends TranslationServiceProvider -{ - /** - * Register the service provider. - */ - public function register() - { - $this->registerLoader(); - - $this->app->singleton('translator', function ($app) { - $loader = $app['translation.loader']; - - // When registering the translator component, we'll need to set the default - // locale as well as the fallback locale. So, we'll grab the application - // configuration so we can easily get both of these values from there. - $locale = $app['config']['app.locale']; - - if ($app['config']['pterodactyl.lang.in_context']) { - $trans = new PhraseAppTranslator($loader, $locale); - } else { - $trans = new IlluminateTranslator($loader, $locale); - } - - $trans->setFallback($app['config']['app.fallback_locale']); - - return $trans; - }); - } -} diff --git a/app/Providers/SettingsServiceProvider.php b/app/Providers/SettingsServiceProvider.php index 48861db4b..2cc26e663 100644 --- a/app/Providers/SettingsServiceProvider.php +++ b/app/Providers/SettingsServiceProvider.php @@ -78,7 +78,7 @@ class SettingsServiceProvider extends ServiceProvider return [$setting->key => $setting->value]; })->toArray(); } catch (QueryException $exception) { - $log->notice('A query exception was encountered while trying to load settings from the database.'); + $log->notice('A query exception was encountered while trying to load settings from the database: ' . $exception->getMessage()); return; } diff --git a/app/Repositories/Eloquent/ServerRepository.php b/app/Repositories/Eloquent/ServerRepository.php index e900c92dd..3c0248be1 100644 --- a/app/Repositories/Eloquent/ServerRepository.php +++ b/app/Repositories/Eloquent/ServerRepository.php @@ -211,10 +211,10 @@ class ServerRepository extends EloquentRepository implements ServerRepositoryInt * * @param \Pterodactyl\Models\User $user * @param int $level - * @param bool $paginate + * @param bool|int $paginate * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Database\Eloquent\Collection */ - public function filterUserAccessServers(User $user, int $level, bool $paginate = true) + public function filterUserAccessServers(User $user, int $level, $paginate = 25) { $instance = $this->getBuilder()->select($this->getColumns())->with(['user', 'node', 'allocation']); @@ -240,7 +240,7 @@ class ServerRepository extends EloquentRepository implements ServerRepositoryInt $instance->search($this->getSearchTerm()); - return $paginate ? $instance->paginate(25) : $instance->get(); + return $paginate ? $instance->paginate($paginate) : $instance->get(); } /** diff --git a/app/Services/Sftp/AuthenticateUsingPasswordService.php b/app/Services/Sftp/AuthenticateUsingPasswordService.php index 690573926..4310a50f6 100644 --- a/app/Services/Sftp/AuthenticateUsingPasswordService.php +++ b/app/Services/Sftp/AuthenticateUsingPasswordService.php @@ -102,6 +102,7 @@ class AuthenticateUsingPasswordService return [ 'server' => $server->uuid, 'token' => $this->keyProviderService->handle($server, $user), + 'permissions' => $permissions ?? ['*'], ]; } } diff --git a/config/app.php b/config/app.php index a92ab0362..9d30971fb 100644 --- a/config/app.php +++ b/config/app.php @@ -9,7 +9,7 @@ return [ | change this value if you are not maintaining your own internal versions. */ - 'version' => '0.7.10', + 'version' => '0.7.11', /* |-------------------------------------------------------------------------- @@ -166,6 +166,7 @@ return [ Illuminate\Redis\RedisServiceProvider::class, Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, @@ -179,7 +180,6 @@ return [ Pterodactyl\Providers\HashidsServiceProvider::class, Pterodactyl\Providers\RouteServiceProvider::class, Pterodactyl\Providers\MacroServiceProvider::class, - Pterodactyl\Providers\PhraseAppTranslationProvider::class, Pterodactyl\Providers\RepositoryServiceProvider::class, Pterodactyl\Providers\ViewComposerServiceProvider::class, diff --git a/config/pterodactyl.php b/config/pterodactyl.php index e06c709ef..54be4346d 100644 --- a/config/pterodactyl.php +++ b/config/pterodactyl.php @@ -153,23 +153,10 @@ return [ /* |-------------------------------------------------------------------------- - | Language Editor + | Client Features |-------------------------------------------------------------------------- | - | Set `PHRASE_IN_CONTEXT` to true to enable the PhaseApp in-context editor - | on this site which allows you to translate the panel, from the panel. - */ - 'lang' => [ - 'in_context' => env('PHRASE_IN_CONTEXT', false), - ], - - /* - |-------------------------------------------------------------------------- - | Language Editor - |-------------------------------------------------------------------------- - | - | Set `PHRASE_IN_CONTEXT` to true to enable the PhaseApp in-context editor - | on this site which allows you to translate the panel, from the panel. + | Allow clients to create their own databases. */ 'client_features' => [ 'databases' => [ diff --git a/database/seeds/eggs/voice-servers/egg-teamspeak3-server.json b/database/seeds/eggs/voice-servers/egg-teamspeak3-server.json index 927978d23..0176cd13e 100644 --- a/database/seeds/eggs/voice-servers/egg-teamspeak3-server.json +++ b/database/seeds/eggs/voice-servers/egg-teamspeak3-server.json @@ -3,21 +3,21 @@ "meta": { "version": "PTDL_v1" }, - "exported_at": "2018-01-21T17:01:45-06:00", + "exported_at": "2018-10-28T20:50:23+01:00", "name": "Teamspeak3 Server", "author": "support@pterodactyl.io", "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.", "image": "quay.io\/pterodactyl\/core:glibc", - "startup": ".\/ts3server_minimal_runscript.sh default_voice_port={{SERVER_PORT}} query_port={{SERVER_PORT}}", + "startup": ".\/ts3server_minimal_runscript.sh default_voice_port={{SERVER_PORT}} query_port={{SERVER_PORT}} license_accepted=1", "config": { - "files": "{\"ts3server.ini\":{\"parser\": \"ini\", \"find\":{\"default_voice_port\": \"{{server.build.default.port}}\", \"voice_ip\": \"0.0.0.0\", \"query_port\": \"{{server.build.default.port}}\", \"query_ip\": \"0.0.0.0\"}}}", + "files": "{}", "startup": "{\"done\": \"listening on 0.0.0.0:\", \"userInteraction\": []}", "logs": "{\"custom\": true, \"location\": \"logs\/ts3.log\"}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/ash\n# TS3 Installation Script\n#\n# Server Files: \/mnt\/server\napk update\napk add tar curl\n\ncd \/tmp\n\ncurl -sSLO http:\/\/dl.4players.de\/ts\/releases\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\n\ntar -xjvf teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\ncp -r teamspeak3-server_linux_amd64\/* \/mnt\/server\n\necho \"machine_id=\ndefault_voice_port=${SERVER_PORT}\nvoice_ip=0.0.0.0\nlicensepath=\nfiletransfer_port=30033\nfiletransfer_ip=\nquery_port=${SERVER_PORT}\nquery_ip=0.0.0.0\nquery_ip_whitelist=query_ip_whitelist.txt\nquery_ip_blacklist=query_ip_blacklist.txt\ndbplugin=ts3db_sqlite3\ndbpluginparameter=\ndbsqlpath=sql\/\ndbsqlcreatepath=create_sqlite\/\ndbconnections=10\nlogpath=logs\nlogquerycommands=0\ndbclientkeepdays=30\nlogappend=0\nquery_skipbruteforcecheck=0\" > \/mnt\/server\/ts3server.ini\n\ntouch \/mnt\/server\/.ts3server_license_accepted", + "script": "#!\/bin\/ash\n# TS3 Installation Script\n#\n# Server Files: \/mnt\/server\napk update\napk add tar curl\n\ncd \/mnt\/server\n\ncurl http:\/\/dl.4players.de\/ts\/releases\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar xj --strip-components=1", "container": "alpine:3.4", "entrypoint": "ash" } @@ -27,7 +27,7 @@ "name": "Server Version", "description": "The version of Teamspeak 3 to use when running the server.", "env_variable": "TS_VERSION", - "default_value": "3.1.1", + "default_value": "3.4.0", "user_viewable": 1, "user_editable": 1, "rules": "required|regex:\/^([0-9_\\.-]{5,10})$\/" diff --git a/docker-compose.example.yml b/docker-compose.example.yml new file mode 100644 index 000000000..02799382d --- /dev/null +++ b/docker-compose.example.yml @@ -0,0 +1,72 @@ +version: '2' +services: + database: + image: mariadb + volumes: + - "/srv/pterodactyl/database:/var/lib/mysql" + environment: + ## Database settings + ## change if you want it to be more secure. + - "MYSQL_ROOT_PASSWORD=apassword" + - "MYSQL_DATABASE=pterodb" + - "MYSQL_USER=ptero" + - "MYSQL_PASSWORD=pterodbpass" + + cache: + image: redis:alpine + + panel: + image: quay.io/pterodactyl/panel:latest + ports: + - "80:80" + - "443:443" + links: + - database + - cache + volumes: + - "/srv/pterodactyl/var/:/app/var/" + environment: + ## These are defaults and should be left alone + - "APP_ENV=production" + - "APP_DEBUG=false" + - "APP_THEME=pterodactyl" + - "APP_CLEAR_TASKLOG=720" + - "APP_DELETE_MINUTES=10" + - "APP_ENVIRONMENT_ONLY=false" + - "QUEUE_HIGH=high" + - "QUEUE_STANDARD=standard" + - "QUEUE_LOW=low" + ## Cache settings + - "CACHE_DRIVER=redis" + - "SESSION_DRIVER=redis" + - "QUEUE_DRIVER=redis" + - "REDIS_HOST=cache" + - "REDIS_PASSWORD=null" + - "REDIS_PORT=6379" + ## Domain settings + - "APP_URL=https://your.domain.here" + ## Timezone settings + - "APP_TIMEZONE=America/New_York" + ## Service egg settings + - "APP_SERVICE_AUTHOR=noreply@your.domain.here" + ## Database settings + ## change if you want it to be more secure. + - "DB_HOST=database" + - "DB_PORT=3306" + - "DB_DATABASE=pterodb" + - "DB_USERNAME=ptero" + - "DB_PASSWORD=pterodbpass" + ## Email settings + - "MAIL_FROM=noreply@your.domain.here" + - "MAIL_DRIVER=smtp" + - "MAIL_HOST=mail" + - "MAIL_PORT=1025" + - "MAIL_USERNAME=''" + - "MAIL_PASSWORD=''" + - "MAIL_ENCRYPTION=true" + +networks: + default: + ipam: + config: + - subnet: 172.20.0.0/16 diff --git a/public/js/laroute.js b/public/js/laroute.js index 1ffbc7b1f..ca120c0d9 100644 --- a/public/js/laroute.js +++ b/public/js/laroute.js @@ -6,7 +6,7 @@ absolute: false, rootUrl: 'http://pterodactyl.local', - routes : [{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/open","name":"debugbar.openhandler","action":"Barryvdh\Debugbar\Controllers\OpenHandlerController@handle"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/clockwork\/{id}","name":"debugbar.clockwork","action":"Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/assets\/stylesheets","name":"debugbar.assets.css","action":"Barryvdh\Debugbar\Controllers\AssetController@css"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/assets\/javascript","name":"debugbar.assets.js","action":"Barryvdh\Debugbar\Controllers\AssetController@js"},{"host":null,"methods":["DELETE"],"uri":"_debugbar\/cache\/{key}\/{tags?}","name":"debugbar.cache.delete","action":"Barryvdh\Debugbar\Controllers\CacheController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"\/","name":"index","action":"Pterodactyl\Http\Controllers\Base\IndexController@getIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"status\/{server}","name":"index.status","action":"Pterodactyl\Http\Controllers\Base\IndexController@status"},{"host":null,"methods":["GET","HEAD"],"uri":"account","name":"account","action":"Pterodactyl\Http\Controllers\Base\AccountController@index"},{"host":null,"methods":["POST"],"uri":"account","name":null,"action":"Pterodactyl\Http\Controllers\Base\AccountController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api","name":"account.api","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api\/new","name":"account.api.new","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@create"},{"host":null,"methods":["POST"],"uri":"account\/api\/new","name":null,"action":"Pterodactyl\Http\Controllers\Base\ClientApiController@store"},{"host":null,"methods":["DELETE"],"uri":"account\/api\/revoke\/{identifier}","name":"account.api.revoke","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security","name":"account.security","action":"Pterodactyl\Http\Controllers\Base\SecurityController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security\/revoke\/{id}","name":"account.security.revoke","action":"Pterodactyl\Http\Controllers\Base\SecurityController@revoke"},{"host":null,"methods":["PUT"],"uri":"account\/security\/totp","name":"account.security.totp","action":"Pterodactyl\Http\Controllers\Base\SecurityController@generateTotp"},{"host":null,"methods":["POST"],"uri":"account\/security\/totp","name":"account.security.totp.set","action":"Pterodactyl\Http\Controllers\Base\SecurityController@setTotp"},{"host":null,"methods":["DELETE"],"uri":"account\/security\/totp","name":"account.security.totp.disable","action":"Pterodactyl\Http\Controllers\Base\SecurityController@disableTotp"},{"host":null,"methods":["GET","HEAD"],"uri":"admin","name":"admin.index","action":"Pterodactyl\Http\Controllers\Admin\BaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api","name":"admin.api.index","action":"Pterodactyl\Http\Controllers\Admin\ApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api\/new","name":"admin.api.new","action":"Pterodactyl\Http\Controllers\Admin\ApiController@create"},{"host":null,"methods":["POST"],"uri":"admin\/api\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ApiController@store"},{"host":null,"methods":["DELETE"],"uri":"admin\/api\/revoke\/{identifier}","name":"admin.api.delete","action":"Pterodactyl\Http\Controllers\Admin\ApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations","name":"admin.locations","action":"Pterodactyl\Http\Controllers\Admin\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations\/view\/{location}","name":"admin.locations.view","action":"Pterodactyl\Http\Controllers\Admin\LocationController@view"},{"host":null,"methods":["POST"],"uri":"admin\/locations","name":null,"action":"Pterodactyl\Http\Controllers\Admin\LocationController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/locations\/view\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\LocationController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases","name":"admin.databases","action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases\/view\/{host}","name":"admin.databases.view","action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"admin\/databases","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings","name":"admin.settings","action":"Pterodactyl\Http\Controllers\Admin\Settings\IndexController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/mail","name":"admin.settings.mail","action":"Pterodactyl\Http\Controllers\Admin\Settings\MailController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/advanced","name":"admin.settings.advanced","action":"Pterodactyl\Http\Controllers\Admin\Settings\AdvancedController@index"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\IndexController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/mail","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\MailController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/advanced","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\AdvancedController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users","name":"admin.users","action":"Pterodactyl\Http\Controllers\Admin\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/accounts.json","name":"admin.users.json","action":"Pterodactyl\Http\Controllers\Admin\UserController@json"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/new","name":"admin.users.new","action":"Pterodactyl\Http\Controllers\Admin\UserController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/view\/{user}","name":"admin.users.view","action":"Pterodactyl\Http\Controllers\Admin\UserController@view"},{"host":null,"methods":["POST"],"uri":"admin\/users\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"admin\/users\/view\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/users\/view\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers","name":"admin.servers","action":"Pterodactyl\Http\Controllers\Admin\ServersController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/new","name":"admin.servers.new","action":"Pterodactyl\Http\Controllers\Admin\ServersController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}","name":"admin.servers.view","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/details","name":"admin.servers.view.details","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDetails"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/build","name":"admin.servers.view.build","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewBuild"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/startup","name":"admin.servers.view.startup","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewStartup"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/database","name":"admin.servers.view.database","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/manage","name":"admin.servers.view.manage","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewManage"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/delete","name":"admin.servers.view.delete","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDelete"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@store"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/build","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@updateBuild"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/startup","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@saveStartup"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@newDatabase"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/toggle","name":"admin.servers.view.manage.toggle","action":"Pterodactyl\Http\Controllers\Admin\ServersController@toggleInstall"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/rebuild","name":"admin.servers.view.manage.rebuild","action":"Pterodactyl\Http\Controllers\Admin\ServersController@rebuildContainer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/suspension","name":"admin.servers.view.manage.suspension","action":"Pterodactyl\Http\Controllers\Admin\ServersController@manageSuspension"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/reinstall","name":"admin.servers.view.manage.reinstall","action":"Pterodactyl\Http\Controllers\Admin\ServersController@reinstallServer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/delete","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@delete"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/details","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@setDetails"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@resetDatabasePassword"},{"host":null,"methods":["DELETE"],"uri":"admin\/servers\/view\/{server}\/database\/{database}\/delete","name":"admin.servers.view.database.delete","action":"Pterodactyl\Http\Controllers\Admin\ServersController@deleteDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes","name":"admin.nodes","action":"Pterodactyl\Http\Controllers\Admin\NodesController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/new","name":"admin.nodes.new","action":"Pterodactyl\Http\Controllers\Admin\NodesController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}","name":"admin.nodes.view","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings","name":"admin.nodes.view.settings","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewSettings"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/configuration","name":"admin.nodes.view.configuration","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewConfiguration"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":"admin.nodes.view.allocation","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewAllocation"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/servers","name":"admin.nodes.view.servers","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewServers"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings\/token","name":"admin.nodes.view.configuration.token","action":"Pterodactyl\Http\Controllers\Admin\NodesController@setToken"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@createAllocation"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove","name":"admin.nodes.view.allocation.removeBlock","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationRemoveBlock"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/alias","name":"admin.nodes.view.allocation.setAlias","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationSetAlias"},{"host":null,"methods":["PATCH"],"uri":"admin\/nodes\/view\/{node}\/settings","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@updateSettings"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/delete","name":"admin.nodes.view.delete","action":"Pterodactyl\Http\Controllers\Admin\NodesController@delete"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove\/{allocation}","name":"admin.nodes.view.allocation.removeSingle","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationRemoveSingle"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests","name":"admin.nests","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/new","name":"admin.nests.new","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/view\/{nest}","name":"admin.nests.view","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/new","name":"admin.nests.egg.new","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}","name":"admin.nests.egg.view","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/export","name":"admin.nests.egg.export","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@export"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":"admin.nests.egg.variables","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":"admin.nests.egg.scripts","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggScriptController@index"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/import","name":"admin.nests.egg.import","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@import"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@store"},{"host":null,"methods":["PUT"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggScriptController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":"admin.nests.egg.variables.edit","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs","name":"admin.packs","action":"Pterodactyl\Http\Controllers\Admin\PackController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new","name":"admin.packs.new","action":"Pterodactyl\Http\Controllers\Admin\PackController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new\/template","name":"admin.packs.new.template","action":"Pterodactyl\Http\Controllers\Admin\PackController@newTemplate"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/view\/{pack}","name":"admin.packs.view","action":"Pterodactyl\Http\Controllers\Admin\PackController@view"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@store"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/view\/{pack}\/export\/{files?}","name":"admin.packs.view.export","action":"Pterodactyl\Http\Controllers\Admin\PackController@export"},{"host":null,"methods":["PATCH"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login","name":"auth.login","action":"Pterodactyl\Http\Controllers\Auth\LoginController@showLoginForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login\/totp","name":"auth.totp","action":"Pterodactyl\Http\Controllers\Auth\LoginController@totp"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password","name":"auth.password","action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password\/reset\/{token}","name":"auth.reset","action":"Pterodactyl\Http\Controllers\Auth\ResetPasswordController@showResetForm"},{"host":null,"methods":["POST"],"uri":"auth\/login","name":null,"action":"Pterodactyl\Http\Controllers\Auth\LoginController@login"},{"host":null,"methods":["POST"],"uri":"auth\/login\/totp","name":null,"action":"Pterodactyl\Http\Controllers\Auth\LoginController@loginUsingTotp"},{"host":null,"methods":["POST"],"uri":"auth\/password","name":null,"action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset","name":"auth.reset.post","action":"Pterodactyl\Http\Controllers\Auth\ResetPasswordController@reset"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset\/{token}","name":null,"action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/logout","name":"auth.logout","action":"Pterodactyl\Http\Controllers\Auth\LoginController@logout"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}","name":"server.index","action":"Pterodactyl\Http\Controllers\Server\ConsoleController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/console","name":"server.console","action":"Pterodactyl\Http\Controllers\Server\ConsoleController@console"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/allocation","name":"server.settings.allocation","action":"Pterodactyl\Http\Controllers\Server\Settings\AllocationController@index"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/allocation","name":null,"action":"Pterodactyl\Http\Controllers\Server\Settings\AllocationController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/sftp","name":"server.settings.sftp","action":"Pterodactyl\Http\Controllers\Server\Settings\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/startup","name":"server.settings.startup","action":"Pterodactyl\Http\Controllers\Server\Settings\StartupController@index"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/startup","name":null,"action":"Pterodactyl\Http\Controllers\Server\Settings\StartupController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/databases","name":"server.databases.index","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/databases\/new","name":"server.databases.new","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@store"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/databases\/password","name":"server.databases.password","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/databases\/delete\/{database}","name":"server.databases.delete","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files","name":"server.files.index","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/add","name":"server.files.add","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/edit\/{file}","name":"server.files.edit","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/download\/{file}","name":"server.files.edit","action":"Pterodactyl\Http\Controllers\Server\Files\DownloadController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/directory-list","name":"server.files.directory-list","action":"Pterodactyl\Http\Controllers\Server\Files\RemoteRequestController@directory"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/save","name":"server.files.save","action":"Pterodactyl\Http\Controllers\Server\Files\RemoteRequestController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users","name":"server.subusers","action":"Pterodactyl\Http\Controllers\Server\SubuserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/new","name":"server.subusers.new","action":"Pterodactyl\Http\Controllers\Server\SubuserController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/users\/new","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/view\/{subuser}","name":"server.subusers.view","action":"Pterodactyl\Http\Controllers\Server\SubuserController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules","name":"server.schedules","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/new","name":"server.schedules.new","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/new","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":"server.schedules.view","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@update"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/toggle","name":"server.schedules.toggle","action":"Pterodactyl\Http\Controllers\Server\Tasks\ActionController@toggle"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/trigger","name":"server.schedules.trigger","action":"Pterodactyl\Http\Controllers\Server\Tasks\ActionController@trigger"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users","name":"api.application.users","action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users\/{user}","name":"api.application.users.view","action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users\/external\/{external_id}","name":"api.application.users.external","action":"Pterodactyl\Http\Controllers\Api\Application\Users\ExternalUserController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/users","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/users\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/users\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes","name":"api.application.nodes","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}","name":"api.application.nodes.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}\/allocations","name":"api.application.allocations","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes\/{node}\/allocations","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@store"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}\/allocations\/{allocation}","name":"api.application.allocations.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations","name":"api.applications.locations","action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations\/{location}","name":"api.application.locations.view","action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/locations","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/locations\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/locations\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers","name":"api.application.servers","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}","name":"api.application.servers.view","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/external\/{external_id}","name":"api.application.servers.external","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ExternalServerController@index"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/details","name":"api.application.servers.details","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerDetailsController@details"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/build","name":"api.application.servers.build","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerDetailsController@build"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/startup","name":"api.application.servers.startup","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\StartupController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/suspend","name":"api.application.servers.suspend","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@suspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/unsuspend","name":"api.application.servers.unsuspend","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@unsuspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/reinstall","name":"api.application.servers.reinstall","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@reinstall"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/rebuild","name":"api.application.servers.rebuild","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@rebuild"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/{force?}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}\/databases","name":"api.application.servers.databases","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}\/databases\/{database}","name":"api.application.servers.databases.view","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases\/{database}\/reset-password","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@resetPassword"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/databases\/{database}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests","name":"api.application.nests","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}","name":"api.application.nests.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}\/eggs","name":"api.application.nests.eggs","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\EggController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}\/eggs\/{egg}","name":"api.application.nests.eggs.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client","name":"api.client.index","action":"Pterodactyl\Http\Controllers\Api\Client\ClientController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client\/servers\/{server}","name":"api.client.servers.view","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\ServerController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/command","name":"api.client.servers.command","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\CommandController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/power","name":"api.client.servers.power","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\PowerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/authenticate\/{token}","name":"api.remote.authenticate","action":"Pterodactyl\Http\Controllers\Api\Remote\ValidateKeyController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/download-file","name":"api.remote.download_file","action":"Pterodactyl\Http\Controllers\Api\Remote\FileDownloadController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs","name":"api.remote.eggs","action":"Pterodactyl\Http\Controllers\Api\Remote\EggRetrievalController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs\/{uuid}","name":"api.remote.eggs.download","action":"Pterodactyl\Http\Controllers\Api\Remote\EggRetrievalController@download"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/scripts\/{uuid}","name":"api.remote.scripts","action":"Pterodactyl\Http\Controllers\Api\Remote\EggInstallController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/sftp","name":"api.remote.sftp","action":"Pterodactyl\Http\Controllers\Api\Remote\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}","name":"daemon.pack.pull","action":"Pterodactyl\Http\Controllers\Daemon\PackController@pull"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}\/hash","name":"daemon.pack.hash","action":"Pterodactyl\Http\Controllers\Daemon\PackController@hash"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/configure\/{token}","name":"daemon.configuration","action":"Pterodactyl\Http\Controllers\Daemon\ActionController@configuration"},{"host":null,"methods":["POST"],"uri":"daemon\/install","name":"daemon.install","action":"Pterodactyl\Http\Controllers\Daemon\ActionController@markInstall"}], + routes : [{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/open","name":"debugbar.openhandler","action":"Barryvdh\Debugbar\Controllers\OpenHandlerController@handle"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/clockwork\/{id}","name":"debugbar.clockwork","action":"Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/assets\/stylesheets","name":"debugbar.assets.css","action":"Barryvdh\Debugbar\Controllers\AssetController@css"},{"host":null,"methods":["GET","HEAD"],"uri":"_debugbar\/assets\/javascript","name":"debugbar.assets.js","action":"Barryvdh\Debugbar\Controllers\AssetController@js"},{"host":null,"methods":["DELETE"],"uri":"_debugbar\/cache\/{key}\/{tags?}","name":"debugbar.cache.delete","action":"Barryvdh\Debugbar\Controllers\CacheController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"\/","name":"index","action":"Pterodactyl\Http\Controllers\Base\IndexController@getIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"status\/{server}","name":"index.status","action":"Pterodactyl\Http\Controllers\Base\IndexController@status"},{"host":null,"methods":["GET","HEAD"],"uri":"account","name":"account","action":"Pterodactyl\Http\Controllers\Base\AccountController@index"},{"host":null,"methods":["POST"],"uri":"account","name":null,"action":"Pterodactyl\Http\Controllers\Base\AccountController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api","name":"account.api","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api\/new","name":"account.api.new","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@create"},{"host":null,"methods":["POST"],"uri":"account\/api\/new","name":null,"action":"Pterodactyl\Http\Controllers\Base\ClientApiController@store"},{"host":null,"methods":["DELETE"],"uri":"account\/api\/revoke\/{identifier}","name":"account.api.revoke","action":"Pterodactyl\Http\Controllers\Base\ClientApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security","name":"account.security","action":"Pterodactyl\Http\Controllers\Base\SecurityController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security\/revoke\/{id}","name":"account.security.revoke","action":"Pterodactyl\Http\Controllers\Base\SecurityController@revoke"},{"host":null,"methods":["PUT"],"uri":"account\/security\/totp","name":"account.security.totp","action":"Pterodactyl\Http\Controllers\Base\SecurityController@generateTotp"},{"host":null,"methods":["POST"],"uri":"account\/security\/totp","name":"account.security.totp.set","action":"Pterodactyl\Http\Controllers\Base\SecurityController@setTotp"},{"host":null,"methods":["DELETE"],"uri":"account\/security\/totp","name":"account.security.totp.disable","action":"Pterodactyl\Http\Controllers\Base\SecurityController@disableTotp"},{"host":null,"methods":["GET","HEAD"],"uri":"admin","name":"admin.index","action":"Pterodactyl\Http\Controllers\Admin\BaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/statistics","name":"admin.statistics","action":"Pterodactyl\Http\Controllers\Admin\StatisticsController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api","name":"admin.api.index","action":"Pterodactyl\Http\Controllers\Admin\ApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api\/new","name":"admin.api.new","action":"Pterodactyl\Http\Controllers\Admin\ApiController@create"},{"host":null,"methods":["POST"],"uri":"admin\/api\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ApiController@store"},{"host":null,"methods":["DELETE"],"uri":"admin\/api\/revoke\/{identifier}","name":"admin.api.delete","action":"Pterodactyl\Http\Controllers\Admin\ApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations","name":"admin.locations","action":"Pterodactyl\Http\Controllers\Admin\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations\/view\/{location}","name":"admin.locations.view","action":"Pterodactyl\Http\Controllers\Admin\LocationController@view"},{"host":null,"methods":["POST"],"uri":"admin\/locations","name":null,"action":"Pterodactyl\Http\Controllers\Admin\LocationController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/locations\/view\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\LocationController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases","name":"admin.databases","action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases\/view\/{host}","name":"admin.databases.view","action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"admin\/databases","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings","name":"admin.settings","action":"Pterodactyl\Http\Controllers\Admin\Settings\IndexController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/mail","name":"admin.settings.mail","action":"Pterodactyl\Http\Controllers\Admin\Settings\MailController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/mail\/test","name":"admin.settings.mail.test","action":"Pterodactyl\Http\Controllers\Admin\Settings\MailController@test"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/advanced","name":"admin.settings.advanced","action":"Pterodactyl\Http\Controllers\Admin\Settings\AdvancedController@index"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\IndexController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/mail","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\MailController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/advanced","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Settings\AdvancedController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users","name":"admin.users","action":"Pterodactyl\Http\Controllers\Admin\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/accounts.json","name":"admin.users.json","action":"Pterodactyl\Http\Controllers\Admin\UserController@json"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/new","name":"admin.users.new","action":"Pterodactyl\Http\Controllers\Admin\UserController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/view\/{user}","name":"admin.users.view","action":"Pterodactyl\Http\Controllers\Admin\UserController@view"},{"host":null,"methods":["POST"],"uri":"admin\/users\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"admin\/users\/view\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/users\/view\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers","name":"admin.servers","action":"Pterodactyl\Http\Controllers\Admin\ServersController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/new","name":"admin.servers.new","action":"Pterodactyl\Http\Controllers\Admin\ServersController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}","name":"admin.servers.view","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/details","name":"admin.servers.view.details","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDetails"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/build","name":"admin.servers.view.build","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewBuild"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/startup","name":"admin.servers.view.startup","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewStartup"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/database","name":"admin.servers.view.database","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/manage","name":"admin.servers.view.manage","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewManage"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/delete","name":"admin.servers.view.delete","action":"Pterodactyl\Http\Controllers\Admin\ServersController@viewDelete"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@store"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/build","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@updateBuild"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/startup","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@saveStartup"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@newDatabase"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/toggle","name":"admin.servers.view.manage.toggle","action":"Pterodactyl\Http\Controllers\Admin\ServersController@toggleInstall"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/rebuild","name":"admin.servers.view.manage.rebuild","action":"Pterodactyl\Http\Controllers\Admin\ServersController@rebuildContainer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/suspension","name":"admin.servers.view.manage.suspension","action":"Pterodactyl\Http\Controllers\Admin\ServersController@manageSuspension"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/reinstall","name":"admin.servers.view.manage.reinstall","action":"Pterodactyl\Http\Controllers\Admin\ServersController@reinstallServer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/delete","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@delete"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/details","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@setDetails"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"Pterodactyl\Http\Controllers\Admin\ServersController@resetDatabasePassword"},{"host":null,"methods":["DELETE"],"uri":"admin\/servers\/view\/{server}\/database\/{database}\/delete","name":"admin.servers.view.database.delete","action":"Pterodactyl\Http\Controllers\Admin\ServersController@deleteDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes","name":"admin.nodes","action":"Pterodactyl\Http\Controllers\Admin\NodesController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/new","name":"admin.nodes.new","action":"Pterodactyl\Http\Controllers\Admin\NodesController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}","name":"admin.nodes.view","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings","name":"admin.nodes.view.settings","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewSettings"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/configuration","name":"admin.nodes.view.configuration","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewConfiguration"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":"admin.nodes.view.allocation","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewAllocation"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/servers","name":"admin.nodes.view.servers","action":"Pterodactyl\Http\Controllers\Admin\NodesController@viewServers"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings\/token","name":"admin.nodes.view.configuration.token","action":"Pterodactyl\Http\Controllers\Admin\NodesController@setToken"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@createAllocation"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove","name":"admin.nodes.view.allocation.removeBlock","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationRemoveBlock"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/alias","name":"admin.nodes.view.allocation.setAlias","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationSetAlias"},{"host":null,"methods":["PATCH"],"uri":"admin\/nodes\/view\/{node}\/settings","name":null,"action":"Pterodactyl\Http\Controllers\Admin\NodesController@updateSettings"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/delete","name":"admin.nodes.view.delete","action":"Pterodactyl\Http\Controllers\Admin\NodesController@delete"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove\/{allocation}","name":"admin.nodes.view.allocation.removeSingle","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationRemoveSingle"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/allocations","name":"admin.nodes.view.allocation.removeMultiple","action":"Pterodactyl\Http\Controllers\Admin\NodesController@allocationRemoveMultiple"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests","name":"admin.nests","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/new","name":"admin.nests.new","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/view\/{nest}","name":"admin.nests.view","action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/new","name":"admin.nests.egg.new","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}","name":"admin.nests.egg.view","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/export","name":"admin.nests.egg.export","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@export"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":"admin.nests.egg.variables","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":"admin.nests.egg.scripts","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggScriptController@index"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/import","name":"admin.nests.egg.import","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@import"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@store"},{"host":null,"methods":["PUT"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggShareController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggScriptController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":"admin.nests.egg.variables.edit","action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\NestController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\Nests\EggVariableController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs","name":"admin.packs","action":"Pterodactyl\Http\Controllers\Admin\PackController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new","name":"admin.packs.new","action":"Pterodactyl\Http\Controllers\Admin\PackController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new\/template","name":"admin.packs.new.template","action":"Pterodactyl\Http\Controllers\Admin\PackController@newTemplate"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/view\/{pack}","name":"admin.packs.view","action":"Pterodactyl\Http\Controllers\Admin\PackController@view"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/new","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@store"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/view\/{pack}\/export\/{files?}","name":"admin.packs.view.export","action":"Pterodactyl\Http\Controllers\Admin\PackController@export"},{"host":null,"methods":["PATCH"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"Pterodactyl\Http\Controllers\Admin\PackController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login","name":"auth.login","action":"Pterodactyl\Http\Controllers\Auth\LoginController@showLoginForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login\/totp","name":"auth.totp","action":"Pterodactyl\Http\Controllers\Auth\LoginController@totp"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password","name":"auth.password","action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password\/reset\/{token}","name":"auth.reset","action":"Pterodactyl\Http\Controllers\Auth\ResetPasswordController@showResetForm"},{"host":null,"methods":["POST"],"uri":"auth\/login","name":null,"action":"Pterodactyl\Http\Controllers\Auth\LoginController@login"},{"host":null,"methods":["POST"],"uri":"auth\/login\/totp","name":null,"action":"Pterodactyl\Http\Controllers\Auth\LoginController@loginUsingTotp"},{"host":null,"methods":["POST"],"uri":"auth\/password","name":null,"action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset","name":"auth.reset.post","action":"Pterodactyl\Http\Controllers\Auth\ResetPasswordController@reset"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset\/{token}","name":null,"action":"Pterodactyl\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/logout","name":"auth.logout","action":"Pterodactyl\Http\Controllers\Auth\LoginController@logout"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}","name":"server.index","action":"Pterodactyl\Http\Controllers\Server\ConsoleController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/console","name":"server.console","action":"Pterodactyl\Http\Controllers\Server\ConsoleController@console"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/allocation","name":"server.settings.allocation","action":"Pterodactyl\Http\Controllers\Server\Settings\AllocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/name","name":"server.settings.name","action":"Pterodactyl\Http\Controllers\Server\Settings\NameController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/sftp","name":"server.settings.sftp","action":"Pterodactyl\Http\Controllers\Server\Settings\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/startup","name":"server.settings.startup","action":"Pterodactyl\Http\Controllers\Server\Settings\StartupController@index"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/allocation","name":null,"action":"Pterodactyl\Http\Controllers\Server\Settings\AllocationController@update"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/name","name":null,"action":"Pterodactyl\Http\Controllers\Server\Settings\NameController@update"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/startup","name":null,"action":"Pterodactyl\Http\Controllers\Server\Settings\StartupController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/databases","name":"server.databases.index","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/databases\/new","name":"server.databases.new","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@store"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/databases\/password","name":"server.databases.password","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/databases\/delete\/{database}","name":"server.databases.delete","action":"Pterodactyl\Http\Controllers\Server\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files","name":"server.files.index","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/add","name":"server.files.add","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/edit\/{file}","name":"server.files.edit","action":"Pterodactyl\Http\Controllers\Server\Files\FileActionsController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/download\/{file}","name":"server.files.edit","action":"Pterodactyl\Http\Controllers\Server\Files\DownloadController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/directory-list","name":"server.files.directory-list","action":"Pterodactyl\Http\Controllers\Server\Files\RemoteRequestController@directory"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/save","name":"server.files.save","action":"Pterodactyl\Http\Controllers\Server\Files\RemoteRequestController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users","name":"server.subusers","action":"Pterodactyl\Http\Controllers\Server\SubuserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/new","name":"server.subusers.new","action":"Pterodactyl\Http\Controllers\Server\SubuserController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/users\/new","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/view\/{subuser}","name":"server.subusers.view","action":"Pterodactyl\Http\Controllers\Server\SubuserController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"Pterodactyl\Http\Controllers\Server\SubuserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules","name":"server.schedules","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/new","name":"server.schedules.new","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/new","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":"server.schedules.view","action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@update"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/toggle","name":"server.schedules.toggle","action":"Pterodactyl\Http\Controllers\Server\Tasks\ActionController@toggle"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/trigger","name":"server.schedules.trigger","action":"Pterodactyl\Http\Controllers\Server\Tasks\ActionController@trigger"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"Pterodactyl\Http\Controllers\Server\Tasks\TaskManagementController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users","name":"api.application.users","action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users\/{user}","name":"api.application.users.view","action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users\/external\/{external_id}","name":"api.application.users.external","action":"Pterodactyl\Http\Controllers\Api\Application\Users\ExternalUserController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/users","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/users\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/users\/{user}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Users\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes","name":"api.application.nodes","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}","name":"api.application.nodes.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\NodeController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}\/allocations","name":"api.application.allocations","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes\/{node}\/allocations","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@store"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}\/allocations\/{allocation}","name":"api.application.allocations.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nodes\AllocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations","name":"api.applications.locations","action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations\/{location}","name":"api.application.locations.view","action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/locations","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/locations\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/locations\/{location}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Locations\LocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers","name":"api.application.servers","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}","name":"api.application.servers.view","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/external\/{external_id}","name":"api.application.servers.external","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ExternalServerController@index"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/details","name":"api.application.servers.details","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerDetailsController@details"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/build","name":"api.application.servers.build","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerDetailsController@build"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/startup","name":"api.application.servers.startup","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\StartupController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/suspend","name":"api.application.servers.suspend","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@suspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/unsuspend","name":"api.application.servers.unsuspend","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@unsuspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/reinstall","name":"api.application.servers.reinstall","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@reinstall"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/rebuild","name":"api.application.servers.rebuild","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerManagementController@rebuild"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/{force?}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}\/databases","name":"api.application.servers.databases","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}\/databases\/{database}","name":"api.application.servers.databases.view","action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases\/{database}\/reset-password","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@resetPassword"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/databases\/{database}","name":null,"action":"Pterodactyl\Http\Controllers\Api\Application\Servers\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests","name":"api.application.nests","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}","name":"api.application.nests.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}\/eggs","name":"api.application.nests.eggs","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\EggController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}\/eggs\/{egg}","name":"api.application.nests.eggs.view","action":"Pterodactyl\Http\Controllers\Api\Application\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client","name":"api.client.index","action":"Pterodactyl\Http\Controllers\Api\Client\ClientController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client\/servers\/{server}","name":"api.client.servers.view","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client\/servers\/{server}\/utilization","name":"api.client.servers.resources","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\ResourceUtilizationController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/command","name":"api.client.servers.command","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\CommandController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/power","name":"api.client.servers.power","action":"Pterodactyl\Http\Controllers\Api\Client\Servers\PowerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/authenticate\/{token}","name":"api.remote.authenticate","action":"Pterodactyl\Http\Controllers\Api\Remote\ValidateKeyController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/download-file","name":"api.remote.download_file","action":"Pterodactyl\Http\Controllers\Api\Remote\FileDownloadController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs","name":"api.remote.eggs","action":"Pterodactyl\Http\Controllers\Api\Remote\EggRetrievalController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs\/{uuid}","name":"api.remote.eggs.download","action":"Pterodactyl\Http\Controllers\Api\Remote\EggRetrievalController@download"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/scripts\/{uuid}","name":"api.remote.scripts","action":"Pterodactyl\Http\Controllers\Api\Remote\EggInstallController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/sftp","name":"api.remote.sftp","action":"Pterodactyl\Http\Controllers\Api\Remote\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}","name":"daemon.pack.pull","action":"Pterodactyl\Http\Controllers\Daemon\PackController@pull"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}\/hash","name":"daemon.pack.hash","action":"Pterodactyl\Http\Controllers\Daemon\PackController@hash"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/configure\/{token}","name":"daemon.configuration","action":"Pterodactyl\Http\Controllers\Daemon\ActionController@configuration"},{"host":null,"methods":["POST"],"uri":"daemon\/install","name":"daemon.install","action":"Pterodactyl\Http\Controllers\Daemon\ActionController@markInstall"}], prefix: '', route : function (name, parameters, route) { diff --git a/public/themes/pterodactyl/css/terminal.css b/public/themes/pterodactyl/css/terminal.css index 29ede479b..a9bd3db1b 100644 --- a/public/themes/pterodactyl/css/terminal.css +++ b/public/themes/pterodactyl/css/terminal.css @@ -26,7 +26,7 @@ #terminal > .cmd { padding: 1px 0; - white-space: pre; + word-wrap: break-word; } #terminal_input { diff --git a/public/themes/pterodactyl/js/frontend/files/src/index.js b/public/themes/pterodactyl/js/frontend/files/src/index.js index a27d40306..83c1460bb 100644 --- a/public/themes/pterodactyl/js/frontend/files/src/index.js +++ b/public/themes/pterodactyl/js/frontend/files/src/index.js @@ -113,7 +113,7 @@ class FileManager { addFolderButton() { $('[data-action="add-folder"]').unbind().on('click', () => { new ActionsClass().folder($('#file_listing').data('current-dir') || '/'); - }) + }); } selectRow() { diff --git a/public/themes/pterodactyl/js/frontend/server.socket.js b/public/themes/pterodactyl/js/frontend/server.socket.js index f43409fd4..09063351d 100644 --- a/public/themes/pterodactyl/js/frontend/server.socket.js +++ b/public/themes/pterodactyl/js/frontend/server.socket.js @@ -30,7 +30,7 @@ var Server = (function () { } if (typeof io !== 'function') { - console.error('Socket.io is reqired to use this panel.'); + console.error('Socket.io is required to use this panel.'); return; } diff --git a/public/themes/pterodactyl/js/plugins/minecraft/eula.js b/public/themes/pterodactyl/js/plugins/minecraft/eula.js index fb2f4807e..27e78c94c 100644 --- a/public/themes/pterodactyl/js/plugins/minecraft/eula.js +++ b/public/themes/pterodactyl/js/plugins/minecraft/eula.js @@ -55,7 +55,7 @@ $(document).ready(function () { console.error(jqXHR); swal({ title: 'Whoops!', - text: 'An error occured while attempting to set the EULA as accepted: ' . jqXHR.responseJSON.error, + text: 'An error occurred while attempting to set the EULA as accepted: ' + jqXHR.responseJSON.error, type: 'error' }) }); diff --git a/public/themes/pterodactyl/vendor/phraseapp/phraseapp.js b/public/themes/pterodactyl/vendor/phraseapp/phraseapp.js deleted file mode 100644 index a11a22655..000000000 --- a/public/themes/pterodactyl/vendor/phraseapp/phraseapp.js +++ /dev/null @@ -1,8 +0,0 @@ -window.PHRASEAPP_CONFIG = { - projectId: '94f8b39450cd749ae9c3cc0ab8cdb61d' -}; -(function() { - var phraseapp = document.createElement('script'); phraseapp.type = 'text/javascript'; phraseapp.async = true; - phraseapp.src = ['https://', 'phraseapp.com/assets/in-context-editor/2.0/app.js?', new Date().getTime()].join(''); - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(phraseapp, s); -})(); diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php index f014ea328..73673a00a 100644 --- a/resources/lang/de/auth.php +++ b/resources/lang/de/auth.php @@ -2,26 +2,26 @@ return [ '2fa_failed' => 'Der 2FA-Token war ungültig.', - '2fa_must_be_enabled' => 'Der Administrator hat festgelegt, dass dein Konto 2-Faktor-Authentifizierung benutzen muss, um das Panel verwenden zu können.', + '2fa_must_be_enabled' => 'Der Administrator hat festgelegt, dass dein Konto die 2-Faktor-Authentifizierung benutzen muss, um das Panel verwenden zu können.', '2fa_required' => 'Zwei-Faktor Authentifizierung', - 'authentication_required' => 'Sie müssen angemeldet sein, um fortzufahren.', - 'auth_error' => 'Währen dem Einloggen ist ein Fehler aufgetreten.', + 'authentication_required' => 'Du musst angemeldet sein, um fortzufahren.', + 'auth_error' => 'Während dem anmelden ist ein Fehler aufgetreten.', 'confirmpassword' => 'Passwort bestätigen', - 'emailsent' => 'Ihre E-Mail zum Zurücksetzen des Passworts ist nun unterwegs.', - 'email_sent' => 'Du erhälst eine E-Mail mit weiteren Anweisungen zum Zurücksetzen deines Passworts.', + 'emailsent' => 'Deine E-Mail zum zurücksetzen des Passworts ist unterwegs.', + 'email_sent' => 'Du erhälst eine E-Mail mit weiteren Anweisungen zum zurücksetzen deines Passworts.', 'failed' => 'Die Anmeldeinformationen stimmen nicht überein.', 'forgot_password' => 'Passwort vergessen', - 'not_authorized' => 'Du bist nicht autorisiert diese Aktion auszuführen0.', + 'not_authorized' => 'Du bist nicht autorisiert diese Aktion auszuführen.', 'password_requirements' => 'Passwörter müssen Zahlen, Klein-, Großbuchstaben enthalten und mindestens 8 Zeichen lang sein.', 'remeberme' => 'Angemeldet bleiben', - 'remember_me' => 'Eingeloggt bleiben', + 'remember_me' => 'Angemeldet bleiben', 'request_reset' => 'Konto suchen', - 'request_reset_text' => 'Du hast dein Passwort vergessen? Das ist keinWeltuntergang! Gib einfach deine Email hier an.', + 'request_reset_text' => 'Du hast dein Passwort vergessen? Das ist kein Weltuntergang! Gib einfach deine E-Mail hier an.', 'resetpassword' => 'Passwort zurücksetzen', 'reset_password' => 'Passwort zurücksetzen', 'reset_password_text' => 'Passwort zurücksetzen.', 'sendlink' => 'Passwortrücksetzungslink senden.', - 'sign_in' => 'Einloggen', - 'throttle' => 'Du hast zu oft versucht dich anzumalen bitte warte noch :seconds Sekunden.', + 'sign_in' => 'Anmelden', + 'throttle' => 'Du hast zu oft versucht dich anzumelden, bitte warte noch :seconds Sekunden.', 'totp_failed' => 'Der TOTP Code war ungültig.', ]; diff --git a/resources/lang/de/base.php b/resources/lang/de/base.php index 142d5713a..b720f7c62 100644 --- a/resources/lang/de/base.php +++ b/resources/lang/de/base.php @@ -6,7 +6,7 @@ return [ 'delete_user' => 'Benutzer löschen', 'details_updated' => 'Dein Account wurde erfolgreich bearbeitet.', 'email_password' => 'Email Passwort', - 'exception' => 'Währen dem Aktualisieren deines Account ist ein Fehler aufgetreten.', + 'exception' => 'Während dem aktualisieren deines Kontos ist ein Fehler aufgetreten.', 'first_name' => 'Vorname', 'header' => 'BENUTZERVERWALTUNG', 'header_sub' => 'Verwalte deine Kontodetails.', @@ -18,11 +18,11 @@ return [ 'new_password_again' => 'Neues Passwort wiederholen', 'totp_disable' => 'Deaktiviere die Zwei-Faktor-Authentifizierung', 'totp_enable' => 'Zwei-Faktor-Authentifizierung aktivieren', - 'totp_enable_help' => 'Es sieht so aus als hättest du Zwei-Faktor-Authentifizierung deaktiviert. Diese Authentifizierungsmethode schützt dein Konto zusätzlich vor unerlaubtem Zugriff. Wenn du es aktivierst musst du zukünftig neben deinem Passwort auch einen Code, der von deinem Smartphone oder einem anderen TOTP fähigen Gerät generiert wird, eingeben um dich anzumelden.', + 'totp_enable_help' => 'Es sieht so aus als hättest du die Zwei-Faktor-Authentifizierung deaktiviert. Diese Authentifizierungsmethode schützt dein Konto zusätzlich vor unerlaubtem Zugriff. Wenn du sie aktivierst musst du zukünftig neben deinem Passwort auch einen Code, der von deinem Smartphone oder einem anderen TOTP fähigen Gerät generiert wird, eingeben um dich anzumelden.', 'totp_header' => 'Zwei-Faktor Authentifizierung', 'update_email' => 'E-Mail Adresse aktualisieren', 'update_identitity' => 'Kotodetails aktualisieren', - 'update_identity' => 'Account bearbeiten', + 'update_identity' => 'Konto bearbeiten', 'update_pass' => 'Passwort ändern', 'update_user' => 'Benutzer aktualisieren', 'username_help' => 'Dein Benutzername muss für dein Konto einzigartig sein und darf nur die folgenden Zeichen enthalten: :requirements.', @@ -32,7 +32,7 @@ return [ 'create_new' => 'Neuen API Schlüssel erstellen', 'header' => 'API Zugriff', 'header_sub' => 'Verwalte deine API Zugangsschlüssel.', - 'keypair_created' => 'An API Key-Pair has been generated. Your API secret token is :token. Please take note of this key as it will not be displayed again.', + 'keypair_created' => 'Ein API-Schlüsselpaar wurde generiert. Dein API Secret Token ist : token . Bitte notiere diesen Schlüssel, da er nicht mehr angezeigt wird. ', 'list' => 'API Schlüssel', ], 'new' => [ @@ -141,7 +141,7 @@ return [ ], 'title' => 'Benutzerverwaltung', 'update' => [ - 'description' => 'Erlaubt Benutzerdetails zu ändern (E-Mail, Passwort, TOPT einstellungen).', + 'description' => 'Erlaubt Benutzerdetails zu ändern (E-Mail, Passwort, TOPT Einstellungen).', 'title' => 'Benutzer aktualisieren', ], 'view' => [ @@ -154,7 +154,7 @@ return [ 'admin' => [ 'location' => [ 'list' => [ - 'desc' => 'Der User darf alle Standorte sehen.', + 'desc' => 'Der Benutzer darf alle Standorte sehen.', 'title' => 'Liste Standorte', ], ], @@ -169,11 +169,11 @@ return [ 'title' => 'Node löschen', ], 'list' => [ - 'desc' => 'Der User darf alle Nodes sehen.', + 'desc' => 'Der Benutzer darf alle Nodes sehen.', 'title' => 'Nodes auflisten', ], 'view-config' => [ - 'desc' => 'Achtung. Der User kann die Konfiguration dieser Node sehen.', + 'desc' => 'Der Benutzer kann die Konfiguration dieser Node sehen.', 'title' => 'Node Konfiguration anzeigen', ], 'view' => [ @@ -202,70 +202,70 @@ return [ 'pack_header' => 'Pack Control', 'server' => [ 'create' => [ - 'desc' => 'Der User darf Server erstellen.', - 'title' => 'Create Server', + 'desc' => 'Der Benutzer darf Server erstellen.', + 'title' => 'Server erstellen', ], 'delete' => [ - 'desc' => 'Der User darf Server löschen.', - 'title' => 'Delete Server', + 'desc' => 'Der Benutzer darf Server löschen.', + 'title' => 'Server löschen', ], 'edit-build' => [ - 'desc' => 'Der User darf Server einstellungen bearbeiten.', - 'title' => 'Edit Server Build', + 'desc' => 'Der Benutzer darf Servereinstellungen bearbeiten.', + 'title' => 'Servereinstellungen ändern', ], 'edit-container' => [ - 'desc' => 'Der User darf die Container Einstellungen des Servers verändern.', - 'title' => 'Edit Server Container', + 'desc' => 'Der Benutzer darf die Container Einstellungen des Servers verändern.', + 'title' => 'Server Container Einstellungen ändern', ], 'edit-details' => [ - 'desc' => 'Der User darf die Server EInstellungen bearbeiten.', - 'title' => 'Edit Server Details', + 'desc' => 'Der Benutzer darf die Servereinstellungen bearbeiten.', + 'title' => 'Server Details ändern', ], 'edit-startup' => [ 'desc' => 'Der User darf die Startparameter ändern.', - 'title' => 'Edit Server Startup', + 'title' => 'Server Startparameter ändern', ], 'install' => [ - 'desc' => 'Der User darf den Installationstatus bearbeiten', - 'title' => 'Toggle Install Status', + 'desc' => 'Der Benutzer darf den Installationstatus bearbeiten', + 'title' => 'Installlations Status ändern', ], 'list' => [ - 'desc' => 'Der User darf alle Server dieser Instanz sehen.', - 'title' => 'List Servers', + 'desc' => 'Der Benutzer darf alle Server dieser Instanz sehen.', + 'title' => 'Servers Liste anzeigen', ], 'rebuild' => [ - 'desc' => 'Der User darf den Server ner erstellen', + 'desc' => 'Der Benutzer darf den Server ner erstellen', 'title' => 'Rebuild Server', ], 'suspend' => [ 'desc' => 'Der User darf Server sperren.', - 'title' => 'Suspend Server', + 'title' => 'Server sperren', ], 'view' => [ - 'desc' => 'Der user darf detaillierte Informationen zu allen Servern dieser Instanz sehen.', - 'title' => 'View Server', + 'desc' => 'Der Benutzer darf detaillierte Informationen zu allen Servern dieser Instanz sehen.', + 'title' => 'Server Informationen anzeigen', ], ], 'server_header' => 'Server Control', 'service' => [ 'list' => [ - 'desc' => 'Der User kann alle Services sehen.', - 'title' => 'List Service', + 'desc' => 'Der Benutzer kann alle Services sehen.', + 'title' => 'Services anzeigen', ], 'view' => [ - 'desc' => 'Der user kann detaillierte Informationen über einen Service sehen.', - 'title' => 'View Service', + 'desc' => 'Der Benutzer kann detaillierte Informationen über einen Service sehen.', + 'title' => 'Service anzeigen', ], ], 'service_header' => 'Service Control', 'user' => [ 'create' => [ - 'desc' => 'Der User kann einen User erstellen.', - 'title' => 'Create User', + 'desc' => 'Der Benutzer kann einen User erstellen.', + 'title' => 'Benutzer erstellen', ], 'delete' => [ 'desc' => 'Der User kann einen Server löschen.', - 'title' => 'Delete User', + 'title' => 'Benutzer löschen', ], 'edit' => [ 'desc' => 'Der User kann einen User bearbeiten.', @@ -273,11 +273,11 @@ return [ ], 'list' => [ 'desc' => 'Ermöglicht die Auflistung aller derzeit im System befindlichen Benutzer.', - 'title' => 'List Users', + 'title' => 'Benutzerliste anzeigen', ], 'view' => [ 'desc' => 'Der User kann detaillierte Informationen der User sehen.', - 'title' => 'View User', + 'title' => 'Benutzerinformationen anzeigen', ], ], 'user_header' => 'Benutzer Control', @@ -285,20 +285,20 @@ return [ 'user' => [ 'server' => [ 'command' => [ - 'desc' => 'Der User hat Zugriff auf die Server Console.', - 'title' => 'Send Command', + 'desc' => 'Der Benutzer hat Zugriff auf die Server Konsole.', + 'title' => 'Befehl senden', ], 'list' => [ - 'desc' => 'Der user darf seine Serverliste ansehen.', - 'title' => 'List Servers', + 'desc' => 'Der Benutzer darf seine Serverliste ansehen.', + 'title' => 'Serverliste', ], 'power' => [ - 'desc' => 'Der User darf den Server starten/stoppen/restartet.', - 'title' => 'Toggle Power', + 'desc' => 'Der Benutzer darf den Server starten/stoppen/restartet.', + 'title' => 'Server start/stop/restart', ], 'view' => [ - 'desc' => 'Der User darf detaillierte Informationen über seine Server sehen.', - 'title' => 'View Server', + 'desc' => 'Der Benutzer darf detaillierte Informationen über seine Server sehen.', + 'title' => 'Serverinformationen anzeigen', ], ], 'server_header' => 'Benutzer Rechte', @@ -312,13 +312,13 @@ return [ 'header' => 'Forbidden', ], '404' => [ - 'desc' => 'Die Angefragte Ressource konnte nicht gefunden werden.', + 'desc' => 'Die angefragte Ressource konnte nicht gefunden werden.', 'header' => 'File Not Found', ], 'home' => 'Gehe zur Startseite', 'installing' => [ - 'desc' => 'Der angeforderte Server wird derzeit noch installiert. Bitte versuche es in ein paar Minuten erneut, du solltest eine E-Mail erhalten, sobald dieser Prozess abgeschlossen ist.', - 'header' => 'Server Installing', + 'desc' => 'Dieser Server wird derzeit noch installiert. Bitte versuche es in ein paar Minuten erneut, du solltest eine E-Mail erhalten, sobald dieser Prozess abgeschlossen ist.', + 'header' => 'Server Installation', ], 'return' => 'Zur vorherigen Seite zurückkehren', 'suspended' => [ @@ -335,13 +335,13 @@ return [ 'no_servers' => 'Deinem Benutzerkonto sind aktuell keine Server zugeordnet.', 'password_req' => 'Passwörter müssen den folgenden Anforderungen genügen: mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Ziffer und eine Länge von mindestens 8 Zeichen.', 'security' => [ - '2fa_checkpoint_help' => 'Verwende die 2FA-Anwendung auf deinem Telefon, um den QR-Codes auf der linken Seite zu scannen, oder gebe den Code darunter manuell ein. Sobald du dies getan haben, generiere einen Token und gebe ihn unten ein.', - '2fa_disabled' => '2-Faktor-Authentifizierung ist deaktiviert! Du solltest 2-Faktor-Authentifizierung aktivieren um dein Konto zusätzlich zu schützen.', + '2fa_checkpoint_help' => 'Verwende die 2FA-Anwendung auf deinem Telefon, um den QR-Codes auf der linken Seite zu scannen, oder gebe den Code darunter manuell ein. Sobald du dies getan hast, generiere einen Token und gebe ihn unten ein.', + '2fa_disabled' => '2-Faktor-Authentifizierung ist deaktiviert! Du solltest die 2-Faktor-Authentifizierung aktivieren um dein Konto zusätzlich zu schützen.', '2fa_disable_error' => 'Der bereitgestellte 2FA-Token war nicht gültig. Der Schutz wurde für dieses Konto nicht deaktiviert.', '2fa_header' => '2-Faktor-Authentifizierung', '2fa_qr' => '2FA konfigurieren', - '2fa_token_help' => 'Bitte gebe den 2FA Code von deiner 2FA APP ein (Google Authenticatior, Authy, etc.).', - 'disable_2fa' => '2-Factor-Authentification deaktivieren', + '2fa_token_help' => 'Bitte gebe den 2FA Code von deiner 2FA APP ein (Google Authenticator, Authy, etc.).', + 'disable_2fa' => '2-Factor-Authentifizierung deaktivieren', 'enable_2fa' => '2-Faktor-Authentifizierung aktivieren', 'header' => 'Kontosicherheit', 'header_sub' => 'Verwalte aktive Sitzungen und die 2-Faktor-Authentifizierung.', @@ -349,6 +349,6 @@ return [ 'session_mgmt_disabled' => 'Der Administrator hat die Möglichkeit, aktive Sitzungen über dieses Panel zu verwalten, nicht aktiviert.', ], 'server_name' => 'Name des Servers', - 'validation_error' => 'Es gab ein Problem mit einer oder mehreren deriner Eingaben.', + 'validation_error' => 'Es gab ein Problem mit einer oder mehreren deiner Eingaben.', 'view_as_admin' => 'Du siehst die Serverliste als Administrator. Deshalb siehst du alle im System vorhandenen Server. Die Server bei denen du als Besitzer eingetragen bist sind mit einem blauen Punkt markiert.', ]; diff --git a/resources/lang/de/command/messages.php b/resources/lang/de/command/messages.php index e3733935f..f4cdfa85a 100644 --- a/resources/lang/de/command/messages.php +++ b/resources/lang/de/command/messages.php @@ -3,18 +3,18 @@ return [ 'location' => [ 'no_location_found' => 'Shortcode wurde nicht gefunden.', - 'ask_short' => 'Location Short Code', - 'ask_long' => 'Location Beschreibung', - 'created' => 'Neue Location (:name) mit der ID :id erstellt.', - 'deleted' => 'Location gelöscht.', + 'ask_short' => 'Standort Short Code', + 'ask_long' => 'Standortbeschreibung', + 'created' => 'Neuer Standort (:name) mit der ID :id erstellt.', + 'deleted' => 'Standort gelöscht.', ], 'user' => [ - 'search_users' => 'Gib einen Benutzernamen, eine UUID oder eine Email an', + 'search_users' => 'Gib einen Benutzernamen, eine UUID oder eine E-Mail an', 'select_search_user' => 'ID des Benutzers (Gib \'0\' ein, um erneut zu suchen)', 'deleted' => 'Benutzer erfolgreich gelöscht.', 'confirm_delete' => 'Bist du dir wirklich sicher?', 'no_users_found' => 'Es wurden keine Benutzer gefunden.', - 'multiple_found' => 'Es wurden mehrere Accounts gefunden.', + 'multiple_found' => 'Es wurden mehrere Benutzer gefunden.', 'ask_admin' => 'Ist dieser Benutzer ein Administrator?', 'ask_email' => 'Email Adresse', 'ask_username' => 'Benutzername', @@ -24,8 +24,8 @@ return [ 'ask_password_tip' => 'Wenn du das wirklich tun willst drücke Strg+c und benutze das `--no-password` flag.', 'ask_password_help' => 'Das Passwort muss Zahlen, Groß- und Kleinbuchstaben enthalten und mindestens 8 Zeichen lang sein.', '2fa_help_text' => [ - 'Dieser Befehl deaktiviert 2-Faktor-Authentifizierung für ein Benutzerkonto, falls es aktiviert ist. Dieser Befehl sollte nur zur Accountrettung verwendet werden, wenn sich ein Nutzer aus seinem Account ausgeschlossen hat.', - 'Falls das nicht ist, was du erreichen wolltest, drücke Strg+C, um diesen Prozess zu beenden.', + 'Dieser Befehl deaktiviert die 2-Faktor-Authentifizierung für ein Benutzerkonto, falls es aktiviert ist. Dieser Befehl sollte nur zur Accountrettung verwendet werden, wenn sich ein Nutzer aus seinem Account ausgeschlossen hat.', + 'Falls es nicht das ist, was du erreichen wolltest, drücke Strg+C, um diesen Prozess zu beenden.', ], '2fa_disabled' => '2-Faktor-Authentifizierung wurde für :email deaktiviert.', ], @@ -43,7 +43,7 @@ return [ 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', 'ask_smtp_port' => 'SMTP Port', 'ask_smtp_username' => 'SMTP Benutzername', - 'ask_smtp_password' => 'SMTP Password', + 'ask_smtp_password' => 'SMTP Passwort', 'ask_mailgun_domain' => 'Mailgun Domain', 'ask_mailgun_secret' => 'Mailgun Secret', 'ask_mandrill_secret' => 'Mandrill Secret', @@ -54,17 +54,17 @@ return [ 'ask_encryption' => 'Encryption method to use', ], 'database' => [ - 'host_warning' => 'It is highly recommended to not use "localhost" as your database host as we have seen frequent socket connection issues. If you want to use a local connection you should be using "127.0.0.1".', - 'host' => 'Database Host', - 'port' => 'Database Port', - 'database' => 'Database Name', - 'username_warning' => 'Using the "root" account for MySQL connections is not only highly frowned upon, it is also not allowed by this application. You\'ll need to have created a MySQL user for this software.', - 'username' => 'Database Benutzername', - 'password_defined' => 'It appears you already have a MySQL connection password defined, would you like to change it?', - 'password' => 'Database Password', - 'connection_error' => 'Unable to connect to the MySQL server using the provided credentials. The error returned was ":error".', - 'creds_not_saved' => 'Your connection credentials have NOT been saved. You will need to provide valid connection information before proceeding.', - 'try_again' => 'Go back and try again?', + 'host_warning' => 'Es wird dringend empfohlen, "localhost" nicht als Datenbank-Host zu verwenden, da es zu häufigen Socket-Verbindungsproblemen gekommen ist. Wenn du eine lokale Verbindung verwenden möchten, solltest du "127.0.0.1" verwenden.', + 'host' => 'Datenbank Host', + 'port' => 'Datenbank Port', + 'database' => 'Datenbank Name', + 'username_warning' => 'Die Verwendung des "root" -Kontos für MySQL-Verbindungen ist nicht erlaubt, Du musst einen extra MySQL-Benutzer erstellt haben.', + 'username' => 'Datenbank Benutzername', + 'password_defined' => 'Es scheint so, als ob du schon ein MySQL-kennwort definiert haast. Möchtest du es ändern?', + 'password' => 'Datenbank Passwort', + 'connection_error' => 'Es konnte keine Verbindung zum MySQL-Server mit den angegebenen Anmeldeinformationen hergestellt werden. Zurückgegebene Fehler ":error".', + 'creds_not_saved' => 'Die Verbindungsdaten wurden NICHT gespeichert. Du musst gültige Verbindungsinformationen angeben, bevor du fortfahren kannst.', + 'try_again' => 'Zurück und erneuert versuchen?', ], 'app' => [ 'app_url_help' => 'The application URL MUST begin with https:// or http:// depending on if you are using SSL or not. If you do not include the scheme your emails and other content will link to the wrong location.', diff --git a/resources/lang/de/exceptions.php b/resources/lang/de/exceptions.php index 57fa375d8..eb416b5fe 100644 --- a/resources/lang/de/exceptions.php +++ b/resources/lang/de/exceptions.php @@ -40,7 +40,7 @@ return [ ], 'subusers' => [ 'editing_self' => 'Du darfst deinen eigenen Subuser nicht bearbeiten.', - 'user_is_owner' => 'Du kannst den Owner nicht als Subuser hinzufügen.', + 'user_is_owner' => 'Du kannst den Serverbesitzer nicht als Subuser hinzufügen.', 'subuser_exists' => 'Diese Email ist bereits registriert.', ], 'databases' => [ diff --git a/resources/lang/de/navigation.php b/resources/lang/de/navigation.php index 8241a63b8..607aaf8c8 100644 --- a/resources/lang/de/navigation.php +++ b/resources/lang/de/navigation.php @@ -23,7 +23,7 @@ return [ 'port_allocations' => 'Port-Einstellungen', 'sftp_settings' => 'SFTP Einstellungen', 'startup_parameters' => 'Startup Parameter', - 'databases' => 'Datenbaken', + 'databases' => 'Datenbanken', 'edit_file' => 'Datei bearbeiten', 'admin_header' => 'ADMINISTRATIV', 'admin' => 'Server Konfiguration', diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php index f024fb936..1680d25bd 100644 --- a/resources/lang/de/pagination.php +++ b/resources/lang/de/pagination.php @@ -1,16 +1,16 @@ - 'Nächste »', 'previous' => '« Vorherige', 'sidebar' => [ - 'account_controls' => 'Kontoeinstellungen', - 'account_security' => 'Account Sicherheit', - 'account_settings' => 'Account Einstellungen', + 'account_controls' => 'Kontosteuerung', + 'account_security' => 'Kontosicherheit', + 'account_settings' => 'Kontoeinstellungen', 'files' => 'Dateimanager', 'manage' => 'Server verwalten', 'overview' => 'Server Übersicht', 'servers' => 'Deine Server', - 'subusers' => 'Unterbenutzer verwalten', + 'subusers' => 'Subuser verwalten', ], ]; diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php index 96ad4d8bd..b1502c703 100644 --- a/resources/lang/de/passwords.php +++ b/resources/lang/de/passwords.php @@ -3,7 +3,7 @@ return [ 'password' => 'Passwort', 'reset' => 'Dein Passwort wurde zurückgesetzt!', - 'sent' => 'Wir haben Ihren Link zum Zurücksetzen des Passworts per E-Mail gesendet!', + 'sent' => 'Ein Link zum zurücksetzen des Passworts wurde per E-Mail gesendet!', 'token' => 'Der Token war ungültig', - 'user' => 'Es gibt keinen User mit dieser Email.', + 'user' => 'Es gibt keinen Benutzer mit dieser E-Mail.', ]; diff --git a/resources/lang/de/server.php b/resources/lang/de/server.php index b22b85033..4ee2ad066 100644 --- a/resources/lang/de/server.php +++ b/resources/lang/de/server.php @@ -3,11 +3,11 @@ return [ 'config' => [ 'allocation' => [ - 'available' => 'Available Allocations', + 'available' => 'Verfügbare Allocations', 'header' => 'Server Allocations', - 'header_sub' => 'Control the IPs and ports available on this server.', + 'header_sub' => 'Verfügbare IPs und Ports für diesen Server verwalten.', 'help' => 'Allocation Help', - 'help_text' => 'The list to the left includes all available IPs and ports that are open for your server to use for incoming connections.', + 'help_text' => 'Die Liste auf der linken Seite zeigt alle verfügbaren IPs und Ports, die für eingehende Verbindungen auf diesem Server geöffnet sind.', ], 'database' => [ 'add_db' => 'Datenbank hinzufügen.', @@ -23,16 +23,16 @@ return [ 'conn_addr' => 'Verbindungsadresse', 'details' => 'SFTP Details', 'header' => 'SFTP Information', - 'header_sub' => 'Details für eine SFTP verbindung.', + 'header_sub' => 'Details für eine SFTP Verbindung.', 'warning' => 'Bitte benutze SFTP und nicht FTP!.', ], 'startup' => [ - 'command' => 'Startup Command', + 'command' => 'Startbefehl', 'edited' => 'Die Einstellungen wurden gespeichert und werden beim nächsten Serverstart verwendet.', 'edit_params' => 'Parameter bearbeiten', 'header' => 'Start Konfiguration', 'header_sub' => 'Bearbeite die Startparameter des Serves.', - 'startup_regex' => 'Input Rules', + 'startup_regex' => 'Input Regeln', 'startup_var' => 'Startbefehl Variablen', 'update' => 'Absenden', ], @@ -47,7 +47,7 @@ return [ 'add_folder' => 'Neuen Ordner erstellen', 'add_new' => 'Neue Datei erstellen', 'back' => 'Zurück zum Datei-Manager', - 'delete' => 'löschen', + 'delete' => 'Löschen', 'edit' => [ 'header' => 'Datei bearbeiten', 'header_sub' => 'Bearbeite Dateien direkt vom Browser aus.', @@ -87,21 +87,21 @@ return [ ], 'schedule' => [ 'actions' => [ - 'command' => 'Command ausführen', + 'command' => 'Befehl ausführen', 'power' => 'Power Aktion', ], 'current' => 'Derzeitige Aktionen', - 'day_of_month' => 'Day of Month', - 'day_of_week' => 'Day of Week', - 'header' => 'Schedule Manager', + 'day_of_month' => 'Tag eines Monats', + 'day_of_week' => 'Tag einer Woche', + 'header' => 'Zeitplan Manager', 'header_sub' => 'Erstelle geplante Aktionen.', - 'hour' => 'Hour of Day', + 'hour' => 'Stunde des Tages', 'manage' => [ 'delete' => 'Aktion löschen', 'header' => 'Aktion verwalten', 'submit' => 'Aktion bearbeiten', ], - 'minute' => 'Minute of Hour', + 'minute' => 'Minute der Stunde', 'new' => [ 'header' => 'Neue Aktion erstellen', 'header_sub' => 'Erstelle eine neue Gruppe an Aktionen.', @@ -110,26 +110,26 @@ return [ 'run_now' => 'Zeitplan jetzt ausführen', 'schedule_created' => 'Neuen Zeitplan für diesen Server erfolgreich erstellt.', 'schedule_updated' => 'Der Zeitplan wurde aktualisiert.', - 'setup' => 'Schedule Setup', + 'setup' => 'Zeitplan Erstellung', 'task' => [ 'action' => 'Aktion ausführen', 'add_more' => 'Weitere Aktion', - 'payload' => 'With Payload', + 'payload' => 'Mit Payload', 'time' => 'Nach', ], - 'task_help' => 'Times for tasks are relative to the previously defined task. Each schedule may have no more than 5 tasks assigned to it and tasks may not be scheduled more than 15 minutes apart.', + 'task_help' => 'Zeiten für Aufgaben sind relativ zu der zuvor definierten Aufgabe. Jedem Zeitplan dürfen nicht mehr als 5 Aufgaben zugewiesen sein und Aufgaben dürfen nicht mehr als 15 Minuten voneinander entfernt liegen.', 'time_help' => 'Dieses System unterstützt dern Cronjob Syntax.', 'toggle' => 'Status wechseln', - 'unnamed' => 'Unnamed Schedule', + 'unnamed' => 'Unbenannter Zeitplan', ], 'tasks' => [ 'actions' => [ - 'command' => 'Command ausführen', + 'command' => 'Befehl ausführen', 'power' => 'Power Aktion senden', ], 'current' => 'Aktuelle Aktionen', 'edit' => [ - 'header' => 'Aktion beareiten', + 'header' => 'Aktion bearbeiten', 'submit' => 'Abschicken', ], 'header' => 'Geplante Aufgaben', @@ -146,16 +146,16 @@ return [ 'header_sub' => 'Neuen Aktion erstellen.', 'hour' => 'Stunde', 'minute' => 'Minute', - 'mon' => 'Montad', + 'mon' => 'Montag', 'payload' => 'Task Payload', - 'payload_help' => 'Wenn du die send command Methode ausgewählt hast wird ein Command zur angegebenen Zeit ausgeführt.', + 'payload_help' => 'Wenn du die Befehl ausführen Methode ausgewählt hast, wird ein Befehl zur angegebenen Zeit ausgeführt.', 'sat' => 'Samstag', 'submit' => 'Absenden', - 'sun' => 'Sontag', + 'sun' => 'Sonntag', 'task_name' => 'Name', 'thurs' => 'Donnerstag', 'tues' => 'Dienstag', - 'type' => 'TTyp', + 'type' => 'Typ', 'wed' => 'Mittwoch', ], 'new_task' => 'Neue Aufgabe hinzufügen', @@ -164,26 +164,26 @@ return [ 'toggle' => 'Status ändern', ], 'users' => [ - 'add' => 'Neuen User erstellen', + 'add' => 'Neuen Benutzer erstellen', 'configure' => 'Rechte einstellen', 'edit' => [ - 'header' => 'User bearbeiten', - 'header_sub' => 'Bearbeite den Zugriff eines Users auf deine Server.', + 'header' => 'Benutzer bearbeiten', + 'header_sub' => 'Verwalte den Zugriff eines Benutzers auf diesen Server.', ], - 'header' => 'User verwalten', + 'header' => 'Benutzer verwalten', 'header_sub' => 'Bestimme wer den Server verwalten kann.', 'list' => 'Account Liste', 'new' => [ 'access_sftp' => [ 'description' => 'Ermöglicht dem Benutzer, eine Verbindung mit dem vom Daemon bereitgestellten SFTP-Server herzustellen.', - 'title' => 'SFTP erlaubt', + 'title' => 'SFTP-Verbindung erlauben', ], 'command' => [ 'title' => 'Konsolenbefehl senden', ], 'compress_files' => [ 'description' => 'Der User darf die Server-Dateien komprimieren(zip).', - 'title' => 'Compress Files', + 'title' => 'Dateien komprimieren', ], 'copy_files' => [ 'description' => 'Der User darf die Server-Dateien kopieren.', @@ -195,97 +195,97 @@ return [ ], 'create_files' => [ 'description' => 'Der User darf Server-Dateien erstellen.', - 'title' => 'Create Files', + 'title' => 'Dateien erstellen', ], 'create_schedule' => [ 'description' => 'Der User darf geplante Aktionen für den Server erstellen.', - 'title' => 'Create Schedule', + 'title' => 'Aktionen erstellen', ], 'create_subuser' => [ 'description' => 'Der User darf Subuser erstellen.', - 'title' => 'Create Subuser', + 'title' => 'Subuser erstellen', ], 'create_task' => [ 'description' => 'Ermöglicht es einem Benutzer, neue Aufgaben zu erstellen.', 'title' => 'Aufgabe erstellen', ], - 'database_header' => 'Database Verwaltung', + 'database_header' => 'Datenbank Verwaltung', 'db_header' => 'Datenbankverwaltung', 'decompress_files' => [ - 'description' => 'Der User darf zip Archive entpacken.', - 'title' => 'Decompress Files', + 'description' => 'Der Benutzer darf ZIP Archive entpacken.', + 'title' => 'Dateien entpacken', ], 'delete_database' => [ 'description' => 'Ermöglicht es dem Benutzer, Datenbanken für diesen Server über das Panel zu löschen.', 'title' => 'Datenbank löschen', ], 'delete_files' => [ - 'description' => 'Der User darf Server-Dateien löschen.', - 'title' => 'Delete Files', + 'description' => 'Der Benutzer darf Server-Dateien löschen.', + 'title' => 'Dateien löschen', ], 'delete_schedule' => [ - 'description' => 'Der User darf geplante Aktionen für den Server löschen.', - 'title' => 'Delete Schedule', + 'description' => 'Der Benutzer darf geplante Aktionen für den Server löschen.', + 'title' => 'Aktionen löschen', ], 'delete_subuser' => [ - 'description' => 'Der User darf Subuser löschen.', - 'title' => 'Delete Subuser', + 'description' => 'Der Benutzer darf Subuser löschen.', + 'title' => 'Subuser löschen', ], 'delete_task' => [ 'description' => 'Ermöglicht es dem Benutzer, eine Aufgabe zu löschen.', 'title' => 'Aufgabe löschen', ], 'download_files' => [ - 'description' => 'Der User darf Server-Dateien herunterladen.', + 'description' => 'Der Benutzer darf Server-Dateien herunterladen.', 'title' => 'Dateien herunterladen', ], 'edit_allocation' => [ - 'description' => 'Allows user to change the default connection allocation to use for a server.', - 'title' => 'Edit Default Connection', + 'description' => 'Ermöglicht es dem Benutzer, die IP:Port Adresse für einen Server zu ändern.', + 'title' => 'Standardverbindung bearbeiten', ], 'edit_files' => [ - 'description' => 'Der User darf die Server-Dateien sehen.', - 'title' => 'Edit Files', + 'description' => 'Der Benutzer darf die Server-Dateien bearbeiten.', + 'title' => 'Dateien bearbeiten', ], 'edit_schedule' => [ - 'description' => 'Der User darf geplante Aktionen für den Server bearbeiten.', - 'title' => 'Edit Schedule', + 'description' => 'Der Benutzer darf geplante Aktionen für den Server bearbeiten.', + 'title' => 'Aktionen bearbeiten', ], 'edit_startup' => [ - 'description' => 'Allows a user to modify startup variables for a server.', - 'title' => 'Edit Startup Command', + 'description' => 'Ermöglicht einem Benutzer, Startvariablen für einen Server zu ändern.', + 'title' => 'Startbefehl bearbeiten', ], 'edit_subuser' => [ - 'description' => 'Der User darf Subuser bearbeiten.', - 'title' => 'Edit Subuser', + 'description' => 'Der Benutzer darf Subuser bearbeiten.', + 'title' => 'Subuser bearbeiten', ], 'email' => 'E-Mail Adresse', - 'email_help' => 'Email Adresse für Einladungs mail.', - 'file_header' => 'Datein Verwaltung', + 'email_help' => 'Email Adresse für Einladungs Mail.', + 'file_header' => 'Dateien Verwaltung', 'header' => 'Neuen Benutzer erstellen', 'header_sub' => 'Erstelle einen neuen Benutzer und gebe ihm Zugriff auf diesen Server.', 'kill' => [ - 'description' => 'Ermöglicht es dem Benutzer, den Serverprozess abzubrechen.', + 'description' => 'Ermöglicht es dem Benutzer, den Serverprozess zu töten.', 'title' => 'Server sofort beenden', ], 'list_files' => [ - 'description' => 'Der User darf die Server-Dateien sehen.', - 'title' => 'List Files', + 'description' => 'Der Benutzer darf die Server-Dateien sehen.', + 'title' => 'Dateien anzeigen', ], 'list_schedules' => [ - 'description' => 'Der User darf geplante Aktionen für den Server sehen.', - 'title' => 'List Schedules', + 'description' => 'Der Benutzer darf geplante Aktionen für den Server sehen.', + 'title' => 'Geplante Aktionen anzeigen', ], 'list_subusers' => [ - 'description' => 'Der User darf Subuser sehen.', - 'title' => 'List Subusers', + 'description' => 'Der Benutzer darf Subuser sehen.', + 'title' => 'Subusers anzeigen', ], 'list_tasks' => [ 'title' => 'Aufgaben auflisten', ], 'move_files' => [ - 'description' => 'Der User darf die Server-Dateien ubenennen und verschieben.', - 'title' => 'Rename & Move Files', + 'description' => 'Der Benutzer darf die Server-Dateien umbenennen und verschieben.', + 'title' => 'Dateien umbenennen & verschieben', ], 'power_header' => 'Power Verwaltung', 'power_kill' => [ @@ -293,43 +293,43 @@ return [ 'title' => 'Kill Server', ], 'power_restart' => [ - 'description' => 'Der User darf den Server neu starten.', + 'description' => 'Der Benutzer darf den Server neu starten.', 'title' => 'Server neu starten', ], 'power_start' => [ 'description' => 'Der Benutzer darf den Server starten.', - 'title' => 'Start Server', + 'title' => 'Server starten', ], 'power_stop' => [ - 'description' => 'Der User darf den Server stoppen.', - 'title' => 'Stop Server', + 'description' => 'Der Benutzer darf den Server stoppen.', + 'title' => 'Server stoppen', ], 'queue_schedule' => [ - 'description' => "Allows a user to queue a schedule to run it's tasks on the next process cycle.", + 'description' => 'Ermöglicht einem Benutzer, einen Zeitplan in die Warteschlange zu stellen.', 'title' => 'Queue Schedule', ], 'queue_task' => [ 'title' => 'Aufgabe einreihen', ], 'reset_db_password' => [ - 'description' => 'Der User darf das Datenbankpasswort zurücksetzen.', - 'title' => 'Reset Database Password', + 'description' => 'Der Benutzer darf das Datenbankpasswort zurücksetzen.', + 'title' => 'Datenbank Passwort zurücksetzen ', ], 'reset_sftp' => [ - 'description' => 'Der User darf dass SFTP Passwort zurücksetzen.', - 'title' => 'Reset SFTP Password', + 'description' => 'Der Benutzer darf dass SFTP Passwort zurücksetzen.', + 'title' => 'SFTP Passwort zurücksetzen', ], 'restart' => [ 'description' => 'Der Benutzer darf den Server neu starten.', 'title' => 'Server neu starten', ], 'save_files' => [ - 'description' => 'Der User darf die Server-Dateien bearbeiten.', - 'title' => 'Save Files', + 'description' => 'Der Benutzer darf bearbeitete Server-Dateien speichern.', + 'title' => 'Dateien speichern', ], 'send_command' => [ - 'description' => 'Der User darf die Konsole benutzen.', - 'title' => 'Send Console Command', + 'description' => 'Der Benutzer darf die Konsole benutzen.', + 'title' => 'Konsolenbefehle senden', ], 'server_header' => 'Server Verwaltung', 'set_connection' => [ @@ -341,57 +341,57 @@ return [ 'title' => 'Server starten', ], 'stop' => [ - 'description' => 'Der User darf den Server stoppen.', + 'description' => 'Der Benutzer darf den Server stoppen.', 'title' => 'Server stoppen', ], 'subuser_header' => 'Subuser Verwaltung', - 'task_header' => 'Schedule Verwaltung', + 'task_header' => 'Aktion Verwaltung', 'toggle_schedule' => [ - 'description' => 'Der User darf geplante Aktionen für den Server de-/aktivieren.', - 'title' => 'Toggle Schedule', + 'description' => 'Der Benutzer darf geplante Aktionen für den Server de-/aktivieren.', + 'title' => 'De-/Aktivieren von Aktionen', ], 'toggle_task' => [ - 'description' => 'Der User darf geplante Aktionen für den Server de-/aktivieren.', + 'description' => 'Der Benutzer darf geplante Aufgaben für den Server de-/aktivieren.', ], 'upload_files' => [ - 'description' => 'Der User darf Server-Dateien hochladen.', - 'title' => 'Upload Files', + 'description' => 'Der Benutzr darf Server-Dateien hochladen.', + 'title' => 'Dateien hochladen', ], 'view_allocations' => [ - 'description' => 'Allows user to view all of the IPs and ports assigned to a server.', - 'title' => 'View Allocations', + 'description' => 'Ermöglicht dem Benutzer, alle einem Server zugewiesenen IPs und Ports anzuzeigen.', + 'title' => 'Zugewiesen IPs und Ports anzeigen', ], 'view_databases' => [ - 'description' => 'Der User darf die Datenbankinformationen sehen.', - 'title' => 'View Database Details', + 'description' => 'Der Benutzer darf die Datenbankinformationen sehen.', + 'title' => 'Datenbankinformationen anzeigen', ], 'view_schedule' => [ - 'description' => 'Der User darf eine Aktion ansehen.', - 'title' => 'View Schedule', + 'description' => 'Der Benutzer darf Aktionen ansehen.', + 'title' => 'Aktionen anzeigen', ], 'view_sftp' => [ 'description' => 'Der User darf die SFTP Informationen sehen (nicht das Passwort).', - 'title' => 'View SFTP Details', + 'title' => 'SFTP Informationen anzeigen', ], 'view_sftp_password' => [ - 'description' => 'Der User darf dass SFTP Passwort sehen.', - 'title' => 'View SFTP Password', + 'description' => 'Der Benutzer darf dass SFTP Passwort sehen.', + 'title' => 'SFTP Password anzeigen', ], 'view_startup' => [ - 'description' => 'Allows user to view the startup command and associated variables for a server.', - 'title' => 'View Startup Command', + 'description' => 'Ermöglicht dem Benutzer, den Startbefehl und zugehörige Variablen für einen Server anzuzeigen.', + 'title' => 'Startbefehl anzeigen', ], 'view_subuser' => [ - 'description' => 'Der User darf Subuser genauer sehen.', + 'description' => 'Der Benutzer darf Subuser genauer sehen.', 'title' => 'View Subuser', ], 'view_task' => [ - 'description' => 'Der User darf eine Aktion ansehen.', + 'description' => 'Der Benutzer darf Aufgaben ansehen.', 'title' => 'Aufgaben ansehen', ], ], - 'update' => 'User bearbeiten', - 'user_assigned' => 'User an einen Server gebunden.', - 'user_updated' => 'User Rechte erfolgreich aktualisiert.', + 'update' => 'Benutzer bearbeiten', + 'user_assigned' => 'Benutzer zum Server hinzugefügt.', + 'user_updated' => 'Benutzer Rechte erfolgreich aktualisiert.', ], ]; diff --git a/resources/lang/de/strings.php b/resources/lang/de/strings.php index d7b09ff50..1551e6a70 100644 --- a/resources/lang/de/strings.php +++ b/resources/lang/de/strings.php @@ -10,7 +10,7 @@ return [ 'admin_cp' => 'Administration', 'again' => 'Nochmals', 'alias' => 'Alias', - 'api_access' => 'Api Access', + 'api_access' => 'API Access', 'cancel' => 'Abbrechen', 'captcha_invalid' => 'Der Captcha war ungültig.', 'close' => 'Schließen', diff --git a/resources/lang/en/server.php b/resources/lang/en/server.php index b84f76387..7782db9b7 100644 --- a/resources/lang/en/server.php +++ b/resources/lang/en/server.php @@ -258,6 +258,10 @@ return [ ], ], ], + 'allocations' => [ + 'mass_actions' => 'Mass Actions', + 'delete' => 'Delete Allocations', + ], 'files' => [ 'exceptions' => [ 'invalid_mime' => 'This type of file cannot be edited via the Panel\'s built-in editor.', diff --git a/resources/lang/es/base.php b/resources/lang/es/base.php index 1ccb6037d..eec59b767 100644 --- a/resources/lang/es/base.php +++ b/resources/lang/es/base.php @@ -362,7 +362,7 @@ return [ '2fa_enabled' => '2-Factor de Autenticación está habilitada en esta cuenta y será necesario iniciar la sesión en el panel de. Si usted desea deshabilitar el 2FA, simplemente ingrese un token válido a continuación y envíe el formulario.', '2fa_header' => '2-Factor De Autenticación', '2fa_qr' => 'Confgure 2FA en Su Dispositivo', - '2fa_token_help' => 'Introduzca el 2FA Token generado por la aplicación (Google Authenticatior, Authy, etc.).', + '2fa_token_help' => 'Introduzca el 2FA Token generado por la aplicación (Google Authenticator, Authy, etc.).', 'disable_2fa' => 'Deshabilitar 2-Factor De Autenticación', 'enable_2fa' => 'Habilitar 2-Factor De Autenticación', 'header' => 'Seguridad De La Cuenta', diff --git a/resources/lang/nl/auth.php b/resources/lang/nl/auth.php index 005b49eff..f15ea9e85 100644 --- a/resources/lang/nl/auth.php +++ b/resources/lang/nl/auth.php @@ -2,17 +2,17 @@ return [ '2fa_failed' => 'De gegeven 2FA token is niet geldig.', - '2fa_must_be_enabled' => 'De administrator heeft ingesteld dat je 2-factor authenticatie moet gebruiken voor je acount voordat je het panel kan gebruiken', + '2fa_must_be_enabled' => 'De administrator heeft ingesteld dat je 2-factor authenticatie moet gebruiken voor je acount voordat je het paneel kan gebruiken', '2fa_required' => '2-factor authenticatie', 'confirmpassword' => 'Bevestig wachtwoord', - 'emailsent' => 'Je wachtwoord reset email is onderweg.', + 'emailsent' => 'Je wachtwoord herstel e-mail is onderweg.', 'forgot_password' => 'Ik ben mijn wachtwoord vergeten!', - 'not_authorized' => 'U hebt geen toestemming om deze actie uit te voeren.', - 'password_requirements' => 'Paswoorden moeten minstens één kleine letter, één hoofdletter en één numeriek karakter bevatten, het paswoord moet ook minstens 8 karakters lang zijn.', + 'not_authorized' => 'U heeft geen toestemming om deze actie uit te voeren.', + 'password_requirements' => 'Wachtwoorden moeten minstens één kleine letter, één hoofdletter en één numeriek karakter bevatten, het wachtwoord moet ook minstens 8 karakters lang zijn.', 'remember_me' => 'Onthoud mij', - 'resetpassword' => 'Reset wachtwoord', - 'reset_password' => 'Reset account wachtwoord', - 'reset_password_text' => 'Reset uw account wachtwoord.', - 'sendlink' => 'Stuur wachtwoord reset link', - 'throttle' => 'Teveel inlog pogingen. Probeer opnieuw in :seconds seconden.', + 'resetpassword' => 'Herstel wachtwoord', + 'reset_password' => 'Herstel account wachtwoord', + 'reset_password_text' => 'Herstel uw account wachtwoord.', + 'sendlink' => 'Stuur wachtwoord herstel link', + 'throttle' => 'Teveel inlog pogingen. Probeer het opnieuw in :seconds seconden.', ]; diff --git a/resources/lang/nl/base.php b/resources/lang/nl/base.php index 66dcaad71..e600525bb 100644 --- a/resources/lang/nl/base.php +++ b/resources/lang/nl/base.php @@ -2,58 +2,57 @@ return [ 'account' => [ - 'current_password' => 'Huidig Paswoord', - 'delete_user' => 'Verwijder Gebruiker', + 'current_password' => 'Huidig Wachtwoord', + 'delete_user' => 'Gebruiker Verwijderen', 'details_updated' => 'Je account details zijn succesvol veranderd', - 'email_password' => 'Email paswoord', + 'email_password' => 'E-mail wachtwoord', 'exception' => 'Er is een fout opgetreden tijdens het veranderen van je account.', 'first_name' => 'Voornaam', 'header' => 'Account Beheer', 'header_sub' => 'Beheer uw account details', - 'invalid_pass' => 'Het opgegeven wachtwoord is niet geldig voor dit account.', - 'invalid_password' => 'Het gegeven wachtwoord voor je account is niet geldig.', + 'invalid_pass' => 'Het opgegeven wachtwoord is ongeldig voor dit account.', + 'invalid_password' => 'Het opgegeven wachtwoord voor je account is ongeldig.', 'last_name' => 'Naam', - 'new_email' => 'Nieuw email adres', - 'new_password' => 'Nieuw Paswoord', + 'new_email' => 'Nieuw e-mail adres', + 'new_password' => 'Nieuw Wachtwoord', 'new_password_again' => 'Herhaal nieuw wachtwoord', - 'totp_apps' => 'U moet een TOTP ondersteunde applicatie hebben (vb Google Authenticator, DUO Mobile, Auth, Enpass) om van deze optie gebruik te kunnen maken.', - 'totp_checkpoint_help' => 'Bevestig aub uw TOTP instellingen door de QR code rechts te scannen met de authenticator applicatie op uw smartphone. Vul vervolgens de 6-delige code, die de applicatie genereerde, in onderstaand veld in. Druk op enter wanneer u klaar bent.', + 'totp_apps' => 'U moet een TOTP ondersteunde applicatie hebben (bijv. Google Authenticator, DUO Mobile, Auth, Enpass) om van deze optie gebruik te kunnen maken.', + 'totp_checkpoint_help' => 'Bevestig a.u.b. uw TOTP instellingen door de QR code rechts te scannen met de authenticator applicatie op uw smartphone. Vul vervolgens de 6-delige code, die de applicatie genereerde, in het onderstaand veld in. Druk op enter wanneer u klaar bent.', 'totp_disable' => 'Schakel 2-delige authenticatie uit.', 'totp_disable_help' => 'Om TOTP uit te schakelen op dit account moet je een geldige TOTP token geven. TOTP bescherming zal uitgeschakeld worden als de token geldig is.', 'totp_enable' => 'Schakel Two-Factor Authentication in', 'totp_enabled' => 'TOTP is nu ingeschakeld op dit account. Klik op de sluit knop om te beëindigen.', 'totp_enabled_error' => 'De opgegeven TOTP token kon niet gevalideerd worden. Probeer het aub nogmaals.', - 'totp_header' => 'Twee-Factor Authenticatie', + 'totp_header' => 'Two-Factor Authenticatie', 'totp_qr' => 'TOTP QR Code', - 'totp_token' => 'TOTP Token -', - 'update_email' => 'Update Email Adres', - 'update_identitity' => 'Update identiteit', - 'update_pass' => 'Werk wachtwoord bij', - 'update_user' => 'Update Gebruiker', - 'username_help' => 'Uw gebruikersnaam moet uniek zijn en mas enkel volgende characters bevatten: :requirements.', + 'totp_token' => 'TOTP Token', + 'update_email' => 'E-mail Adres Bijwerken', + 'update_identitity' => 'Identiteit Bijwerken', + 'update_pass' => 'Wachtwoord Bijwerken', + 'update_user' => 'Gebruiker Bijwerken', + 'username_help' => 'Uw gebruikersnaam moet uniek zijn en mag enkel de volgende characters bevatten: :requirements.', ], 'api' => [ 'index' => [ 'create_new' => 'Creëer nieuwe API sleutel', 'header' => 'API toegang', - 'header_sub' => 'Beheer jouw API keys.', - 'keypair_created' => 'Een API Key-Pair is gegenereerd. Jouw API secret token is :token. Noteer deze code, hij wordt later niet nog een keer weergegeven.', + 'header_sub' => 'Beheer jouw API sleutels.', + 'keypair_created' => 'Een API Key-Pair is gegenereerd. Jouw API geheime token is :token. Noteer deze code, hij wordt later niet nog een keer weergegeven.', 'list' => 'API sleutels', ], 'new' => [ 'allowed_ips' => [ - 'title' => 'Toegestane IPs', + 'title' => 'Toegestane IP\'s', ], 'base' => [ 'title' => 'Basis Informatie', ], 'descriptive_memo' => [ - 'description' => 'Voeg een korte beschrijving over waarvoor deze API key gebruikt zal worden toe.', + 'description' => 'Voeg een korte beschrijving over waarvoor deze API sleutel gebruikt zal worden toe.', 'title' => 'Beschrijvende notitie', ], 'form_title' => 'Details', - 'header' => 'Nieuwe API Key', + 'header' => 'Nieuwe API Sleutel', 'header_sub' => 'Maak een nieuwe API toegangs sleutel', 'node_management' => [ 'delete' => [ @@ -91,7 +90,7 @@ return [ ], 'user_management' => [ 'create' => [ - 'title' => 'Maak gebruiker', + 'title' => 'Gebruiker Aanmaken', ], 'delete' => [ 'description' => 'Geeft toegang tot het verwijderen van een gebruiker', @@ -101,7 +100,7 @@ return [ ], 'title' => 'Gebruikersbeheer', 'update' => [ - 'title' => 'Werk gebruiker bij', + 'title' => 'Gebruiker bijwerken', ], 'view' => [ 'title' => 'Toon gebruiker', @@ -122,9 +121,9 @@ return [ 'security' => [ '2fa_header' => '2-factor authenticatie', '2fa_qr' => 'Configureer 2FA op uw toestel', - 'enable_2fa' => 'Zet 2-Factor Authentication aan', + 'enable_2fa' => 'Zet 2-Factor authenticatie aan', ], 'server_name' => 'Server naam', - 'validation_error' => 'Er is een fout opgetreden tijdens het valideren van de data die u opgegeven hebt.', + 'validation_error' => 'Er is een fout opgetreden tijdens het valideren van de data die u heeft opgegeven.', 'view_as_admin' => 'U bekijkt de server lijst als een administrator. Hierdoor zijn alle servers die geïnstalleerd zijn op het systeem zichtbaar. Alle servers waarvan u de eigenaar bent zijn gemarkeerd met een blauwe bol links van hun naam.', ]; diff --git a/resources/lang/nl/passwords.php b/resources/lang/nl/passwords.php index 836932f14..7a04355d6 100644 --- a/resources/lang/nl/passwords.php +++ b/resources/lang/nl/passwords.php @@ -1,7 +1,7 @@ 'Paswoord', + 'password' => 'Wachtwoord', 'sent' => 'We hebben u een wachtwoord herstel link gestuurd!', 'user' => 'We kunnen geen gebruiker vinden met dat e-mail adres.', ]; diff --git a/resources/lang/nl/server.php b/resources/lang/nl/server.php index 34034bef0..e231b3d29 100644 --- a/resources/lang/nl/server.php +++ b/resources/lang/nl/server.php @@ -84,7 +84,7 @@ return [ 'description' => 'Staat gebruikers toe om een nieuw bestand aan te maken binnen het paneel.', ], 'create_task' => [ - 'title' => 'Maak een taak', + 'title' => 'Taak aanmaken', ], 'db_header' => 'Database beheer', 'delete_files' => [ @@ -118,10 +118,10 @@ return [ 'title' => 'Plan taak', ], 'reset_db_password' => [ - 'title' => 'Reset database wachtwoord', + 'title' => 'Herstel database wachtwoord', ], 'reset_sftp' => [ - 'title' => 'Reset SFTP wachtwoord', + 'title' => 'Herstel SFTP wachtwoord', ], 'restart' => [ 'title' => 'Herstart server', @@ -141,8 +141,7 @@ return [ 'description' => 'Staat gebruikers toe om bestanden te uploaden via het bestandsbeheer.', ], 'view_databases' => [ - 'title' => 'Geef database details weer -', + 'title' => 'Geef database details weer', ], 'view_schedule' => [ 'title' => 'Bekijk Schema', @@ -170,6 +169,6 @@ return [ ], 'update' => 'Werk sub gebruiker bij', 'user_assigned' => 'De subuser is succesvol toegevoegd aan deze server.', - 'user_updated' => 'Permissies zijn geupdate.', + 'user_updated' => 'Rechten zijn bijgewerkt.', ], ]; diff --git a/resources/lang/nl/strings.php b/resources/lang/nl/strings.php index 5cb7df2ca..629c63290 100644 --- a/resources/lang/nl/strings.php +++ b/resources/lang/nl/strings.php @@ -17,7 +17,7 @@ return [ 'created_at' => 'Gecreëerd op', 'data' => 'Bestanden', 'database' => 'Database', - 'email' => 'Email', + 'email' => 'E-mail', 'enabled' => 'Ingeschakeld', 'expires' => 'Verloopt', 'home' => 'Home', @@ -29,7 +29,7 @@ return [ 'next_run' => 'Volgende ronde', 'node' => 'Node', 'none' => 'Geen', - 'password' => 'Paswoord', + 'password' => 'Wachtwoord', 'players' => 'Spelers', 'primary' => 'Primair', 'queued' => 'Wachtrij', diff --git a/resources/lang/nl/validation.php b/resources/lang/nl/validation.php index 08607ad74..6f4ebca16 100644 --- a/resources/lang/nl/validation.php +++ b/resources/lang/nl/validation.php @@ -8,7 +8,7 @@ return [ 'alpha' => 'Het :attribute mag enkel letters bevatten.', 'alpha_dash' => 'De :attribute mag alleen letters, nummers en streepjes bevatten.', 'alpha_num' => 'De :attribute mag alleen letters en nummers bevatten.', - 'email' => 'Email', + 'email' => 'E-mail', 'in' => 'Het geselecteerde :attribute is ongeldig.', 'timezone' => 'Het :attribute moet een geldige tijdszone zijn.', 'totp' => 'De totp token is ongeldig. Is het verlopen?', diff --git a/resources/themes/pterodactyl/admin/nodes/view/allocation.blade.php b/resources/themes/pterodactyl/admin/nodes/view/allocation.blade.php index 75b40811c..bab9fa5d1 100644 --- a/resources/themes/pterodactyl/admin/nodes/view/allocation.blade.php +++ b/resources/themes/pterodactyl/admin/nodes/view/allocation.blade.php @@ -39,23 +39,42 @@

Existing Allocations

-
+
+ - + @foreach($node->allocations as $allocation) - + + - +
+ + IP Address IP Alias Port Assigned To + +
{{ $allocation->ip }} + @if(is_null($allocation->server_id)) + + @else + + @endif + {{ $allocation->ip }} {{ $allocation->port }}{{ $allocation->port }} @if(! is_null($allocation->server)) {{ $allocation->server->name }} @@ -153,17 +172,35 @@ @section('footer-scripts') @parent @endsection diff --git a/resources/themes/pterodactyl/admin/settings/mail.blade.php b/resources/themes/pterodactyl/admin/settings/mail.blade.php index 40403993f..5532d89bd 100644 --- a/resources/themes/pterodactyl/admin/settings/mail.blade.php +++ b/resources/themes/pterodactyl/admin/settings/mail.blade.php @@ -32,7 +32,7 @@ @else -
+
@@ -98,7 +98,10 @@
@endif @@ -106,3 +109,96 @@
@endsection + +@section('footer-scripts') + {!! Theme::js('js/laroute.js?t={cache-version}') !!} + {!! Theme::js('vendor/jquery/jquery.min.js?t={cache-version}') !!} + {!! Theme::js('vendor/sweetalert/sweetalert.min.js?t={cache-version}') !!} + + +@endsection diff --git a/resources/themes/pterodactyl/layouts/auth.blade.php b/resources/themes/pterodactyl/layouts/auth.blade.php index 0157864eb..108e1311f 100644 --- a/resources/themes/pterodactyl/layouts/auth.blade.php +++ b/resources/themes/pterodactyl/layouts/auth.blade.php @@ -60,7 +60,5 @@ particlesJS.load('particles-js', '{!! Theme::url('vendor/particlesjs/particles.json?t={cache-version}') !!}', function() {}); }) - - @if(config('pterodactyl.lang.in_context')) {!! Theme::js('vendor/phraseapp/phraseapp.js?t={cache-version}') !!} @endif diff --git a/resources/themes/pterodactyl/layouts/master.blade.php b/resources/themes/pterodactyl/layouts/master.blade.php index 15d88b96b..f83a6f151 100644 --- a/resources/themes/pterodactyl/layouts/master.blade.php +++ b/resources/themes/pterodactyl/layouts/master.blade.php @@ -286,9 +286,6 @@ {!! Theme::js('vendor/socketio/socket.io.v203.min.js?t={cache-version}') !!} {!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js?t={cache-version}') !!} {!! Theme::js('js/autocomplete.js?t={cache-version}') !!} - @if(config('pterodactyl.lang.in_context')) - {!! Theme::js('vendor/phraseapp/phraseapp.js?t={cache-version}') !!} - @endif @if(Auth::user()->root_admin)