diff --git a/.env.ci b/.env.ci index 1a9e848e3..d5bd192ad 100644 --- a/.env.ci +++ b/.env.ci @@ -1,7 +1,6 @@ APP_ENV=testing APP_DEBUG=true APP_KEY=SomeRandomString3232RandomString -APP_THEME=pterodactyl APP_TIMEZONE=UTC APP_URL=http://localhost/ APP_ENVIRONMENT_ONLY=true diff --git a/BUILDING.md b/BUILDING.md deleted file mode 100644 index d8b703338..000000000 --- a/BUILDING.md +++ /dev/null @@ -1,63 +0,0 @@ -# Local Development -Pterodactyl is now powered by React, Typescript, and Tailwindcss using webpack at its core to generate compiled assets. -Release versions of Pterodactyl will include pre-compiled, minified, and hashed assets ready-to-go. - -However, if you are interested in running custom themes or making modifications to the React files you'll need a build -system in place to generate these compiled assets. To get your environment setup you'll need at minimum: - -* [Node.js](https://nodejs.org/en/) v14.x.x -* [Yarn](https://classic.yarnpkg.com/lang/en/) v1.x.x -* [Go](https://golang.org/) 1.17.x - -### Install Dependencies -```bash -yarn install -``` - -The command above will download all of the dependencies necessary to get Pterodactyl assets building. After that, its as -simple as running the command below to generate assets while you're developing. Until you've run this command at least -once you'll likely see a 500 error on your Panel about a missing `manifest.json` file. This is generated by the commands -below. - -```bash -# Build the compiled set of assets for development. -yarn run build - -# Build the assets automatically as they are changed. This allows you to refresh -# the page and see the changes immediately. -yarn run watch -``` - -### Hot Module Reloading -For more advanced users, we also support 'Hot Module Reloading', allowing you to quickly see changes you're making -to the Vue template files without having to reload the page you're on. To Get started with this, you just need -to run the command below. - -```bash -PUBLIC_PATH=http://192.168.1.1:8080 yarn run serve --host 192.168.1.1 -``` - -There are two _very important_ parts of this command to take note of and change for your specific environment. The first -is the `--host` flag, which is required and should point to the machine where the `webpack-serve` server will be running. -The second is the `PUBLIC_PATH` environment variable which is the URL pointing to the HMR server and is appended to all of -the asset URLs used in Pterodactyl. - -#### Development Environment -If you're using the [`pterodactyl/development`](https://github.com/pterodactyl/development) environments, which are -highly recommended, you can just run `yarn run serve` to run the HMR server, no additional configuration is necessary. - -### Building for Production -Once you have your files squared away and ready for the live server, you'll be needing to generate compiled, minified, -and hashed assets to push live. To do so, run the command below: - -```bash -yarn run build:production -``` - -This will generate a production JS bundle and associated assets, all located in `public/assets/` which will need to -be uploaded to your server or CDN for clients to use. - -### Running Wings -To run `wings` in development all you need to do is set up the configuration file as normal when adding a new node, and -then you can build and run a local version of Wings by executing `make debug` in the Wings code directory. This must -be run on a Linux VM of some sort, you cannot run this locally on macOS or Windows. diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 3e9e805eb..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,1769 +0,0 @@ -# Changelog -This file is a running track of new features and fixes to each version of the panel released starting with `v0.4.0`. - -This project follows [Semantic Versioning](http://semver.org) guidelines. - -## v1.11.5 -### Fixed -* Rust egg using the wrong Docker image, breaking Rust modding frameworks. - -## v1.11.4 -### Added -* Added support for the `server.queryport` option on the Rust egg. -* Added support for the Carbon modding framework to the Rust egg. - -### Changed -* Upgraded to Laravel 10. -* Sensitive data is no longer shown in the CopyOnClick toast notification. - -### Fixed -* Allow SVGs to be edited in the server's file manager. -* Properly validate the request body when creating a backup. -* Fixed issue with schedules running at the wrong time when the panel utilized a timezone with non-hour offsets (such as `Australia/Darwin`). -* Fixes the log directory when running the Panel in a container. -* Fixes the permission name used to check if a user has permission to read files/folders. -* Fixes the ability to unset a server's description through the client API. -* Fixed the MassActionBar on the server's file manager blocking elements below it, preventing them from being interacted with. - -## v1.11.3 -### Changed -* When updating a server's description through the client API, if no value is specified, the description will now remain unchanged. -* When installing the Panel for the first time, the queue driver will now all default to `redis` instead of `sync`. - -### Fixed -* `php artisan p:environment:mail` not correctly setting the right variable for `MAIL_FROM_ADDRESS`. -* Fixed the conflict state rendering on the UI for a server showing `reinstall_failed` as `restoring_backup`. -* Fixed the unknown column `uuid` error when jobs fail, causing them not to get stored correctly. -* Fixed the server task endpoints in the client API not allowing `sequence_id` and `continue_on_failure` to be set. - -## v1.11.2 -### Changed -* Telemetry no longer sends a map of Egg and Nest UUIDs to the number of servers using them. -* Increased the timeout for the decompress files endpoint in the client API from 15 seconds to 15 minutes. - -### Fixed -* Fixed Panel Docker image having a `v` prefix in the version displayed in the admin area. -* Fixed emails using the wrong queue name, causing them to not be sent. -* Fixed the settings keys used for configuring SMTP settings, causing settings to not save properly. -* Fixed the `MAIL_EHLO_DOMAIN` environment variable not being properly backwards compatible with the old `SERVER_NAME` variable. - -## v1.11.1 -### Fixed -* Fixed Panel Docker image showing `canary` as it's version. - -## v1.11.0 -### Changed (since 1.10.4) -* Changed minimum PHP version requirement from `7.4` to `8.0`. -* Upgraded from Laravel 8 to Laravel 9. -* This release requires Wings v1.11.x in order for Server Transfers to work. -* `MB` byte suffixes are now displayed as `MiB` to more accurately reflect the actual value. -* Server re-installation failures are tracked independently of the initial installation process. - -### Fixed (since 1.10.4) -* Node maintenance mode now properly blocks access to servers. -* Fixed the length validation on the Minecraft Forge egg. -* Fixed the password in the JDBC string not being properly URL encoded. -* Fixed an issue where Wings would throw a validation error while attempting to upload activity logs. -* Properly handle a missing `Content-Length` header in the response from the daemon. -* Ensure activity log properties are always returned as an object instead of an empty array. - -### Added (since 1.10.4) -* Added the `server:settings.description` activity log event for when a server description is changed. -* Added the ability to cancel file uploads in the file manager for a server. -* Added a telemetry service to collect anonymous metrics from the panel, this feature is *enabled* by default and can be toggled using the `PTERODACTYL_TELEMETRY_ENABLED` environment variable. - -## v1.11.0-rc.2 -### Changed -* `MB` byte suffixes are now displayed as `MiB` to more accurately reflect the actual value. -* Server re-installation failures are tracked independently of the initial installation process. - -### Fixed -* Properly handle a missing `Content-Length` header in the response from the daemon. -* Ensure activity log properties are always returned as an object instead of an empty array. - -### Added -* Added the `server:settings.description` activity log event for when a server description is changed. -* Added the ability to cancel file uploads in the file manager for a server. -* Added a telemetry service to collect anonymous metrics from the panel, this feature is disabled by default and can be toggled using the `PTERODACTYL_TELEMETRY_ENABLED` environment variable. - -## v1.11.0-rc.1 -### Changed -* Changed minimum PHP version requirement from `7.4` to `8.0`. -* Upgraded from Laravel 8 to Laravel 9. -* This release requires Wings v1.11.x in order for Server Transfers to work. - -### Fixed -* Node maintenance mode now properly blocks access to servers. -* Fixed the length validation on the Minecraft Forge egg. -* Fixed the password in the JDBC string not being properly URL encoded. -* Fixed an issue where Wings would throw a validation error while attempting to upload activity logs. - -## v1.10.4 -### Fixed -* Fixed an issue where subusers could be given permissions that are not actually registered or used. -* Fixed an issue where node FQDNs could not just be IP addresses. - -### Changed -* Change maximum number of API keys per user from `10` to `25`. -* Change byte unit prefix from `B` to `iB` to better reflect our usage of base 2 (multiples of 1024). - -## v1.10.3 -### Fixed -* S3 Backup driver now supports Cloudflare R2. -* Node FQDNs can now be used with AAAA records with no A records present. -* Server transfers can no longer be initiated if the server is being installed, transferred, or restoring a backup. -* Fixed an issue relating to the use of arrays in the `config_files` field with eggs. -* Fixed `oom_disabled` not being mapped in the Application API when creating a new server. - -### Added -* File manager now supports selecting multiple files for upload (when using the upload button). -* Added a configuration option for specifying the S3 storage class for backups. - -### Changed -* Servers will now show the current uptime when the server is starting rather than only showing when the server is marked as online. - -## v1.10.2 -### Fixed -* Fixes a rendering issue with egg descriptions in the admin area -* Fixes the page title on the SSH Keys page - -### Changed -* Additional validation rules will now show a toggle switch rather than an input when editing server variables -* The eggs endpoint will now always return an empty JSON object for the `config_files` field, even if the field is completely empty - -### Added -* Adds a `Force Outgoing IP` option for eggs that can be used to ensure servers making outgoing connections use their allocation IP rather than the node's primary ip -* Adds options to configure sending of email (re)install notifications -* Add an option to configure the part size for backups uploaded to S3 - -## v1.10.1 -### Fixed -* Fixes a surprise `clock()` function that was used for debugging and should not have made it into the release. This was causing activity events to not properly sync between the Panel and Wings. - -## v1.10.0 -### Fixed -* Fixes improper cache key naming on the frontend causing server activity logs to be duplicated across server page views. -* Fixes overflow issues on dialogs when the internal content is too long. -* Fixes spinner overlay on console improperly taking up the entire page making it impossible to use navigation controls. -* Fixes 2FA QR code background being too dark for some phones to properly scan. -* File manager now properly displays an error message if a user attempts to upload a folder rather than files. -* Fixes the "Create Directory" dialog persisting the previously entered value when it is re-opened. - -### Changed -* IP addresses in activity logs are now always displayed to administrators, regardless of if they own the server or not. -* Scroll down indicator on the console has been changed to a down arrow to be clearer. -* Docker builds have been updated to use `PHP 8.1`. -* Recaptcha validation domain is now configurable using the `RECAPTCHA_DOMAIN` environment variable. -* Drag and drop overlay on the file manager has been tweaked to be slightly more consistent with the frontend style and be a little easier to read. - -### Added -* Adds support for the `user_uuid` claim on all generated JWTs which allows Wings to properly identify the user performing each action. -* Adds support for recieving external activity log events from Wings instances (power state, commands, SFTP, and uploads). -* Adds support for tracking failed password-based SFTP logins. -* Server name and description are now passed along to Wings making them available in egg variables for parsing and including. -* Adds support for displaying all active file uploads in the file manager. - -## v1.9.2 -### Fixed -* Fixes rouding in sidebar of CPU usage graph that was causing an excessive number of zeros to be rendered. -* Fixes the Java Version selector modal having the wrong default value selected initially. -* Fixes console rendering in Safari that was causing the console to resize excessively and graphs to overlay content. -* Fixes missing "Starting"/"Stopping" status display in the server uptime block. -* Fixes incorrect formatting of activity log when viewing certain file actions. - -### Changed -* Updated the UI for the two-step authorization setup on accounts to use new Dialog UI and provide better clarity to new users. - -### Added -* Added missing `` tag to template output to avoid entering quirks mode in browsers. -* Added password requirement when enabling TOTP on an account. - -## v1.9.1 -### Fixed -* Fixes missing "Click to Copy" for server address on the console data blocks. -* Fixes data points on the graphs not being properly rounded to two decimal places. -* Returns byte formatting logic to use `1024` as the base value, rather than `1000`. -* Fixes permission error occurring when a server is marked as installing and an admin navigates to the console screen. -* Fixes improper display of install/transfer warning on the server console page. -* Fixes permission matching for the server settings page to correctly allow access when a user has _any_ of the needed permissions. - -### Changed -* Moves the server data blocks to the right-hand side of the console, rather than the left. -* Rather than defaulting graph values at `0` when resetting or refreshing the page, their values are now hidden entirely. -* **[security]** Hides IP addresses from all activity log entries that are not directly associated with the currently signed in user. - -### Added -* Adds the current resource limits for a server next to each data block on the console screen. - -## v1.9.0 -### Added -* Added support for using Tailwind classes inside components using `className={}` rather than having to use `twin.macro` with the `css={}` prop. -* Added HeadlessUI and Heroicons packages. -* Added new `Tooltip.tsx` component to support displaying tooltips within the Panel. -* Adds a new activity log view for both user accounts and individual servers. This builds upon data collected in previous releases. -* Added a new column `api_key_id` to the `activity_logs` table to indicate if the user performed the action while using an API key. -* Adds initial support for language translations on the front-end. The underlying implementation details are working, however work has not yet begun on actually translating all of the strings yet. Expect this to continue in future releases. -* Improved accessibility for navigation icons by adding a tooltip on hover to indicate what each one does. -* Adds logging for API keys that are blocked from performing an API action due to IP address limiting. -* Adds support for `?filter[description]=foo` when querying servers on both the client and application API. - -### Changed -* Updated how release assets are generated to perform more logical bundle splitting. This should help reduce the amount of data users have to download at once in order to render the UI. -* Upgraded From TailwindCSS 2 to 3 — for most people this should have minimal if any impact. -* Chart.js updated from v2 to v3. -* Reduced the number of custom colors in use — by default we now use Tailwind's default color pallet, with the exception of a custom gray scheme. -* **[deprecated]** The use of `neutral` and `primary` have been deprecated in class names, prefer `gray` and `blue` respectively. -* Begins the process of dropping the use of Gravatars for user avatars and replaces them with dynamically generated SVG images. -* Improved front-end route definitions to make it easier for external modifications to inject their routes and components into the codebase without having to modify as many core files. -* Redesigned the server console screen to better display data users might be looking for, and increase the height of the console itself. -* Merged the two network data graphs into a single dual-line graph to better display incoming and outgoing data volumes. -* Updated all byte formatting logic to use `1000` as the divisor rather than `1024` to be more consistent with what users most likely expect. -* Changed the underlying `eslint` rules applied to the front-end codebase to simplify them dramatically. We now utilize `prettier` in combination with some basic default rulesets to make it easier to understand the expected formatting. - -### Fixed -* Fixes a bug causing a 404 error when attempting to delete a database from a server in the admin control panel. -* Fixes console input auto-capitalizing and auto-correcting when entering text on some mobile devices. -* Fixes SES service configuration using a hard-coded `us-east-1` region. -* Fixes a bug causing a 404 error when attempting to delete an SSH key from your account when the SHA256 hash includes a slash. -* Fixes mobile keyboards automatically attempting to capitalize and spellcheck typing on the server console. -* Fixes improper support for IP address CIDR ranges when creating API keys for the client area. -* Fixes a bug preventing additional included details from being returned from the application API when utilizing a client API key as an administrator. - -## v1.8.1 -### Fixed -* Fixes a bug causing mounts to return a 404 error when adding them to a server. -* Fixes a bug causing the Egg Image dropdown to not display properly when creating a new server. -* Fixes a bug causing an error when attemping to create a new server via the API. - -## v1.8.0 -**Important:** this version updates the `version` field on generated Eggs to be `PTDL_v2` due to formatting changes. This -should be completely seamless for most installations as the Panel is able to convert between the two. Custom solutions -using these eggs should be updated to account for the new format. - -This release also changes API key behavior — "client" keys belonging to admin users can now be used to access -the `/api/application` endpoints in their entirety. Existing "application" keys generated in the admin area should -be considered deprecated, but will continue to work. Application keys _will not_ work with the client API. - -### Fixed -* Schedules are no longer run when a server is suspended or marked as installing. -* The remote field when creating a database is no longer limited to an IP address and `%` wildcard — all expected MySQL remote host values are allowed. -* Allocations cannot be deleted from a server by a user if the server is configured with an `allocation_limit` set to `0`. -* The Java Version modal no longer shows a dropdown and update option to users that do not have permission to make those changes. -* The Java Version modal now correctly returns only the images available to the server's selected Egg. -* Fixes leading and trailing spaces being removed from variable values on file manager endpoints, causing errors when trying to perform actions against certain files and folders. - -### Changed -* Forces HTTPS on URLs when the `APP_URL` value is set and includes `https://` within the URL. This addresses proxy misconfiguration issues that would cause URLs to be generated incorrectly. -* Lowers the default timeout values for requests to Wings instances from 10 seconds to 5 seconds. -* Additional permissions (`CREATE TEMPORARY TABLES`, `CREATE VIEW`, `SHOW VIEW`, `EVENT`, and `TRIGGER`) are granted to users when creating new databases for servers. -* development: removed Laravel Debugbar in favor of Clockwork for debugging. -* The 2FA input field when logging in is now correctly identified as `one-time-password` to help browser autofill capabilities. -* Changed API authentication mechanisms to make use of Laravel Sanctum to significantly clean up our internal handling of sessions. -* API keys generated by the system now set a prefix to identify them as Pterodactyl API keys, and if they are client or application keys. This prefix looks like `ptlc_` for client keys, and `ptla_` for application keys. Existing API keys are unaffected by this change. - -### Added -* Added support for PHP 8.1 in addition to PHP 8.0 and 7.4. -* Adds more support for catching potential PID exhaustion errors in different games. -* It is now possible to create a new node on the Panel using an artisan command. -* A new cron cheatsheet has been added which appears when creating a schedule. -* Adds support for filtering the `/api/application/nodes/:id/allocations` endpoint using `?filter[server_id]=0` to only return allocations that are not currently assigned to a server on that node. -* Adds support for naming docker image values in an Egg to improve front-end display capabilities. -* Adds command to return the configuration for a specific node in both YAML and JSON format (`php artisan p:node:configuration`). -* Adds command to return a list of all nodes available on the Panel in both table and JSON format (`php artisan p:node:list`). -* Adds server network (inbound/outbound) usage graphs to the console screen. -* Adds support for configuring CORS on the API by setting the `APP_CORS_ALLOWED_ORIGINS=example.com,dashboard.example.com` environment variable. By default all instances are configured with this set to `*` which allows any origin. -* Adds proper activity logging for the following areas of the Panel: authentication, user account modifications, server modification. This is an initial test implementation before further roll-out in the software. Events are logged into the database but are not currently exposed in the UI — they will be displayed in a future update. - -### Removed -* Removes Google Analytics from the front end code. -* Removes multiple middleware that were previously used for configuring API access and controlling model fetching. This has all been replaced with Laravel Sanctum and standard Laravel API tooling. This should make codebase discovery significantly more simple. -* **DEPRECATED**: The use of `Pterodactyl\Models\AuditLog` is deprecated and all references to this model have been removed from the codebase. In the next major release this model and table will be fully dropped. - -## v1.7.0 -### Fixed -* Fixes typo in message shown to user when deleting a database. -* Fixes formatting of IPv6 addresses when displaying allocations to users. -* Fixes an exception thrown while trying to return error messages from API endpoints that inproperly masked the true underlying error. -* Fixes SSL certificate path generation for Let's Encrypt by ensuring they are always transformed to lowercase. -* Removes duplicate entries when creating a nested folder in the file manager. -* Fixes missing validation of Egg Author email addresses during the setup process that could cause unexpected failures later on. -* Fixes font rendering issues of the console on Firefox due to an outdated version of xterm.js being used. -* Fixes display overlap issues of the two-factor configuration form in a user's settings. -* **[security]** When authenticating using an API key a user session is now only persisted for the duration of the request before being destroyed. - -### Changed -* CPU graph changed to show the maximum amount of CPU available to a server to better match how the memory graph is displayed. - -### Added -* Adds support for `DB_PORT` environment variable in the Docker enterpoint for the Panel image. -* Adds suport for ARM environments in the Docker image. -* Adds a new warning modal for Steam servers shown when an invalid Game Server Login Token (GSL Token) is detected. -* Adds a new warning modal for Steam servers shown when the installation process runs out of available disk space. -* Adds a new warning modal for Minecraft servers shown when a server exceeds the maximum number of child processes. -* Adds support for displaying certain server variable fields as a checkbox when they're detected as using `boolean` or `in:0,1` validation rules. -* Adds support for Pug and Jade in the file editor. -* Adds an entry to the `robots.txt` file to correctly disallow all bot indexing. - - -## v1.6.6 -### Fixed -* **[security]** Fixes a CSRF vulnerability for both the administrative test email endpoint and node auto-deployment token generation endpoint. [GHSA-wwgq-9jhf-qgw6](https://github.com/pterodactyl/panel/security/advisories/GHSA-wwgq-9jhf-qgw6) - -### Changed -* Updates Minecraft eggs to include latest Java 17 yolk by default. - -## v1.6.5 -### Fixed -* Fixes broken application API endpoints due to changes introduced with session management in 1.6.4. - -## v1.6.4 -_This release should not be used, please use `1.6.5`. It has been pulled from our releases._ - -### Fixed -* Fixes a session management bug that would cause a user who signs out of one browser to be unintentionally logged out of other browser sessions when using the client API. - -## v1.6.3 -### Fixed -* **[Security]** Changes logout endpoint to be a POST request with CSRF-token validation to prevent a malicious actor from triggering a user logout. -* Fixes Wings receiving the wrong server suspension state when syncing servers. - -### Added -* Adds additional throttling to login and password reset endpoints. -* Adds server uptime display when viewing a server console. - -## v1.6.2 -### Fixed -* **[Security]** Fixes an authentication bypass vulerability that could allow a malicious actor to login as another user in the Panel without knowing that user's email or password. - -## v1.6.1 -### Fixed -* Fixes server build modifications not being properly persisted to the database when edited. -* Correctly exposes the `oom_disabled` field in the `build` limits block for a server build so that Wings can pick it up. -* -## v1.6.0 -### Fixed -* Fixes array merging logic for server transfers that would cause a 500 error to occur in some scenarios. -* Fixes user password updates not correctly logging the user out and returning a failure message even upon successful update. -* Fixes the count of used backups when browsing a paginated backup list for a server. -* Fixes an error being triggered when API endpoints are called with no `User-Agent` header and an audit log is generated for the action. -* Fixes state management on the frontend not properly resetting the loading indicator when adding subusers to a server. -* Fixes extraneous API calls being made to Wings for the server file listing when not on a file manager screen. - -### Added -* Adds foreign key relationship on the `mount_node`, `mount_server` and `egg_mount` tables. -* Adds environment variable `PER_SCHEDULE_TASK_LIMIT` to allow manual overrides for the number of tasks that can exist on a single schedule. This is currently defaulted to `10`. -* OOM killer can now be configured at the time of server creation. - -### Changed -* Server updates are not dependent on a successful call to Wings occurring — if the API call fails internally the error will be logged but the server update will still be persisted. - -### Removed -* Removed `WingsServerRepository::update()` function — if you were previously using this to modify server elements on Wings please replace calls to it with `::sync()` after updating Wings. - -## v1.5.1 -### Fixed -* Fixes Docker image 404ing instead of being able to access the Panel. -* Fixes Java version feature being only loaded when the `eula` feature is specified. -* Fixes `php artisan p:upgrade` not forcing and seeding while running migrations. -* Fixes spinner overlays overlapping on the server console page. -* Fixes Wings being unable to update backup statuses. - -## v1.5.0 -### Fixed -* Fixes deleting a locked backup that has also been marked as failed to allow deletion rather than returning an error about being locked. -* Fixes server creation process not correctly sending `start_on_completion` to Wings instance. -* Fixes `z-index` on file mass delete modal so it is displayed on top of all elements, rather than hidden under some. -* Supports re-sending requests to the Panel API for backups that are currently marked as failed, allowing a previously failed backup to be marked as successful. -* Minor updates to multiple default eggs for improved error handling and more accurate field-level validation. - -### Updated -* Updates help text for CPU limiting when creating a new server to properly indicate virtual threads are included, rather than only physical threads. -* Updates all of the default eggs shipped with the Panel to reference new [`ghcr.io` yolks repository](https://github.com/pterodactyl/yolks). -* When adding 2FA to an account the key used to generate the token is now displayed to the user allowing them to manually input into their app if necessary. - -### Added -* Adds SSL/TLS options for MySQL and Redis in line with most recent Laravel updates. -* New users created for server MySQL instances will now have the correct permissions for creating foreign keys on tables. -* Adds new automatic popup feature to allow users to quickly update their Minecraft servers to the latest Java® eggs as necessary if unsupported versions are detected. - -### Removed -* Removes legacy `userInteraction` key from eggs which was unused. - -## v1.4.2 -### Fixed -* Fixes logic to disallow creating a backup schedule if the server's backup limit is set to 0. -* Fixes bug preventing a database host from being updated if the linked node is set to "none". -* Fixes files and menus under the "Mass Actions Bar" being unclickable when it is visible. -* Fixes issues with the Teamspeak and Mumble eggs causing installs to fail. -* Fixes automated query to avoid pruning backups that are still running unintentionally. -* Fixes "Delete Server" confirmation modal on the admin screen to actually show up when deleting rather than immediately deleting the server. - -### Added -* Adds support for locking individual server backups to prevent deletion by users or automated backup processes. -* List of files to be deleted is now shown on the delete file confirmation modal. -* Adds support for using `IF` statements in database queries when a database user is created through the Panel. -* Adds support for using a custom mailgun API endpoint rather than only the US based endpoint. -* Adds CPU limit display next to the current CPU usage to match disk and memory usage reporting. -* Adds a "Scroll to Bottom" helper element to the server console when not scrolled to the bottom currently. -* Adds support for querying the API for servers by using the `uuidShort` field rather than only the `uuid` field. - -### Changed -* Updates codebase to use TypeScript 4. -* **[security]**: removes the external dependency for loading QRCode images. They're now generated directly on the frontend using JavaScript. - -## v1.4.1 -### Added -* Adds support for only running a schedule if the server is currently in an online state. -* Adds support for ignoring errors during task execution and continuing on to the next item in the sequence. For example, continuing to a server restart even if sending a command beforehand failed. -* Adds the ability to specify the group to use for file permissions when using the `p:upgrade` command. -* Adds the ability to manually run a schedule even if it is currently disabled. - -## v1.4.0 -### Fixed -* Removes the use of tagging when storing server resource usage in the cache. This addresses errors encountered when using the `file` driver. -* Fixes Wings response handling if Wings returns an error response with a 200-level status code that would improperly be passed back to the client as a successful request. -* Fixes use of JSON specific functions in SQL queries to better support MariaDB users. -* Fixes a migration that could fail on some MySQL/MariaDB setups when trying to encrypt node token values. - -### Changed -* Increases the maximum length allowed for a server name using the Rust egg. -* Updated server resource utilization API call to Wings to use new API response format used by `Wings@1.4.0`. - -## v1.3.2 -### Fixed -* Fixes self-upgrade incorrectly executing the command to un-tar downloaded archives. -* Fixes the checkbox to delete all files when restoring a backup not actually passing that along in the API call. Files will now properly be deleted when restoring if selected. -* Fixes some keybindings not working correctly in the server console on Windows machines. -* Fixes mobile UI incorrectly squishing the Docker image selector on the server settings page. -* Fixes recovery tokens not having a `created_at` value set on them properly when they are created. -* Fixes flawed migration that would not correctly set the month value into schedule crons. -* Fixes incorrect mounting for Docker compose file that would cause error logs to be missing. - -### Changed -* Server resource lookups are now cached on the Panel for 20 seconds at a time to reduce the load from multiple clients requesting the same server's stats. -* Bungeecord egg no longer force-enables the query listener. -* Adds page to the dashboard URL to allow easy loading of a specific pagination page rather than resetting back to the first page when refreshing. -* All application API endpoints now correctly support the `?per_page=N` query parameter to specify how many resources to return at once. - -## v1.3.1 -### Fixed -* Fixes the Rust egg not properly seeding during the upgrade & installation process. -* Fixes backups not being downloadable via the frontend. -* Fixes backup listing showing the wrong number of existing backups based on the current page you're on. - -## v1.3.0 -### Fixed -* Fixes administrator "Other Servers" toggle being persisted wrongly when signing out and signing into a non-administrator account on the server dashboard. -* Fixes composer failing to run properly in local environments where there is no database connection available once configured. -* Fixes SQL exception caused by the Panel attempting to store null values in the database. -* Fixes validation errors caused by improper defaults when trying to edit system settings in the admin area. -* Fixes console overflow when using smaller-than-default font sizes in Firefox. -* Fixes console text input field having a white background when manually building new assets from the release build due to a missing `babel-macros` definition file. -* Fixes database improperly using a signed `smallint` field rather than an unsigned field which restricted SFTP ports to 32767 or less. -* Fixes server console resize handler to no longer encounter an exception at random that breaks the entire UI. -* Fixes unhandled error caused by entering an invalid IP address or FQDN when creating a new node allocation. -* Fixes unhandled error when Wings would fetch a server configuration from the Panel that uses an Egg with invalid JSON data for the configuration fields. -* Fixes email not being sent to a user when their server is done installing. - -### Added -* Adds support for automatically copying SFTP connection details when clicking into the text field. -* Messaging about a node not having any allocations available for deployment has been adjusted to be more understandable by users. -* Adds automated self-upgrade process for Pterodactyl Panel once this version is installed on servers. This allows users to update by using a single command. -* Adds support for specifying a month when creating or modifying a server schedule. -* Adds support for restoring backups (including those in S3 buckets) to a server and optionally deleting all existing files when doing so. -* Adds underlying support for audit logging on servers. Currently this is only used by some internal functionality but will be slowly expanded as time permits to allow more robust logging. -* Adds logic to automatically reset failed server states when Wings is rebooted. This will kick servers out of "installing" and "restoring from backup" states automatically. - -### Changed -* Updated to `Laravel 8` and bumped minimum PHP version from `7.3` to `7.4` with PHP `8.0` being the recommended. -* Server state is now stored in a single `status` column within the database rather than multiple different `tinyint` columns. - -## v1.2.2 -### Fixed -* **[security]** Fixes authentication bypass allowing a user to take control of specific server actions such as executing schedules, rotating database passwords, and viewing or deleting a backup. - -## v1.2.1 -### Fixed -* Fixes URL-encoding of filenames when working in the filemanager to fix issues when moving, renaming, or deleting files. -* Fixes URL-encoding of email addresses when requesting a password reset. - -### Added -* Adds the ability for users to select a base Java Docker image for most Minecraft specific eggs shipped as defaults. - -## v1.2.0 -### Fixed -* Fixes newest backup being deleted when creating a new one using the schedule tasks, rather than the oldest backup. -* Fixes multiple encoding issues when handling file names in the manager. -* Fixes database password not properly being copied to the clipboard when clicked. -* Fixes failed transfers unintentionally locking a server into a failed state and not properly releasing allocations that were reserved. -* Fixes error box on server pages having an oval refresh button rather than a perfect circle. -* Fixes a bunch of errors and usage issues relating to backups especially when uploading to S3-based systems. -* Fixes HMR breaking navigation in development modes on the frontend. - -### Changed -* Updated Paper egg to default to Java 11 as the base docker image. -* Removes the file mode display from the File Manager row listing. -* Updated input UI elements to have thicker borders and more consistent highlighting when active. -* Changed searchbar toggle from `"k"` to `Cmd/Ctrl + "/"` to avoid accidental toggles and be more consistent with other sites. -* Upgrades TailwindCSS to `v2`. - -### Added -* Adds support for eggs to define multiple Docker images that can be selected by users (e.g. Java 8 & 11 images for a single egg). -* Adds support for configuring the default interval for failed backups to be pruned from the system to avoid long running backups being incorrectly cleared. -* Adds server transfer output logging to the server console allowing admins to see how a transfer is progressing directly in the UI. -* Adds client API endpoint to download a file from a remote souce. This functionality is not currently expressed in the UI. - -## v1.1.3 -### Fixed -* Server bulk power actions command will no longer attempt to run commands against installing or suspended servers. -* Fixes the application API throwing an error when attempting to return variables for a server. -* Fixes an error when attempting to install Panel dependencies without specifying an `.env` file due to an unset default timezone. -* Fixes a null value flip in the database migrations. -* Fixes password change endpoint for users allowing a blank value to be provided (even if nothing actually happened). -* Fixes database IP addresses not allowing a `0` in the first octet field. -* Fixes node information being impossible to update if there was a network error during the process. Any errors encountered communicating with Wings are now reported but will not block the actual saving of the changes. -* **[Security]** When 2FA is required on an account the client API endpoints will now properly return an error and the UI will redirect the user to setup 2FA. -* **[Security]** When changing the owner of a server the old owner's JWT is now properly invalidated on Wings. -* Fixes a server error when requesting database information for a server as a subuser and the account is not granted `view_password` permissions. - -### Added -* Adds support for basic backup rotation on a server when creating scheduled backup tasks. -* Makes URLs present in the console clickable. -* Adds `chmod` support to the file manager so that users can manually make modifications to file permissions as they need. - -### Changed -* UI will no longer show a delete button to users when they're editing themselves. -* Updated logic for bulk power actions to no longer run actions against suspended or installing servers. - -## v1.1.2 -### Fixed -* Fixes an exception thrown while trying to validate IP access for the client API. -* Fixes command history scrolling not putting the cursor at the end of the line. -* Fixes file manager rows triggering a 404 when middle-clicked to open in a new tab. - -## v1.1.1 -### Fixed -* Fixes allocation permissions checking on the frontend checking the wrong permission therefore leading to the item never showing up. -* Fixes allocations not updating correctly when added or deleted and switching between pages. - -## v1.1.0 -This release **requires** `Wings@1.1.0` in order to work properly due to breaking internal API changes. - -### Fixed -* Fixes subuser creation/edit modal not submitting correctly when attemping to make modifications. -* Fixes a few remaining issues with multiple egg install scripts. -* Removes the ability for a schedule to have a null name and replaces any existing null names with a randomly generated name. -* Fixes schedules aborting the entire run process if a single schedule encountered an exception. This resolves batches of schedules never running correctly if they occur after a broken schedule. -* Fixes schedules not properly resetting themselves if an exception was encountered during the run. -* Fixes numerous N+1 query run-aways when loading multiple servers via the API. -* Fixes numerous issues with displaying directory and file names in the file manager if they included special characters that could not be decoded properly. -* Fixes CPU pinning not being properly passed along to Wings when updated (this also fixes memory/CPU/disk not passing along correctly as well). -* Fixes spinner not displaying properly when displayed over a modal. - -### Added -* Adds ability for users to generate their own additional server allocations via the frontend if enabled. -* Adds the ability for a user to remove un-needed allocations from their server (as long as it is not the primary allocation). -* Adds support for tracking the last 32 sent console commands for a server. Access the history by using the arrow keys when the command field is active. -* Adds S3 specific environment variables allowing for backups to use any S3 compatiable system, not just AWS. -* Adds support for copying a server allocation address to the clipboard when clicked. -* Adds information about the next schedule run time when viewing an individual schedule. -* Adds link to view a server in the admin control panel to the frontend server view when logged in as a root admin. -* Adds support for egg-specific frontend/backend functionality. This is a beta feature meant for internal features at this time. -* Adds back the EULA warning popup when starting a Minecraft server without an accepted EULA. -* Adds missing descriptions for some user permissions on the frontend UI. - -### Changed -* Adds Save/Invite button to top of subuser edit/creation modal to reduce the need for scrolling. -* Updated language for server transfers and mounts to be less confusing. -* Wings API endpoint for fetching all servers on a node is now properly paginated to reduce system load when returning hundreds or thousands of servers at once. -* Removes unnecessary Wings API calls when adding/editing/deleting mounts. -* Primary allocation for a server is now always returned, even if the subuser does not have permission to view all of the server allocations. -* Google Analytics frontend code is now only loaded when a valid key is provided. - -## v1.0.3 -### Fixed -* Fixes bug causing subusers to not be creatable or editable via the frontend for servers. -* Fixes system timezone not being passed along properly to the MySQL connection causing scheduled tasks to run every minute when the MySQL instance and Panel timezone did not line up. -* Fixes listing servers owned by a user in the admin area to actually list their servers. - -### Changed -* Adds SameSite `lax` attribute for cookies generated by the Panel. -* Adds better filtering for searching servers in the admin area to better key off name, uuid, or owner username/email. - -## v1.0.2 -### Added -* Adds support for searching inside the file editor. -* Adds support for manually executing a schedule regardless of if it is currently queued or not. -* Adds an indicator to the schedule UI to show when a schedule is currently processing. -* Adds support for setting the `backup_limit` of a server via the API. -* **[Security]** Adds login throttling to the 2FA verification endpoint. - -### Fixed -* Fixes subuser page title missing server name. -* Fixes schedule task `sequence_id` not properly being reset when a schedule's task is deleted. -* Fixes misc. UI bugs throughout the frontend when long text overflows its bounds. -* Fixes user deletion command to properly handle email & ID searching. -* Fixes color issues in the terminal causing certain text & background combinations to be illegible. -* Fixes reCAPTCHA not properly resetting on login failure. -* Fixes error messages not properly resetting between login screens. -* Fixes a UI crash when attempting to create or view a directory or file that contained the `%` somewhere in the name. - -### Changed -* Updated the search modal to close itself when the ESC key is pressed. -* Updates the schedule view and editing UI to better display information to users. -* Changed logic powering server searching on the frontend to return more accurate results and return all servers when executing the query as an admin. -* Admin CP link no longer opens in a new tab. -* Mounts will no longer allow a user to mount certain directory combinations. This blocks mounting one server's files into another server, and blocks using the server data directory as a mount destination. -* Cleaned up assorted server build modification code. -* Updates default eggs to have improved install scripts and more consistent container usage. - -## v1.0.1 -### Fixed -* Fixes 500 error when mounting a mount to a server, and other related errors when handling mounts. -* Ensures that `server_transfers` database is deleted if it already exists to avoid unnecessary error. -* Fixes servers getting marked as "not installed" when modifying their startup arguments. -* Fixes filemanager breadcrumbs being set incorrectly when navigating between files and folders. - -### Changed -* Change the requests per minute from 240 to 720 for the client API to avoid unecessarily displaying -"Too Many Requests" errors. -* Added error output to certain commands that will output and terminate the command execution if the database -migrations have not been run correctly for the instance. - -## v1.0.0 -Pterodactyl 1.0 represents the culmination of over two years of work, almost 2,000 commits, endless bug and feature requests, and a dream that -has been in the making since 2013. 🎉 - -Due to the sheer size and timeline of this release I've massively truncated the listing below. There are numerous smaller -bug fixes and changes that would simply be too difficult to keep track of here. Please feel free to browse through the releases -tab for this repository to see more specific changes that have been made. - -### Added -* Adds a new client-facing API allowing a user to control all aspects of their individual servers, or servers -which they have been granted access to as a subuser. -* Adds the ability for backups to be created for a server both manually and via a scheduled task. -* Adds the ability for users to modify their server allocations on the fly and include notes for each allocation. -* Adds the ability for users to generate recovery tokens for 2FA protected logins which can be used in place of -a code should their device be inaccessible. -* Adds support for transfering servers between Nodes via the Panel. -* Adds the ability to assign specific CPU cores to a server (CPU Pinning) process. -* Server owners can now reinstall their assigned server egg automatically with a button on the frontend. - -### Changed -* The entire user frontend has been replaced with a responsive, React backed design implemented using Tailwind CSS. -* Replaces a large amount of complex daemon authentication logic by funneling most API calls through the Panel, and using -JSON Web Tokens where necessary to handle one-time direct authentication with Wings. -* Frontend server listing now includes a toggle to show or hide servers which an administrator has access to, rather -than always showing all servers on the system when logged into an admin account. -* We've replaced Ace Editor on the frontend with a better solution to allow lighter builds and more end-user functionality. -* Server permissions have been overhauled to be both easier to understand in the codebase, and allows plugins to better -hook into the permission system. - -### Removed -* Removes large swaths of code complexity and confusing interface designs that caused a lot of pain to new developers -trying to jump into the codebase. We've simplified this to stick to more established Laravel design standards to make -it easy to parse through the project and make contributions. - -## v0.7.19 (Derelict Dermodactylus) -### Fixed -* **[Security]** Fixes XSS in the admin area's server owner selection. - -## v0.7.18 (Derelict Dermodactylus) -### Fixed -* **[Security]** Re-addressed missed endpoint that would not properly limit a user account to 5 API keys. -* **[Security]** Addresses a Client API vulnerability that would allow a user to list all servers on the system ([`GHSA-6888-7f3w-92jx`](https://github.com/pterodactyl/panel/security/advisories/GHSA-6888-7f3w-92jx)) - -## v0.7.17 (Derelict Dermodactylus) -### Fixed -* Limited accounts to 5 API keys at a time. -* Fixes database passwords not being generated with the proper requirements for some MySQL setups. -* Hostnames that are not FQDNs/IP addresses can now be used for connecting to a MySQL host. - -## v0.7.16 (Derelict Dermodactylus) -### Fixed -* Fixed the /api/application/servers endpoint erroring when including subusers or egg -* Fixed bug in migration files causing failures when using MySQL 8. -* Fixed missing redirect return when an error occurs while modifying database information. -* Fixes bug in login attempt tracking. -* Fixes a bug where certain URL encoded files would not be editable in the file manager. - -### Added -* The application API now includes the egg's name in the egg model's response. -* The /api/application/servers endpoint can now include server's databases and subusers. - -## v0.7.15 (Derelict Dermodactylus) -### Fixed -* Fixes support for PHP 7.3 when running `composer install` commands due to a dependency that needed updating. -* Automatic allocation field when creating a new node (or updating one) should now properly remeber its old -value when showing an error state. -* Mass deleting files now executes properly and doesn't result in a JS console error. -* Scrolling on email settings page now works. -* Database host management will now properly display an error message to the user when there is any type of MySQL related -error encountered during creation or update. -* Two-factor tokens generated when a company name has a space in it will now properly be parsed on iOS authenticator devices. -* Fixed 500 error when trying to request subuser's from a server in the application API. -* Creating a node allocation via the API no longer requires an alias field be passed through in the request. -* Bulk power management for servers via the CLI no longer fails when servers span multiple nodes. - -### Added -* Server listing view now displays the total used disk space for each server. -* Client API endpoint to list all servers now supports an additional `?filter=subuser-of|all|admin|owner` parameter to -return different groupings of servers. The default value is `subuser-of` which will include all of the user's servers -that they are the owner of, as well as all servers they're a subuser of. -* Added back ability to toggle OOM killer status on a per-server basis. -* Added `LOCK TABLES` permission for generated database users. - -### Changed -* Updated Paper egg to not download `server.properties` each time. [parkervcp/eggs#260](https://github.com/parkervcp/eggs/issues/260) -* Insurgency egg now uses the proper dedicated server ID. -* Teamspeak egg updated with improved installation process and grabbing latest versions. -* OOM killer disabled by default on all new servers. -* Passwords generated for MySQL now include special characters and are 24 characters in length. - -## v0.7.14 (Derelict Dermodactylus) -### Fixed -* **[SECURITY]** Fixes an XSS vulnerability when performing certain actions in the file manager. -* **[SECURITY]** Attempting to login as a user who has 2FA enabled will no longer request the 2FA token before validating -that their password is correct. This closes a user existence leak that would expose that an account exists if -it had 2FA enabled. - -### Changed -* Support for setting a node to listen on ports lower than 1024. -* QR code URLs are now generated without the use of an external library to reduce the dependency tree. -* Regenerated database passwords now respect the same settings that were used when initially created. -* Cleaned up 2FA QR code generation to use a more up-to-date library and API. -* Console charts now properly start at 0 and scale based on server configuration. No more crazy spikes that -are due to a change of one unit. - -## v0.7.13 (Derelict Dermodactylus) -### Fixed -* Fixes a bug with the location update API endpoint throwing an error due to an unexected response value. -* Fixes bug where node creation API endpoint was not correctly requiring the `disk_overallocate` key. -* Prevents an exception from being thrown when a database with the same name is created on two different hosts. -* Fixes the redis password not saving correctly when setting up the environment from the command line. -* Fixes a bug with transaction handling in many areas of the application that would cause validation error messages -and other session data to not be persisted properly when using the database as the session driver. -* Fix a bug introduced at some point in the past that causes internal data integrity exceptions to not bubble up to -the user correctly, leading to extraneous and confusing exception messages. -* Fixes a bug causing servers to not be marked as having failed installation in some cases. - -### Changed -* `allocation_limit` for servers now defaults to a null value, and is not required in PATCH/POST requests when adding -a server through the API. -* The `PATCH` endpoint for `/api/applications/servers/{server}/build` now accepts an array called `limits` to match -the response from the server `GET` endpoint. - -### Added -* The server listing for a node is now paginated to 25 servers per page to improve performance on large nodes. - -## v0.7.12 (Derelict Dermodactylus) -### Fixed -* Fixes an issue with the locations API endpoint referencing an invalid namespace. -* Fixes the `store()` function on the locations API not working due to an incorrect return typehint. -* Fixes daemon secrets not being able to be reset on a Node. -* Fixes an issue where files were not editable due to missing URL encoding in the file manager. -* Fixed checking of language changes -* Fixed Spigot egg not building versions other than `latest`. -* Fixed the Forge egg install script. -* Fixes a bug that would ignore the `skip_scripts` setting when creating or editing a server. - -### Updated -* Upgraded core to use Laravel `5.7.14`. -* Updated Simplified Chinese translation pack. - -### Added -* Added support for opening and editing Python files through the web editor. -* Adds Russian translation. - -## 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. -* Changing the maximum web-based file upload size for a node now properly validates and updates. -* Changing configuration values for a node now correctly updates them on the daemon on the first request, rather than requiring a second request to set them. - -### Changed -* Egg and server variable values are no longer limited to 191 characters. Turns out some games require a large number of characters in these fields. - -### Added -* Users can now select their preferred language in their account settings. - -## v0.7.9 (Derelict Dermodactylus) -### Fixed -* Fixes a two-factor authentication bypass present in the password reset process for an account. - -## v0.7.8 (Derelict Dermodactylus) -### Added -* Nodes can now be put into maintenance mode to deny access to servers temporarily. -* Basic statistics about your panel are now available in the Admin CP. -* Added support for using a MySQL socket location for connections rather than a TCP connection. Set a `DB_SOCKET` variable in your `.env` file to use this. - -### Fixed -* Hitting Ctrl+Z when editing a file on the web now works as expected. -* Logo now links to the correct location on all pages. -* Permissions checking to determine if a user can see the task management page now works correctly. -* Fixed `pterodactyl.environment_variables` to be used correctly for global environment variables. The wrong config variable name was being using previously. -* Fixes tokens being sent to users when their account is created to actually work. Implements Laravel's internal token creation mechanisms rather than trying to do it custom. -* Updates some eggs to ensure they have the correct data and will continue working down the road. Fixes autoupdating on some source servers and MC related download links. -* Emails should send properly now when a server is marked as installed to let the owner know it is ready for action. -* Cancelling a file manager operation should cancel correctly across all browsers now. - -### Changed -* Attempting to upload a folder via the web file manager will now display a warning telling the user to use SFTP. -* Changing your account password will now log out all other sessions that currently exist for that user. -* Subusers with no permissions selected can be created. - -## v0.7.7 (Derelict Dermodactylus) -### Fixed -* Fixes an issue with the sidebar logo not working correctly in some browsers due to the CSS being assigned. -* Fixes a bunch of typos through the code base. -* Fixes a bug when attempting to load the dropdown menu for server owner in some cases. -* Fixes an exception thrown when the database connection address was not filled out correctly while adding a database to a server. -* Fixes some mistakes in the German translation of the panel. - -### Added -* Added a new client API endpoint for gathering the utilization stats for servers including disk, cpu, and memory. `GET /api/client/servers//utilization` -* Added validation to variable validation rules to validate that the validation rules are valid because we heard you like validating your validation. -* Added German translations for many previously untranslated parts of the panel. - -### Changed -* Updated core framework from Laravel 5.5 to Laravel 5.6. -* Improved support for Windows based environments. -* Spigot Egg now builds spigot for you rather than requiring a download location be specified. - -## v0.7.6 (Derelict Dermodactylus) -### Fixed -* Fixes a UI error when attempting to change the default Nest and Egg for an existing server. -* Correct permissions check in UI to allow subusers with permission to `view-allocations` the ability to actually see the sidebar link. -* Fixes improper behavior when marking an egg as copying the configuration from another. -* Debug bar is only checked when the app is set to debug mode in the API session handler, rather than when it is in local mode to match the plugin settings. -* Added validation to port allocations to prevent allocation of restricted or invalid ports. -* Fix data integrity exception thrown when attempting to store updated server egg variables. -* Added missing permissions check on 'SFTP Configuration' page to ensure user has permission to access a server's SFTP server before showing a user credentials. - -### Added -* Added ability for end users to change the name of their server through the UI. This option is only open to the server owner or an admin. -* Added giant warning message if you attempt to change an encryption key once one has been set. - -### Changed -* Panel now throws proper 504: Gateway Timeout errors on server listing when daemon is offline. -* Sessions handled through redis now use a separate database (default `1`) to store session database to avoid logging users out when flushing the cache. -* File manager UI improved to be clearer with buttons and cleaner on mobile. -* reCAPTCHA's secret key position swapped with website key in advanced panel settings to be consistent with Google's reCAPTCHA dashboard. -* Changed DisplayException to handle its own logging correctly and check if the previous exception is marked as one that should not be logged. -* Changed 'New Folder' modal in file manager to include a trailing slash. - -## v0.7.5 (Derelict Dermodactylus) -### Fixed -* Fixes application API keys being created as a client API key. -* Search term is now passed through when using paginated result sets. -* Reduces the number of SQL queries executed when rendering the server listing to increase performance. -* Fixes exceptions being thrown for non-existent subuser permissions. -* Fixes exception caused when trying to revoke admin privileges from a user account due to a bad endpoint. - -### Changed -* Databases are now properly paginated when viewing a database host. -* No more loading daemon keys for every server model being loaded, some of us value our databases. -* Changed behavior of the subuser middleware to add a daemon access key if one is missing from the database for some reason. -* Server short-codes are now based on the UUID as they were in previous versions of Pterodactyl. - -## v0.7.4-h1 (Derelict Dermodactylus) -### Fixed -* Being able to create servers is kind of a core aspect of the software, pushing releases late at night is not a great idea. - -## v0.7.4 (Derelict Dermodactylus) -### Fixed -* Fixes a bug when reinstalling a server that would not mark the server as installing, resulting in some UI issues. -* Handle 404 errors from missing models in the application API bindings correctly. -* Fix validation error returned when no environment variables are passed, even if there are no variables required. -* Fix improper permissions on `PATCH /api/servers//startup` endpoint which was preventing editing any start variables. -* Should fix migration issues from 0.6 when there are more than API key in the database. - -### Changed -* Changes order that validation of resource existence occurs in API requests to not try and use a non-existent model when validating data. - -### Added -* Adds back client API for sending commands or power toggles to a server though the Panel API: `/api/client/servers/` -* Added proper transformer for Packs and re-enabled missing includes on server. -* Added support for using Filesystem as a caching driver, although not recommended. -* Added support for user management of server databases. -* **Added bulk power management CLI interface to send start, stop, kill, restart actions to servers across configurable nodes.** - -## v0.7.3 (Derelict Dermodactylus) -### Fixed -* Fixes server creation API endpoint not passing the provided `external_id` to the creation service. -* Fixes a bug causing users to be un-editable on new installations once more than one user exists. -* Fixes default order of buttons in certain parts of the panel that would default to 'Delete' rather than 'Save' when pressing enter. - -### Added -* Adds ability to modify the external ID for a server through the API. - -## v0.7.2 (Derelict Dermodactylus) -### Fixed -* Fixes an exception thrown when trying to access the `/nests/:id/eggs/:id` API endpoint. -* Fixes search on server listing page. -* Schedules with no names are now clickable to allow editing. -* Fixes broken permissions check that would deny access to API keys that did in fact have permission. - -### Added -* Adds ability to include egg variables on an API request. -* Added `external_id` column to servers that allows for easier linking with external services such as WHMCS. -* Added back the sidebar when viewing servers that allows for quick-switching to a different server. -* Added API endpoint to get a server by external ID. - -## v0.7.1 (Derelict Dermodactylus) -### Fixed -* Fixes an exception when no token is entered on the 2-Factor enable/disable page and the form is submitted. -* Fixes an exception when trying to perform actions against a User model due to a validator that could not be cast to a string correctly. -* Allow FQDNs in database host creation UI correctly. -* Fixes database naming scheme using `d###_` rather than `s###_` when creating server databases. -* Fix exception thrown when attempting to update an existing database host. - -### Changed -* Adjusted exception handler behavior to log more stack information for PDO exceptions while not exposing credentials. - -### Added -* Very basic cache busting until asset management can be changed to make use of better systems. - -## v0.7.0 (Derelict Dermodactylus) -### Fixed -* `[rc.2]` — Fixes bad API behavior on `/user` routes. -* `[rc.2]` — Fixes Admin CP user editing resetting a password on users unintentionally. -* `[rc.2]` — Fixes bug with server creation API endpoint that would fail to validate `allocation.default` correctly. -* `[rc.2]` — Fix data integrity exception occurring due to invalid data being passed to server creation service on the API. -* `[rc.2]` — Fix data integrity exception that could occur when an email containing non-username characters was passed. -* `[rc.2]` — Fix data integrity exception occurring when no default value is provided for an egg variable. -* `[rc.2]` — Fixes a bug that would cause non-editable variables on the front-end to throw a validation error. -* `[rc.2]` — Fixes a data integrity exception occurring when saving egg variables with no value. -* Fixes a design bug in the database that prevented the storage of negative numbers, thus preventing a server from being assigned unlimited swap. -* Fixes a bug where the 'Assign New Allocations' box would only show IPs that were present in the current pagination block. -* Unable to change the daemon secret for a server via the Admin CP. -* Using default value in rules when creating a new variable if the rules is empty. -* Fixes a design-flaw in the allocation management part of nodes that would run a MySQL query for each port being allocated. This behavior is now changed to only execute one query to add multiple ports at once. -* Attempting to create a server when no nodes are configured now redirects to the node creation page. -* Fixes missing library issue for teamspeak when used with mariadb. -* Fixes inability to change the default port on front-end when viewing a server. -* Fixes bug preventing deletion of nests that have other nests referencing them as children. -* Fixes console sometimes not loading properly on slow connections - -### Added -* Added ability to search the following API endpoints: list users, list servers, and list locations. -* Add support for finding a user by external ID using `/api/application/users/external/` or by passing it as the search term when listing all users. -* Added a unique key to the servers table to data integrity issues where an allocation would be assigned to more than one server at once. -* Added support for editing an existing schedule. -* Added support for editing symlinked files on the Panel. -* Added new application specific API to Panel with endpoints at `/api/application`. Includes new Admin CP interface for managing keys and an easier permissions system. -* Nest and Egg listings now show the associated ID in order to make API requests easier. -* Added star indicators to user listing in Admin CP to indicate users who are set as a root admin. -* Creating a new node will now requires a SSL connection if the Panel is configured to use SSL as well. -* Socketio error messages due to permissions are now rendered correctly in the UI rather than causing a silent failure. -* File manager now supports mass deletion option for files and folders. -* Support for CS:GO as a default service option selection. -* Support for GMOD as a default service option selection. -* Added test suite for core aspects of the project (Services, Repositories, Commands, etc.) to lessen the chances for bugs to escape into releases. -* New CLI command to disabled 2-Factor Authentication on an account if necessary. -* Ability to delete users and locations via the CLI. -* You can now require 2FA for all users, admins only, or at will using a simple configuration in the Admin CP. -* **Added ability to export and import service options and their associated settings and environment variables via the Admin CP.** -* Default allocation for a server can be changed on the front-end by users. This includes two new subuser permissions as well. -* Significant improvements to environment variable control for servers. Now ships with built-in abilities to define extra variables in the Panel's configuration file, or in-code for those heavily modifying the Panel. -* Quick link to server edit view in ACP on frontend when viewing servers. -* Databases created in the Panel now include `EXECUTE` privilege. - -### Changed -* PHP 7.2 is now the minimum required version for this software. -* Egg variable default values are no longer validated against the ruleset when configuring them. Validation of those rules will only occur when editing or creating a server. -* Changed logger to skip reporting stack-traces on PDO exceptions due to sensitive information being contained within. -* Changed behavior of allocation IP Address/Ports box to automatically store the value entered if a user unfocuses the field without hitting space. -* Changed order in which allocations are displayed to prioritize those with servers attached (in ascending IP & port order) followed by ascending IP & port order where no server is attached. -* Revoking the administrative status for an admin will revoke all authentication tokens currently assigned to their account. -* Updated core framework to Laravel 5.5. This includes many dependency updates. -* Certain AWS specific environment keys were changed, this should have minimal impact on users unless you specifically enabled AWS specific features. The renames are: `AWS_KEY -> AWS_ACCESS_KEY_ID`, `AWS_SECRET -> AWS_SECRET_ACCESS_KEY`, `AWS_REGION -> AWS_DEFAULT_REGION` -* API keys have been changed to only use a single public key passed in a bearer token. All existing keys can continue being used, however only the first 32 characters should be sent. -* Moved Docker image setting to be on the startup management page for a server rather than the details page. This value changes based on the Nest and Egg that are selected. -* Two-Factor authentication tokens are now 32 bytes in length, and are stored encrypted at rest in the database. -* Login page UI has been improved to be more sleek and welcoming to users. -* Changed 2FA login process to be more secure. Previously authentication checking happened on the 2FA post page, now it happens prior and is passed along to the 2FA page to avoid storing any credentials. -* **Services renamed to Nests. Service Options renamed to Eggs.** 🥚 -* Theme colors and login pages updated to give a more unique feel to the project. -* Massive overhaul to the backend code that allows for much easier updating of core functionality as well as support for better testing. This overhaul also reduces complex code logic, and allows for faster response times in the application. -* CLI commands updated to be easier to type, now stored in the `p:` namespace. -* Logout icon is now more universal and not just a power icon. -* Administrative logout notice now uses SWAL rather than a generic javascript popup. -* Server creation page now only asks for a node to deploy to, rather than requiring a location and then a node. -* Database passwords are now hidden by default and will only show if clicked on. In addition, database view in ACP now indicates that passwords must be viewed on the front-end. -* Localhost cannot be used as a connection address in the environment configuration script. `127.0.0.1` is allowed. -* Application locale can now be quickly set using an environment variable `APP_LOCALE` rather than having to edit core files. - -### Removed -* OOM exceptions can no longer be disabled on servers due to a startling number of users that were using it to avoid allocating proper amounts of resources to servers. -* SFTP settings page now only displays connection address and username. Password setting was removed as it is no longer necessary with Daemon changes. - -## v0.7.0-rc.2 (Derelict Dermodactylus) -### Fixed -* `[rc.1]` — Fixes exception thrown when revoking user sessions. -* `[rc.1]` — Fixes exception that would occur when trying to delete allocations from a node. -* `[rc.1]` — Fixes exception thrown when attempting to adjust mail settings as well as a validation error thrown afterwards. -* `[rc.1]` — Fixes bug preventing modification of the default value for an Egg variable. -* `[rc.1]` — Fixed a bug that would occur when attempting to reset the daemon secret for a node. -* `[rc.1]` — Fix exception thrown when attempting to modify an existing database host. -* `[rc.1]` — Fix an auto deployment bug causing a node to be ignored if it had no servers already attached to it. - -### Changed -* Changed logger to skip reporting stack-traces on PDO exceptions due to sensitive information being contained within. - -### Added -* Added support for editing an existing schedule. - -## v0.7.0-rc.1 (Derelict Dermodactylus) -### Fixed -* `[beta.4]` — Fixes some bad search and replace action that happened previously and was throwing errors when validating user permissions. -* `[beta.4]` — Fixes behavior of variable validation to not break the page when no rules are provided. -* `[beta.4]` — Fix bug preventing the editing of files in the file manager. - -### Added -* Added support for editing symlinked files on the Panel. -* Added new application specific API to Panel with endpoints at `/api/application`. Includes new Admin CP interface for managing keys and an easier permissions system. - -## v0.7.0-beta.4 (Derelict Dermodactylus) -### Fixed -* `[beta.3]` — Fixes a bug with the default environment file that was causing an inability to perform a fresh install when running package discovery. -* `[beta.3]` — Fixes an edge case caused by the Laravel 5.5 upgrade that would try to perform an in_array check against a null value. -* `[beta.3]` — Fixes a bug that would cause an error when attempting to create a new user on the Panel. -* `[beta.3]` — Fixes error handling of the settings service provider when no migrations have been run. -* `[beta.3]` — Fixes validation error when trying to use 'None' as the 'Copy Script From' option for an egg script. -* Fixes a design bug in the database that prevented the storage of negative numbers, thus preventing a server from being assigned unlimited swap. -* Fixes a bug where the 'Assign New Allocations' box would only show IPs that were present in the current pagination block. - -### Added -* Nest and Egg listings now show the associated ID in order to make API requests easier. - -### Changed -* Changed behavior of allocation IP Address/Ports box to automatically store the value entered if a user unfocuses the field without hitting space. -* Changed order in which allocations are displayed to prioritize those with servers attached (in ascending IP & port order) followed by ascending IP & port order where no server is attached. - -### Removed -* OOM exceptions can no longer be disabled on servers due to a startling number of users that were using it to avoid allocating proper amounts of resources to servers. - -## v0.7.0-beta.3 (Derelict Dermodactylus) -### Fixed -* `[beta.2]` — Fixes a bug that would cause an endless exception message stream in the console when attempting to setup environment settings in certain instances. -* `[beta.2]` — Fixes a bug causing the dropdown menu for a server's egg to display the wrong selected value. -* `[beta.2]` — Fixes a bug that would throw a red page of death when submitting an invalid egg variable value for a server in the Admin CP. -* `[beta.2]` — Someone found a `@todo` that I never `@todid` and thus database hosts could not be created without being linked to a node. This is fixed... -* `[beta.2]` — Fixes bug that caused incorrect rendering of CPU usage on server graphs due to missing variable. -* `[beta.2]` — Fixes bug causing schedules to be un-deletable. -* `[beta.2]` — Fixes bug that prevented the deletion of nodes due to an allocation deletion cascade issue with the SQL schema. -* `[beta.2]` — Fixes a bug causing eggs not extending other eggs to fail validation. - -### Changed -* Revoking the administrative status for an admin will revoke all authentication tokens currently assigned to their account. -* Updated core framework to Laravel 5.5. This includes many dependency updates. -* Certain AWS specific environment keys were changed, this should have minimal impact on users unless you specifically enabled AWS specific features. The renames are: `AWS_KEY -> AWS_ACCESS_KEY_ID`, `AWS_SECRET -> AWS_SECRET_ACCESS_KEY`, `AWS_REGION -> AWS_DEFAULT_REGION` -* API keys have been changed to only use a single public key passed in a bearer token. All existing keys can continue being used, however only the first 32 characters should be sent. - -### Added -* Added star indicators to user listing in Admin CP to indicate users who are set as a root admin. -* Creating a new node will now requires a SSL connection if the Panel is configured to use SSL as well. - -## v0.7.0-beta.2 (Derelict Dermodactylus) -### Fixed -* `[beta.1]` — Fixes a CORS header issue due to a wrong API endpoint being provided in the administrative node listing. -* `[beta.1]` — Fixes bug that would prevent root admins from accessing servers they were not set as the owner of. -* `[beta.1]` — Fixes wrong URL redirect being provided when creating a subuser. -* `[beta.1]` — Fixes missing check in environment setup that would leave the Hashids salt empty. -* `[beta.1]` — Fixes bug preventing loading of allocations when trying to create a new server. -* `[beta.1]` — Fixes bug causing inability to create new servers on the Panel. -* `[beta.1]` — Fixes bug causing inability to delete an allocation due to misconfigured JS. -* `[beta.1]` — Fixes bug causing inability to set the IP alias for an allocation to an empty value. -* `[beta.1]` — Fixes bug that caused startup changes to not propagate to the server correctly on the first save. -* `[beta.1]` — Fixes bug that prevented subusers from accessing anything over socketio due to a missing permission. - -### Changed -* Moved Docker image setting to be on the startup management page for a server rather than the details page. This value changes based on the Nest and Egg that are selected. -* Two-Factor authentication tokens are now 32 bytes in length, and are stored encrypted at rest in the database. -* Login page UI has been improved to be more sleek and welcoming to users. -* Changed 2FA login process to be more secure. Previously authentication checking happened on the 2FA post page, now it happens prior and is passed along to the 2FA page to avoid storing any credentials. - -### Added -* Socketio error messages due to permissions are now rendered correctly in the UI rather than causing a silent failure. - -## v0.7.0-beta.1 (Derelict Dermodactylus) -### Added -* File manager now supports mass deletion option for files and folders. -* Support for CS:GO as a default service option selection. -* Support for GMOD as a default service option selection. -* Added test suite for core aspects of the project (Services, Repositories, Commands, etc.) to lessen the chances for bugs to escape into releases. -* New CLI command to disabled 2-Factor Authentication on an account if necessary. -* Ability to delete users and locations via the CLI. -* You can now require 2FA for all users, admins only, or at will using a simple configuration in the Admin CP. -* **Added ability to export and import service options and their associated settings and environment variables via the Admin CP.** -* Default allocation for a server can be changed on the front-end by users. This includes two new subuser permissions as well. -* Significant improvements to environment variable control for servers. Now ships with built-in abilities to define extra variables in the Panel's configuration file, or in-code for those heavily modifying the Panel. -* Quick link to server edit view in ACP on frontend when viewing servers. -* Databases created in the Panel now include `EXECUTE` privilege. - -### Changed -* **Services renamed to Nests. Service Options renamed to Eggs.** 🥚 -* Theme colors and login pages updated to give a more unique feel to the project. -* Massive overhaul to the backend code that allows for much easier updating of core functionality as well as support for better testing. This overhaul also reduces complex code logic, and allows for faster response times in the application. -* CLI commands updated to be easier to type, now stored in the `p:` namespace. -* Logout icon is now more universal and not just a power icon. -* Administrative logout notice now uses SWAL rather than a generic javascript popup. -* Server creation page now only asks for a node to deploy to, rather than requiring a location and then a node. -* Database passwords are now hidden by default and will only show if clicked on. In addition, database view in ACP now indicates that passwords must be viewed on the front-end. -* Localhost cannot be used as a connection address in the environment configuration script. `127.0.0.1` is allowed. -* Application locale can now be quickly set using an environment variable `APP_LOCALE` rather than having to edit core files. - -### Fixed -* Unable to change the daemon secret for a server via the Admin CP. -* Using default value in rules when creating a new variable if the rules is empty. -* Fixes a design-flaw in the allocation management part of nodes that would run a MySQL query for each port being allocated. This behavior is now changed to only execute one query to add multiple ports at once. -* Attempting to create a server when no nodes are configured now redirects to the node creation page. -* Fixes missing library issue for teamspeak when used with mariadb. -* Fixes inability to change the default port on front-end when viewing a server. -* Fixes bug preventing deletion of nests that have other nests referencing them as children. -* Fixes console sometimes not loading properly on slow connections - -### Removed -* SFTP settings page now only displays connection address and username. Password setting was removed as it is no longer necessary with Daemon changes. - -## v0.6.4 (Courageous Carniadactylus) -### Fixed -* Fixed the console rendering on page load, I guess people don't like watching it load line-by-line for 10 minutes. Who would have guessed... -* Re-added support for up/down arrows loading previous commands in the console window. - -### Changed -* Panel API for Daemon now responds with a `HTTP/401 Unauthorized` error when unable to locate a node with a given authentication token, rather than a `HTTP/404 Not Found` response. -* Added better colors and styling for the terminal that can be adjusted per-theme. -* Session timeout adjusted to be 7 days by default. - -## v0.6.3 (Courageous Carniadactylus) -### Fixed -* **[Security]** — Addresses an oversight in how the terminal rendered information sent from the server feed which allowed a malicious user to execute arbitrary commands on the game-server process itself by using a specifically crafted in-game command. - -### Changed -* Removed `jquery.terminal` and replaced it with an in-house developed terminal with less potential for security issues. - -## v0.6.2 (Courageous Carniadactylus) -### Fixed -* Fixes a few typos throughout the panel, there are more don't worry. -* Fixes bug when disabling 2FA due to a misnamed route. -* API now returns a 404 error when deleting a user that doesn't exist, rather than saying it was successful. -* Service variables that allow empty input now allow you to empty out the assigned value and set it back to blank. -* Fixes a bug where changing the default allocation for a server would not actually apply that allocation as the default on the daemon. -* Newly created service variables are now backfilled and assigned to existing servers properly. - -### Added -* Added a `Vagrantfile` to the repository to help speed up development and testing for those who don't want to do a full dedicated install. -* Added a confirmation dialog to the logout button for admins to prevent misguided clickers from accidentally logging out when they wanted to switch to Admin or Server views. - -### Changed -* Blocked out the `Reinstall` button for servers that have failed installation to avoid confusion and bugs causing the daemon to break. -* Updated dependencies, listed below. -``` -aws/aws-sdk-php (3.26.5 => 3.29.7) -laravel/framework (v5.4.21 => v5.4.27) -barryvdh/laravel-debugbar (v2.3.2 => v2.4.0) -fideloper/proxy (3.3.0 => 3.3.3) -igaster/laravel-theme (v1.14 => v1.16) -laravel/tinker (v1.0.0 => v1.0.1) -spatie/laravel-fractal (4.0.0 => 4.0.1) -``` - -## v0.6.1 (Courageous Carniadactylus) -### Fixed -* Fixes a bug preventing the use of services that have no variables attached to them. -* Fixes 'Remember Me' checkbox being ignored when using 2FA on an account. -* API now returns a useful error displaying what went wrong rather than an obscure 'An Error was Encountered' message when API issues arise. -* Fixes bug preventing the creation of new files in the file manager due to a missing JS dependency on page load. -* Prevent using a service option tag that contains special characters that are not valid. Now only allows alpha-numeric, no spaces or underscores. -* Fix unhandled exception due to missing `Log` class when using the API and causing an error. - -### Changed -* Renamed session cookies from `laravel_session` to `pterodactyl_session`. -* Sessions are now encrypted before being stored as an additional layer of security. -* It is now possible to clear out a server description and have it be blank, rather than throwing an error about the field being required. - -## v0.6.0 (Courageous Carniadactylus) -### Fixed -* Bug causing error logs to be spammed if someone timed out on an ajax based page. -* Fixes edge case where specific server names could cause daemon errors due to an invalid SFTP username being created by the panel. -* Fixes sessions being removed on browser close, and set sessions to idle for up to 3 hours before being marked as expired. -* Emails sending with 'Pterodactyl Panel' as the from name. Now configurable by using `php artisan pterodactyl:mail` to update. -* Fixes potential bug with invalid CIDR notation (ex: `192.168.1.1/z`) when adding allocations that could cause over 4 million records to be created at once. -* Fixes bug where daemon was unable to register that certain games had fully booted and were ready to play on. -* Fixes bug causing MySQL user accounts to be corrupted when resetting a password via the panel. -* Fixes remote timing attack vulnerability due to hmac comparison in API middleware. -* `[rc.1]` — Server deletion is fixed, caused by removed download table. -* `[rc.1]` — Server status indication on front-end no longer shows `Error` when server is marked as installing or suspended. -* `[rc.1]` — Fixes issues with SteamCMD not registering and installing games properly. - -### Changed -* Admin API and base routes for user management now define the fields that should be passed to repositories rather than passing all fields. -* User model now defines mass assignment fields using `$fillable` rather than `$guarded`. -* 2FA checkpoint on login is now its own page, and not an AJAX based call. Improves security on that front. -* Updated Server model code to be more efficient, as well as make life easier for backend changes and work. -* Reduced the number of database queries being executed when viewing a specific server. This is done by caching the query for up to 15 minutes in memcached. -* User creation emails include more information and are sent by the event listener rather than the repository. -* Account password reset emails now auto-fill the email when clicking the link. -* New theme applied to Admin CP. Many graphical changes were made, some data was moved around and some display data changed. Too much was changed to feasibly log it all in here. Major breaking changes or notable new features will be logged. -* New server creation page now makes significantly less AJAX calls and is much quicker to respond. -* Server and Node view pages wee modified to split tabs into individual pages to make re-themeing and modifications significantly easier, and reduce MySQL query loads on page. -* Most of the backend `UnhandledException` display errors now include a clearer error that directs admins to the program's logs. -* Table seeders for services now can be run during upgrades and will attempt to locate and update, or create new if not found in the database. -* Many structural changes to the database and `Pterodactyl\Models` classes that would flood this changelog if they were all included. All required migrations included to handle database changes. -* Clarified details for database hosts to prevent users entering invalid account details, as well as renamed tables and columns relating to it to keep things clearer. -* Updated all code to be Laravel compliant when using `env()` and moved to using `config()` throughout non `config/*.php` files. -* Subuser permissions are now stored in `Permission::listPermissions()` to make views way cleaner and make adding to views significantly cleaner. -* Attempting to reset a password for an account that does not exist no longer returns an error, rather it displays a success message. Failed resets trigger a `Pterodactyl\Events\Auth\FailedPasswordReset` event that can be caught if needed to perform other actions. -* Servers are no longer queued for deletion due to the general hassle and extra logic required. -* Updated all panel components to run on Laravel v5.4 rather than 5.3 which is EOL. -* Routes are now handled in the `routes/` folder, and use a significantly cleaner syntax. Controller names and methods have been updated as well to be clearer as well as avoid conflicts with PHP reserved keywords. -* API has been completely overhauled to use new permissions system. **Any old API keys will immediately become invalid and fail to operate properly anymore. You will need to generate new keys.** -* Cleaned up dynamic database connection setting to use a single function call from the host model. -* Deleting a server safely now continues even if the daemon reports a `HTTP/404` missing server error (requires `Daemon@0.4.0-beta.2.1`) -* Changed behavior when modifying server allocation information. You can now remove the default allocation assuming you are passing a new allocation at the same time. Reduces the number of steps to change the default allocation for a server. -* Environment setting commands now attempt to auto-quote strings with spaces in them, as well as comment lines that are edited to avoid manual changes being overwritten. -* Version in footer of panel now displays correctly if panel is installed using Git rather than a download from source. -* Mobile views are now more... viewable. Fixes `col-xs-6` usage throughout the Admin CP where it was intended to be `col-md-6`. -* Node Configuration tokens and Download tokens are stored using the cache helpers rather than a database to speed up functions and make use of auto-expiration/deletion functions. -* Old daemon routes using `/remote` have been changed to use `/daemon`, panel changes now reflect this. -* Only display servers that a user is owner of or subuser of in the Admin CP rather than all servers if the user is marked as an admin. -* Panel now sends all non-default allocations as `ALLOC_#__IP` and `ALLOC_#__PORT` to the daemon, as well as the location. - -### Added -* Remote routes for daemon to contact in order to allow Daemon to retrieve updated service configuration files on boot. Centralizes services to the panel rather than to each daemon. -* Basic service pack implementation to allow assignment of modpacks or software to a server to pre-install applications and allow users to update. -* Users can now have a username as well as client name assigned to their account. -* Ability to create a node through the CLI using `pterodactyl:node` as well as locations via `pterodactyl:location`. -* New theme (AdminLTE) for front-end with tweaks to backend files to work properly with it. -* Add support for PhraseApp's in-context editor -* Notifications when a user is added or removed as a subuser for a server. -* New cache policy for ServerPolicy to avoid making 15+ queries per page load when confirming if a user has permission to perform an action. -* Ability to assign multiple allocations at once when creating a new server. -* New `humanReadable` macro on `File` facade that accepts a file path and returns a human readable size. (`File::humanReadable(path, precision)`) -* Added ability to edit database host details after creation on the system. -* Login attempts and password reset requests are now protected by invisible ReCaptcha. This feature can be disabled with a `.env` variable. -* Server listing for individual users is now searchable on the front-end. -* Servers that a user is associated with as a subuser are now displayed in addition to owned servers when listing users in the Admin CP. -* Ability to launch the console in a new window as an individual unit. https://s3.kelp.in/IrTyE.png -* Server listing and view in Admin CP now shows the SFTP username/Docker container name. -* Administrative server view includes link in navigation to go to server console/frontend management. -* Added new scripts for service options that allows installation of software in a privileged Docker container on the node prior to marking a server as installed. -* Added ability to reinstall a server using the currently assigned service and option. -* Added ability to change a server's service and service option, as well as change pack assignments and other management services in that regard. -* Added support for using a proxy such as Cloudflare with a node connection. Previously there was no way to tell the panel to connect over SSL without marking the Daemon as also using SSL. - -### Removed -* Removed all old theme JS and CSS folders to cleanup and avoid confusion in the future. -* Old API calls to `Server::create` will fail due to changed data structure. -* Many old routes were modified to reflect new standards in panel, and many of the controller functions being called were also modified. This shouldn't really impact anyone unless you have been digging into the code and modifying things. -* `Server::getUserDaemonSecret(Server $server)` was removed and replaced with `User::daemonSecret(Server $server)` in order to clean up models. -* `Server::getByUUID()` was replaced with `Server::byUuid()` as well as various other functions through-out the Server model. -* `Server::getHeaders()` was removed and replaced with `Server::getClient()` which returns a Guzzle Client with the correct headers already assigned. - -## v0.6.0-rc.1 -### Fixed -* `[beta.2.1]` — Fixed a bug preventing the deletion of a server. -* It is now possible to modify a server's disk limits after the server is created. -* `[beta.2.1]` — Fixes a bug causing login issues and password reset failures when reCAPTCHA is enabled. -* Fixes remote timing attack vulnerability due to hmac comparison in API middleware. -* `[beta.2.1]` — Fixes bug requiring docker image field to be filled out when adding a service option. -* `[beta.2.1]` — Fixes inability to mark a user as a non-admin once they were assigned the role. - -### Added -* Added new scripts for service options that allows installation of software in a privileged Docker container on the node prior to marking a server as installed. -* Added ability to reinstall a server using the currently assigned service and option. -* Added ability to change a server's service and service option, as well as change pack assignments and other management services in that regard. -* Added support for using a proxy such as Cloudflare with a node connection. Previously there was no way to tell the panel to connect over SSL without marking the Daemon as also using SSL. - -### Changed -* Environment setting commands now attempt to auto-quote strings with spaces in them, as well as comment lines that are edited to avoid manual changes being overwritten. -* Version in footer of panel now displays correctly if panel is installed using Git rather than a download from source. -* Mobile views are now more... viewable. Fixes `col-xs-6` usage throughout the Admin CP where it was intended to be `col-md-6`. -* Node Configuration tokens and Download tokens are stored using the cache helpers rather than a database to speed up functions and make use of auto-expiration/deletion functions. -* Old daemon routes using `/remote` have been changed to use `/daemon`, panel changes now reflect this. -* Only display servers that a user is owner of or subuser of in the Admin CP rather than all servers if the user is marked as an admin. - -## v0.6.0-beta.2.1 -### Fixed -* `[beta.2]` — Suspended servers now show as suspended. -* `[beta.2]` — Corrected the information when a task has not run yet. -* `[beta.2]` — Fixes filemanager 404 when editing a file within a directory. -* `[beta.2]` — Fixes exception in tasks when deleting a server. -* `[beta.2]` — Fixes bug with Terarria and Voice servers reporting a `TypeError: Service is not a constructor` in the daemon due to a missing service configuration. -* `[beta.2]` — Fixes password reset form throwing a MethodNotAllowed error when accessed. -* `[beta.2]` — Fixes invalid password bug when attempting to change account email address. -* `[beta.2]` — New attempt at fixing the issues when rendering files in the browser file editor on certain browsers. -* `[beta.2]` — Fixes broken auto-deploy time checking causing no tokens to work. -* `[beta.2]` — Fixes display of subusers after creation. -* `[beta.2]` — Fixes bug throwing model not found exception when editing an existing subuser. - -### Changed -* Deleting a server safely now continues even if the daemon reports a `HTTP/404` missing server error (requires `Daemon@0.4.0-beta.2.1`) -* Changed behavior when modifying server allocation information. You can now remove the default allocation assuming you are passing a new allocation at the same time. Reduces the number of steps to change the default allocation for a server. - -### Added -* Server listing and view in Admin CP now shows the SFTP username/Docker container name. -* Administrative server view includes link in navigation to go to server console/frontend management. - -## v0.6.0-beta.2 -### Fixed -* `[beta.1]` — Fixes task management system not running correctly. -* `[beta.1]` — Fixes API endpoint for command sending missing the required class definition. -* `[beta.1]` — Fixes panel looking for an old compiled classfile that is no longer used. This was causing errors relating to `missing class DingoAPI` when trying to upgrade the panel. -* `[beta.1]` — Should fix render issues when trying to edit some files via the panel file editor. - -### Added -* Ability to launch the console in a new window as an individual unit. https://s3.kelp.in/IrTyE.png - -## v0.6.0-beta.1 -### Fixed -* `[pre.7]` — Fixes bug with subuser checkbox display. -* `[pre.7]` — Fixes bug with injected JS that was causing `` to be ignored in templates. -* `[pre.7]` — Fixes exception thrown when trying to delete a node due to a misnamed model. -* `[pre.7]` — Fixes username vanishing on failed login attempts. -* `[pre.7]` — Terminal is now fixed to actually output all lines, rather than leaving one hanging in neverland until the browser is resized. - -### Added -* Login attempts and password reset requests are now protected by invisible ReCaptcha. This feature can be disabled with a `.env` variable. -* Server listing for individual users is now searchable on the front-end. -* Servers that a user is associated with as a subuser are now displayed in addition to owned servers when listing users in the Admin CP. - -### Changed -* Subuser permissions are now stored in `Permission::listPermissions()` to make views way cleaner and make adding to views significantly cleaner. -* `[pre.7]` — Sidebar for file manager now is a single link rather than a dropdown. -* Attempting to reset a password for an account that does not exist no longer returns an error, rather it displays a success message. Failed resets trigger a `Pterodactyl\Events\Auth\FailedPasswordReset` event that can be caught if needed to perform other actions. -* Servers are no longer queued for deletion due to the general hassle and extra logic required. -* Updated all panel components to run on Laravel v5.4 rather than 5.3 which is EOL. -* Routes are now handled in the `routes/` folder, and use a significantly cleaner syntax. Controller names and methods have been updated as well to be clearer as well as avoid conflicts with PHP reserved keywords. -* API has been completely overhauled to use new permissions system. **Any old API keys will immediately become invalid and fail to operate properly anymore. You will need to generate new keys.** -* Cleaned up dynamic database connection setting to use a single function call from the host model. -* `[pre.7]` — Corrected a config option for spigot servers to set a boolean value as boolean, and not as a string. - -## v0.6.0-pre.7 -### Fixed -* `[pre.6]` — Addresses misconfigured console queue that was still sending data way to quickly thus causing the console to explode on some devices when large amounts of data were sent. -* `[pre.6]` — Fixes bug in allocation parsing for a node that prevented adding new allocations. -* `[pre.6]` — Fixes typo in migrations that wouldn't save custom regex for non-required variables. -* `[pre.6]` — Fixes auto-deploy checkbox on server creation causing validation error. - -## v0.6.0-pre.6 -### Fixed -* `[pre.5]` — Console based server rebuild tool now actually rebuilds the servers with the correct information. -* `[pre.5]` — Fixes typo and wrong docker container for certain applications. - -### Changed -* Removed all old theme JS and CSS folders to cleanup and avoid confusion in the future. - -### Added -* `[pre.5]` — Added foreign key to `pack_id` to ensure nothing eds up breaking there. - -## v0.6.0-pre.5 -### Changed -* New theme applied to Admin CP. Many graphical changes were made, some data was moved around and some display data changed. Too much was changed to feasibly log it all in here. Major breaking changes or notable new features will be logged. -* New server creation page now makes significantly less AJAX calls and is much quicker to respond. -* Server and Node view pages wee modified to split tabs into individual pages to make re-themeing and modifications significantly easier, and reduce MySQL query loads on page. -* `[pre.4]` — Service and Pack management overhauled to be faster, cleaner, and more extensible in the future. -* Most of the backend `UnhandledException` display errors now include a clearer error that directs admins to the program's logs. -* Table seeders for services now can be run during upgrades and will attempt to locate and update, or create new if not found in the database. -* Many structural changes to the database and `Pterodactyl\Models` classes that would flood this changelog if they were all included. All required migrations included to handle database changes. -* `[pre.4]` — Service pack files are now stored in the database rather than on the host system to make updates easier. -* Clarified details for database hosts to prevent users entering invalid account details, as well as renamed tables and columns relating to it to keep things clearer. -* Updated all code to be Laravel compliant when using `env()` and moved to using `config()` throughout non `config/*.php` files. - -### Fixed -* Fixes potential bug with invalid CIDR notation (ex: `192.168.1.1/z`) when adding allocations that could cause over 4 million records to be created at once. -* `[pre.4]` — Fixes bug preventing server updates from occurring by the system due to undefined `Auth::user()` in the event listener. -* `[pre.4]` — Fixes `Server::byUuid()` caching to actually clear the cache for *all* users, rather than the logged in user by using cache tags. -* `[pre.4]` — Fixes server listing on frontend not displaying a page selector when more than 10 servers exist. -* `[pre.4]` — Fixes non-admin users being unable to create personal API keys. -* Fixes bug where daemon was unable to register that certain games had fully booted and were ready to play on. -* Fixes bug causing MySQL user accounts to be corrupted when resetting a password via the panel. -* `[pre.4]` — Multiple clients refreshing the console no longer clears the console for all parties involved... sorry about that. -* `[pre.4]` — Fixes bug in environment setting script that would not remember defaults and try to re-assign values. - -### Added -* Ability to assign multiple allocations at once when creating a new server. -* New `humanReadable` macro on `File` facade that accepts a file path and returns a human readable size. (`File::humanReadable(path, precision)`) -* Added ability to edit database host details after creation on the system. - -### Deprecated -* Old API calls to `Server::create` will fail due to changed data structure. -* Many old routes were modified to reflect new standards in panel, and many of the controller functions being called were also modified. This shouldn't really impact anyone unless you have been digging into the code and modifying things. - -## v0.6.0-pre.4 -### Fixed -* `[pre.3]` — Fixes bug in cache handler that doesn't cache against the user making the request. Would have allowed for users to access servers not belonging to themselves in production. -* `[pre.3]` — Fixes misnamed MySQL column that was causing the inability to delete certain port ranges from the database. -* `[pre.3]` — Fixes bug preventing rebuilding server containers through the Admin CP. - -### Added -* New cache policy for ServerPolicy to avoid making 15+ queries per page load when confirming if a user has permission to perform an action. - -## v0.6.0-pre.3 -### Fixed -* `[pre.2]` — Fixes bug where servers could not be manually deployed to nodes due to a broken SQL call. -* `[pre.2]` — Fixes inability to edit a server due to owner_id issues. -* `[pre.2]` — Fixes bug when trying to add new subusers. -* Emails sending with 'Pterodactyl Panel' as the from name. Now configurable by using `php artisan pterodactyl:mail` to update. -* `[pre.2]` — Fixes inability to delete accounts due to SQL changes. -* `[pre.2]` — Fixes bug with checking power-permissions that showed the wrong buttons. Also adds check back to sidebar to only show options a user can use. -* `[pre.2]` — Fixes allocation listing on node allocations tab as well as bug preventing deletion of port. -* `[pre.2]` — Fixes bug in services that prevented saving updated settings or creating new services. - -### Changed -* `[pre.2]` — File Manager now displays relevant information on all screen sizes, and includes better button clicking mechanics for dropdown menu. -* Reduced the number of database queries being executed when viewing a specific server. This is done by caching the query for up to 60 minutes in memcached. -* User creation emails include more information and are sent by the event listener rather than the repository. -* Account password reset emails now auto-fill the email when clicking the link. - -### Added -* Notifications when a user is added or removed as a subuser for a server. - -## v0.6.0-pre.2 -### Fixed -* `[pre.1]` — Fixes bug with database seeders that prevented correctly installing the panel. - -### Changed -* `[pre.1]` — Moved around navigation bar on fronted to make it more obvious where logout and admin buttons were, as well as use the right icon for server listing. - -## v0.6.0-pre.1 -### Added -* Remote routes for daemon to contact in order to allow Daemon to retrieve updated service configuration files on boot. Centralizes services to the panel rather than to each daemon. -* Basic service pack implementation to allow assignment of modpacks or software to a server to pre-install applications and allow users to update. -* Users can now have a username as well as client name assigned to their account. -* Ability to create a node through the CLI using `pterodactyl:node` as well as locations via `pterodactyl:location`. -* New theme (AdminLTE) for front-end with tweaks to backend files to work properly with it. -* Add support for PhraseApp's in-context editor - -### Fixed -* Bug causing error logs to be spammed if someone timed out on an ajax based page. -* Fixes edge case where specific server names could cause daemon errors due to an invalid SFTP username being created by the panel. -* Fixes sessions being removed on browser close, and set sessions to idle for up to 3 hours before being marked as expired. - -### Changed -* Admin API and base routes for user management now define the fields that should be passed to repositories rather than passing all fields. -* User model now defines mass assignment fields using `$fillable` rather than `$guarded`. -* 2FA checkpoint on login is now its own page, and not an AJAX based call. Improves security on that front. -* Updated Server model code to be more efficient, as well as make life easier for backend changes and work. - -### Deprecated -* `Server::getUserDaemonSecret(Server $server)` was removed and replaced with `User::daemonSecret(Server $server)` in order to clean up models. -* `Server::getByUUID()` was replaced with `Server::byUuid()` as well as various other functions through-out the Server model. -* `Server::getHeaders()` was removed and replaced with `Server::getClient()` which returns a Guzzle Client with the correct headers already assigned. - -## v0.5.6 (Bodacious Boreopterus) -### Added -* Added the following languages: Estonian `et`, Dutch `nl`, Norwegian `nb` (partial), Romanian `ro`, and Russian `ru`. Interested in helping us translate the panel into more languages, or improving existing translations? Contact us on Discord and let us know. -* Added missing `strings.password` to language file for English. -* Allow listing of users from the API by passing either the user ID or their email. - -### Fixed -* Fixes bug where assigning a variable a default value (or valid value) of `0` would cause the panel to reject the value thinking it did not exist. -* Addresses potential for crash by limiting total ports that can be assigned per-range to 2000. -* Fixes server names requiring at minimum 4 characters. Name can now be 1 to 200 characters long. :pencil2: -* Fixes bug that would allow adding the owner of a server as a subuser for that same server. -* Fixes bug that would allow creating multiple subusers with the same email address. -* Fixes bug where Sponge servers were improperly tagged as a spigot server in the daemon causing issues when booting or modifying configuration files. -* Use transpiled ES6 -> ES5 filemanager code in browsers. -* Fixes service option name displaying the name of a newly added variable after the variable is added and until the page is refreshed. (see #208) - -### Changed -* Filemanager and EULA checking javascript is now written in pure ES6 code rather than as a blade-syntax template. This allows the use of babel to transpile into ES5 as a minified version. - -## v0.5.5 (Bodacious Boreopterus) -### Added -* New API route to return allocations given a server ID. This adds support for a community-driven WHMCS module :rocket: available [here](https://github.com/hammerdawn/Pterodactyl-WHMCS). - -### Fixed -* Fixes subuser display when trying to edit an existing subuser. - -## v0.5.4 (Bodacious Boreopterus) -### Added -* Changing node configuration values now automatically makes a call to the daemon and updates the configuration there. Changing daemon tokens now does not require any intervention, and takes effect immediately. SSL & Port configurations will still require a daemon reboot. -* New button in file manager that triggers the right click menu to enable support on mobile devices and those who cannot right click (blessed be them). -* Support for filtering users when listing all users on the system. -* Container ID and User ID on the daemon are now shown when viewing a server in the panel. - -### Changed -* File uploads now account for a maximum file size that is assigned for the daemon, and gives cleaner errors when that limit is reached. -* File upload limit can now be controlled from the panel. -* Updates regex and default values for some Minecraft services to reflect current technology. - -### Fixed -* Fixes potential for generated password to not meet own validation requirements. -* Fixes some regex checking issues with newer versions of Minecraft. - -## v0.5.3 (Bodacious Boreopterus) -### Fixed -* Fixed an error that occurred when viewing a node listing when no nodes were created yet due to a mis-declared variable. Also fixes a bug that would have all nodes trying to connect to the daemon using the same secret token on the node listing, causing only the last node to display properly. -* Fixes a bug that displayed the panel version rather than the daemon version when viewing a node. -* Fixes a multiplicator being applied to an overallocation field rather than a storage space field when adding a node. - -### Changed -* Added a few new configuration variables for nodes to the default config, as well as a variable that will be used in future versions of the daemon. - -## v0.5.2 (Bodacious Boreopterus) -### Fixed -* Time axis on server graphs is corrected to show the minutes rather than the current month. -* Node deletion now works correctly and deletes allocations as well. -* Fixes a bug that would leave orphaned databases on the system if there was an error during creation. -* Fixes an issue that could occur if a UUID contained `#e#` formatting within it when it comes to creating databases. -* Fixed node status display to account for updated daemon security changes. -* Fixes default language being selected as German (defaults to English now). -* Fixes bug preventing the deletion of database servers. - -### Changed -* Using `node:` when filtering servers now properly filters the servers by node name, rather than looking for the node ID. -* Using `owner:` when filtering servers now properly filters by the owner's email rather than ID. -* Added some quick help buttons to the admin index page for getting support or checking the documentation. -* Panel now displays `Pterodactyl Panel` as the company name if one is not set. - -### Added -* Added basic information about the daemon when viewing a node, including the host OS and version, CPU count, and the daemon version. -* Added version checking for the daemon and panel that alerts admins when daemons or the panel is out of date. -* Added multiplicator support to certain memory and disk fields that allow users to enter `10g` and have it converted to MB automatically. - -## v0.5.1 (Bodacious Boreopterus) -### Fixed -* Fixes a bug that allowed a user to bypass 2FA authentication if using the correct username and password for an account. - -## v0.5.0 (Bodacious Boreopterus) -After nearly a month in the works, version `v0.5.0` is finally here! 🎉 - -### Added -* Foreign keys are now enabled on all tables that the panel makes use of to prevent accidental data deletion when associated with other tables. -* Javascript changes to prevent crashing browsers when large quantities of data are sent over the websocket to the console. Includes a small popover message on the console to alert users that it is being throttled. -* Support for 'ARK: Survival Evolved' servers through the panel. -* Support for filtering servers within Admin CP to narrow down results by name, email, allocation, or defined fields. -* Setup scripts (user, mail, env) now support argument flags for use in containers and other non-terminal environments. -* New API endpoints for individual users to control their servers with at `/api/me/*`. -* Typeahead support for owner email when adding a new server. -* Scheduled command to clear out task log every month (configurable timespan). -* Support for allocating a FQDN as an allocation (panel will convert to IP and assign the FQDN as the alias automatically). -* Refresh files button in file manager to reload file listing without full page refresh. -* Added support for file copying through the file manager. [#127](https://github.com/Pterodactyl/Panel/issues/127) -* Creating new files and folders directly from the right-click dropdown menu in the file manager. -* Support for setting custom `user_id` when using the API to create users. -* Support for creating a new server through the API by passing a user ID rather than an email. -* Passing `?daemon=true` flag to [`/api/servers/:id`](https://pterodactyl.readme.io/v0.5.0/reference#single-server) will return the daemon stats as well as the `daemon_token` if using HTTPS. -* Small check for current node status that shows up to the left of the name when viewing a listing of all nodes. -* Support for creating server without having to assign a node and allocation manually. Simply select the checkbox or pass `auto_deploy=true` to the API to auto-select a node and allocation given a location. -* Support for setting IP Aliases through the panel on the node overview page. Also cleaned up allocation removal. -* Support for renaming files through the panel's file manager. - -### Changed -* Servers are now queued for deletion to allow for cancellation of deletion, as well as run in the background to speed up page loading. -* Switched to new graphing library to make graphs less... broken. -* Rebuild triggers are only sent to the node if there is actually something changed that requires a rebuild. -* Dependencies are now hard-coded into the `composer.json` file to prevent users installing slightly different versions with different features or bugs. -* Server related tasks now use the lowest priority queue to prevent clogging the pipes when there are more important tasks to be run by the panel. -* Dates displayed in the file manager are now more user friendly. -* Creating a user, server, or node now returns `HTTP/1.1 200` and a JSON element with the user/server/node's ID. -* Environment setting script is much more user friendly and does not require an excessive amount of clicking and typing. -* File upload method switched from BinaryJS to Socket.io implementation to fix bugs as well as be a little speedier and allow upload throttling. -* `Server::getbyUUID()` now accepts either the `uuidShort` or full-length `uuid` for server identification. -* API keys are tied to individual users and no longer created through the Admin CP. -* **ALL** API routes previously returning paginated result sets, or result sets nested inside a descriptive block (e.g. `servers:`) have been changed to return a single array of all associated items. Please see the [updated documentation](https://pterodactyl.readme.io/v0.5.0/reference) for how this change might effect your API use. -* API route for [`/api/users/:id`](https://pterodactyl.readme.io/v0.5.0/reference#single-user) now includes an array of all servers the user is set as the owner of. -* Prevent clicking server start button until server is completely off, not just stopping. -* Upon successful creation of a node it will redirect to the allocation tab and display a clearer message to add allocations. -* Trying to add a new node if no location exists redirects user to location management page and alerts them to add a location first. -* `Server\AjaxController@postSetConnection` is now `Server\AjaxController@postSetPrimary` and accepts one post parameter of `allocation` rather than a combined `ip:port` value. -* Port allocations on server view are now cleaner and should make more sense. -* Improved File Manager - * Rewritten Javascript to load, rename, and handle other file actions. - * Uses Ace Editor for editing files rather than a non-formatted textarea - * File actions that were previously icons to the right are now contained in a menu that appears when right-clicking a file or folder. - -### Fixed -* Fixes bug where resetting a user password through the login form would not hold passwords to the same requirements as the rest of the panel (mixed case and at least one numeric character). -* Fixes bug where no error would be displayed when adding a new server with an invalid owner email. -* Fixes a bug that could allow an admin to delete the default allocation for a server causing all sorts of issues. -* Databases assigned to a server are now actually deleted when a server is removed. -* Server overview listing the location short-code as the name of the node. -* Server task manager only sending commands every 5 minutes at the quickest. -* Fixes additional port allocation from removing the wrong row when clicking 'x'. -* Updated Socket.io client file to version `1.5.0` to match the latest release. Correlates with setting hard dependencies in the Daemon. -* Team Fortress named 'Insurgency' in panel in database seeder. ([#96](https://github.com/Pterodactyl/Panel/issues/96), PR by [@MeltedLux](https://github.com/MeltedLux)) -* Server allocation listing display now showing the connection IP unless an alias was assigned. -* Fixed bug where node allocation would appear to be successful but actual encounter an error. Made it cleared how to enter ports. -* Fixes display where an extra space was added to the end of SFTP passwords when they were copied from the panel. [#116](https://github.com/Pterodactyl/Panel/issues/116), thanks [@OrangeJuiced](https://github.com/OrangeJuiced) -* Fixes a bug that prevented viewing database servers if not assigned to a node. -* Checkboxes previously not displayed checkmarks are now fixed. - -### Fixed (bugs from v0.5.0-rc.2) -* Fixes a bug causing password resets to fail for server databases. -* Fixes a bug during installation that would prevent the 'Ark: Survival Evolved' service option from being added to the panel unless it was an update. -* Fixes constant scrolling to bottom of console; console now only scrolls to the bottom on new data. - -### Removed -* Removed active session management table displaying the last location of a session. -* Removed online player listing due to inconsistency in query library and an assortment of query related bugs. This will return in future versions when we get it working correctly. - -## v0.5.0-rc.2 (Bodacious Boreopterus) - -### Fixed -* Fixes a bug that would cause MySQL errors when attempting to install the panel rather than upgrading. - -## v0.5.0-rc.1 (Bodacious Boreopterus) - -### Added -* Foreign keys are now enabled on all tables that the panel makes use of to prevent accidental data deletion when associated with other tables. -* Javascript changes to prevent crashing browsers when large quantities of data are sent over the websocket to the console. Includes a small popover message on the console to alert users that it is being throttled. -* Support for 'ARK: Survival Evolved' servers through the panel. - -### Fixed -* Fixes bug where resetting a user password through the login form would not hold passwords to the same requirements as the rest of the panel (mixed case and at least one numeric character). -* Fixes misnamed environment variable for Bungeecord Servers (`BUNGE_VERSION` -> `BUNGEE_VERSION`). -* Fixes bug where no error would be displayed when adding a new server with an invalid owner email. -* Fixes a bug that could allow an admin to delete the default allocation for a server causing all sorts of issues. -* Databases assigned to a server are now actually deleted when a server is removed. -* Fixes file uploads being improperly throttled. - -### Changed -* Servers are now queued for deletion to allow for cancellation of deletion, as well as run in the background to speed up page loading. -* Switched to new graphing library to make graphs less... broken. -* Rebuild triggers are only sent to the node if there is actually something changed that requires a rebuild. -* Dependencies are now hard-coded into the `composer.json` file to prevent users installing slightly different versions with different features or bugs. -* Server related tasks now use the lowest priority queue to prevent clogging the pipes when there are more important tasks to be run by the panel. -* Decompressing files now shows a pop-over box that does not dismiss until it is complete. -* Dates displayed in the file manager are now more user friendly. - -### Removed -* Removed online player listing due to inconsistency in query library and an assortment of query related bugs. This will return in future versions when we get it working correctly. - -## v0.5.0-pre.3 (Bodacious Boreopterus) - -### Added -* Return node configuration from remote API by using `/api/nodes/{id}/config` endpoint. Only accepts SSL connections. -* Support for filtering servers within Admin CP to narrow down results by name, email, allocation, or defined fields. -* Setup scripts (user, mail, env) now support argument flags for use in containers and other non-terminal environments. -* New API endpoints for individual users to control their servers with at `/api/me/*`. -* Typeahead support for owner email when adding a new server. -* Scheduled command to clear out task log every month (configurable timespan). -* Support for allocating a FQDN as an allocation (panel will convert to IP and assign the FQDN as the alias automatically). -* Refresh files button in file manager to reload file listing without full page refresh. - -### Changed -* Creating a user, server, or node now returns `HTTP/1.1 200` and a JSON element with the user/server/node's ID. -* Environment setting script is much more user friendly and does not require an excessive amount of clicking and typing. -* File upload method switched from BinaryJS to Socket.io implementation to fix bugs as well as be a little speedier and allow upload throttling. -* `Server::getbyUUID()` now accepts either the `uuidShort` or full-length `uuid` for server identification. -* API keys are tied to individual users and no longer created through the Admin CP. - -### Fixed -* Server overview listing the location short-code as the name of the node. -* Server task manager only sending commands every 5 minutes at the quickest. -* Fixes additional port allocation from removing the wrong row when clicking 'x'. - -## v0.5.0-pre.2 (Bodacious Boreopterus) - -### Added -* Added support for file copying through the file manager. [#127](https://github.com/Pterodactyl/Panel/issues/127) -* Creating new files and folders directly from the right-click dropdown menu in the file manager. -* Support for setting custom `user_id` when using the API to create users. -* Support for creating a new server through the API by passing a user ID rather than an email. -* Passing `?daemon=true` flag to [`/api/servers/:id`](https://pterodactyl.readme.io/v0.5.0/reference#single-server) will return the daemon stats as well as the `daemon_token` if using HTTPS. -* Small check for current node status that shows up to the left of the name when viewing a listing of all nodes. - -### Changed -* Support for sub-folders within the `getJavascript()` route for servers. -* **ALL** API routes previously returning paginated result sets, or result sets nested inside a descriptive block (e.g. `servers:`) have been changed to return a single array of all associated items. Please see the [updated documentation](https://pterodactyl.readme.io/v0.5.0/reference) for how this change might effect your API use. -* API route for [`/api/users/:id`](https://pterodactyl.readme.io/v0.5.0/reference#single-user) now includes an array of all servers the user is set as the owner of. - -### Fixed -* File manager would do multiple up-down-up-down loading actions if you escaped renaming a file. Fixed the binding issue. [#122](https://github.com/Pterodactyl/Panel/issues/122) -* File manager actions would not trigger properly if text in a row was used to right-click from. -* File manager rename field would not disappear when pressing the escape key in chrome. [#121](https://github.com/Pterodactyl/Panel/issues/121) -* Fixes bug where server image assigned was not being saved to the database. -* Fixes instances where selecting auto-deploy would not hide the node selection dropdown. -* Fixes bug in auto-deployment that would throw a `ModelNotFoundException` if the location passed was not valid. Not normally an issue in the panel, but caused display issues for the API. -* Updated Socket.io client file to version `1.5.0` to match the latest release. Correlates with setting hard dependencies in the Daemon. - -## v0.5.0-pre.1 (Bodacious Boreopterus) - -### Added -* Support for creating server without having to assign a node and allocation manually. Simply select the checkbox or pass `auto_deploy=true` to the API to auto-select a node and allocation given a location. -* Support for setting IP Aliases through the panel on the node overview page. Also cleaned up allocation removal. -* Support for renaming files through the panel's file manager. - -### Changed -* Prevent clicking server start button until server is completely off, not just stopping. -* Upon successful creation of a node it will redirect to the allocation tab and display a clearer message to add allocations. -* Trying to add a new node if no location exists redirects user to location management page and alerts them to add a location first. -* `Server\AjaxController@postSetConnection` is now `Server\AjaxController@postSetPrimary` and accepts one post parameter of `allocation` rather than a combined `ip:port` value. -* Port allocations on server view are now cleaner and should make more sense. -* Improved File Manager - * Rewritten Javascript to load, rename, and handle other file actions. - * Uses Ace Editor for editing files rather than a non-formatted textarea - * File actions that were previously icons to the right are now contained in a menu that appears when right-clicking a file or folder. - -### Fixed -* Team Fortress named 'Insurgency' in panel in database seeder. ([#96](https://github.com/Pterodactyl/Panel/issues/96), PR by [@MeltedLux](https://github.com/MeltedLux)) -* Server allocation listing display now showing the connection IP unless an alias was assigned. -* Fixed bug where node allocation would appear to be successful but actual encounter an error. Made it cleared how to enter ports. -* Fixes display where an extra space was added to the end of SFTP passwords when they were copied from the panel. [#116](https://github.com/Pterodactyl/Panel/issues/116), thanks [@OrangeJuiced](https://github.com/OrangeJuiced) - -### Removed -* Removed active session management table displaying the last location of a session. - -## v0.4.1 (Articulate Aerotitan) - -### Changed -* Overallocate fields are now auto-filled with a value of `0` - -### Fixed -* Wrong error highlighting of overallocate fields on Node creation ([#90](https://github.com/Pterodactyl/Panel/issues/90), thanks [@schrej](https://github.com/schrej)) -* Server link in navbar directed to 404 link (PR by [@Randomfish132](https://github.com/Randomfish132)) -* Composer fails to finish ([#92](https://github.com/Pterodactyl/Panel/issues/92), PR by [@schrej](https://github.com/schrej), thanks [@parkervcp](https://github.com/parkervcp)) - -## v0.4.0 (Arty Aerodactylus) - -### Added -* Task scheduler supporting customized CRON syntax or dropdown selected options. (currently only support command and power options) -* Adds support for changing per-server database passwords from the panel. -* Allows for use of IP rather than a FQDN if the node is not using SSL -* Adds support for IP Aliases on display pages for users. This makes it possible to use GRE tunnels and still show the user what IP they should be connecting to. -* Adds support for suspending servers -* Adds support for viewing SFTP password within the panel ([#74](https://github.com/Pterodactyl/Panel/issues/74), thanks [@ET-Bent](https://github.com/ET-Bent)) -* Improved API with support for server suspension and build modification. -* Improved service management and setup on first install. -* New terminal that supports ANSI color codes as well as cleaner output. You can also simply type `start` or `boot` to start your server rather than having to use the start button. - -### Fixed -* Fixes password auto-generation on 'Manage Server' page. ([#67](https://github.com/Pterodactyl/Panel/issues/67), thanks [@ET-Bent](https://github.com/ET-Bent)) -* Fixes some overly verbose user output when an error occurs -* Prevent calling daemon until database call has been confirmed when changing default connection. -* Fixes a few display issues relating to subusers and database management. -* Fixes the server name in the header not linking to the server correctly. ([#79](https://github.com/Pterodactyl/Panel/issues/79), thanks [@xX1bumblebee1Xx](https://github.com/xX1bumblebee1Xx)) -* Fixes bug where non-admins could not see command box on servers. ([#83](https://github.com/Pterodactyl/Panel/issues/83), thanks [@xX1bumblebee1Xx](https://github.com/xX1bumblebee1Xx)) -* Fixes bug where files could not be uploaded through the "click and select" system, only through "drag and drop." ([#82](https://github.com/Pterodactyl/Panel/issues/83), thanks [@xX1bumblebee1Xx](https://github.com/xX1bumblebee1Xx)) -* Fixes a bug where new files could not be created through the panel for a server. ([#85](https://github.com/Pterodactyl/Panel/issues/85), thanks [@xX1bumblebee1Xx](https://github.com/xX1bumblebee1Xx)) -* Fixes the exception handler to properly display and log exceptions that might occur rather than leaving a vague error. ([#81](https://github.com/Pterodactyl/Panel/issues/83)) - -### Changed -* Update Laravel to version `5.3` and update dependencies. - -### Deprecated -* Requires Pterodactyl Daemon `v0.2.*` - -### Security -* Fixes listing of server variables for server. Previously a bug made it possible to view settings for all servers, even if the user didn't own that server. ([#69](https://github.com/Pterodactyl/Panel/issues/69)) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index d00264999..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at support@pterodactyl.io. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index eb24ef6bf..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing - -Pterodactyl does not accept Pull Requests (PRs) _for new functionality_ from users that are not currently part of the -core project team. It has become overwhelming to try and give the proper time and attention that such complicated PRs -tend to require — and deserve. As a result, it is in the project's best interest to limit the scope of work on -new functionality to work done within the core project team. - -PRs that address existing _bugs_ with a corresponding issue opened in our issue tracker will continue to be accepted -and reviewed. Their scope is often significantly more targeted, and simply improving upon existing and well defined -logic. - -### Responsible Disclosure - -This is a fairly in-depth project and makes use of a lot of parts. We strive to keep everything as secure as possible -and welcome you to take a look at the code provided in this project yourself. We do ask that you be considerate of -others who are using the software and not publicly disclose security issues without contacting us first by email. - -We'll make a deal with you: if you contact us by email, and we fail to respond to you within a week you are welcome to -publicly disclose whatever issue you have found. We understand how frustrating it is when you find something big and -no one will respond to you. This holds us to a standard of providing prompt attention to any issues that arise and -keeping this community safe. - -If you've found what you believe is a security issue please email `matthew@pterodactyl.io`. Please check -[SECURITY.md](/SECURITY.md) for additional details. - -### Contact Us - -You can find us in a couple places online. First and foremost, we're active right here on GitHub. If you encounter a -bug or other problems, open an issue on here for us to take a look at it. We also accept feature requests here as well. - -You can also find us on [Discord](https://discord.gg/pterodactyl). diff --git a/Dockerfile b/Dockerfile index aae05a526..95d0fefe2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # Stage 0: # Build the assets that are needed for the frontend. This build stage is then discarded # since we won't need NodeJS anymore in the future. This Docker image ships a final production -# level distribution of Pterodactyl. +# level distribution FROM --platform=$TARGETOS/$TARGETARCH mhart/alpine-node:14 WORKDIR /app COPY . ./ diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index cb0e2a9d9..000000000 --- a/LICENSE.md +++ /dev/null @@ -1,24 +0,0 @@ -# The MIT License (MIT) - -``` -Pterodactyl® -Copyright © Dane Everitt and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` diff --git a/README.md b/README.md deleted file mode 100644 index 1b3a71e2e..000000000 --- a/README.md +++ /dev/null @@ -1,70 +0,0 @@ -[![Logo Image](https://cdn.pterodactyl.io/logos/new/pterodactyl_logo.png)](https://pterodactyl.io) - -![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/pterodactyl/panel/ci.yaml?label=Tests&style=for-the-badge&branch=1.0-develop) -![Discord](https://img.shields.io/discord/122900397965705216?label=Discord&logo=Discord&logoColor=white&style=for-the-badge) -![GitHub Releases](https://img.shields.io/github/downloads/pterodactyl/panel/latest/total?style=for-the-badge) -![GitHub contributors](https://img.shields.io/github/contributors/pterodactyl/panel?style=for-the-badge) - -# Pterodactyl Panel - -Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go. Designed with security -in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive -UI to end users. - -Stop settling for less. Make game servers a first class citizen on your platform. - -![Image](https://cdn.pterodactyl.io/site-assets/pterodactyl_v1_demo.gif) - -## Documentation - -* [Panel Documentation](https://pterodactyl.io/panel/1.0/getting_started.html) -* [Wings Documentation](https://pterodactyl.io/wings/1.0/installing.html) -* [Community Guides](https://pterodactyl.io/community/about.html) -* Or, get additional help [via Discord](https://discord.gg/pterodactyl) - -## Sponsors - -I would like to extend my sincere thanks to the following sponsors for helping fund Pterodactyl's development. -[Interested in becoming a sponsor?](https://github.com/sponsors/matthewpi) - -| Company | About | -|-----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [**Aussie Server Hosts**](https://aussieserverhosts.com/) | No frills Australian Owned and operated High Performance Server hosting for some of the most demanding games serving Australia and New Zealand. | -| [**BisectHosting**](https://www.bisecthosting.com/) | BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012. | -| [**MineStrator**](https://minestrator.com/) | Looking for the most highend French hosting company for your minecraft server? More than 24,000 members on our discord trust us. Give us a try! | -| [**VibeGAMES**](https://vibegames.net/) | VibeGAMES is a game server provider that specializes in DDOS protection for the games we offer. We have multiple locations in the US, Brazil, France, Germany, Singapore, Australia and South Africa. | - -### Supported Games - -Pterodactyl supports a wide variety of games by utilizing Docker containers to isolate each instance. This gives -you the power to run game servers without bloating machines with a host of additional dependencies. - -Some of our core supported games include: - -* Minecraft — including Paper, Sponge, Bungeecord, Waterfall, and more -* Rust -* Terraria -* Teamspeak -* Mumble -* Team Fortress 2 -* Counter Strike: Global Offensive -* Garry's Mod -* ARK: Survival Evolved - -In addition to our standard nest of supported games, our community is constantly pushing the limits of this software -and there are plenty more games available provided by the community. Some of these games include: - -* Factorio -* San Andreas: MP -* Pocketmine MP -* Squad -* Xonotic -* Starmade -* Discord ATLBot, and most other Node.js/Python discord bots -* [and many more...](https://github.com/parkervcp/eggs) - -## License - -Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors. - -Code released under the [MIT License](./LICENSE.md). diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index e5a9eb0fa..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,20 +0,0 @@ -# Security Policy - -## Supported Versions - -The following versions of Pterodactyl are receiving active support and maintenance. Any security vulnerabilities discovered must be reproducible in supported versions. - -| Panel | Daemon | Supported | -|--------|--------------|--------------------| -| 1.10.x | wings@1.7.x | :white_check_mark: | -| 1.11.x | wings@1.11.x | :white_check_mark: | -| 0.7.x | daemon@0.6.x | :x: | - - -## Reporting a Vulnerability - -Please reach out directly to any project team member on Discord when reporting a security vulnerability, or you can email `matthew@pterodactyl.io`. - -We make every effort to respond as soon as possible, although it may take a day or two for us to sync internally and determine the severity of the report and its impact. Please, _do not_ use a public facing channel or GitHub issues to report sensitive security issues. - -As part of our process, we will create a security advisory for the affected versions and disclose it publicly, usually two to four weeks after a releasing a version that addresses it. diff --git a/app/Console/Commands/Environment/AppSettingsCommand.php b/app/Console/Commands/Environment/AppSettingsCommand.php index b143719fe..8b78d6279 100644 --- a/app/Console/Commands/Environment/AppSettingsCommand.php +++ b/app/Console/Commands/Environment/AppSettingsCommand.php @@ -1,10 +1,10 @@ output->comment('Provide the email address that eggs exported by this Panel should be from. This should be a valid email address.'); $this->variables['APP_SERVICE_AUTHOR'] = $this->option('author') ?? $this->ask( 'Egg Author Email', - config('pterodactyl.service.author', 'unknown@unknown.com') + config('panel.service.author', 'unknown@unknown.com') ); if (!filter_var($this->variables['APP_SERVICE_AUTHOR'], FILTER_VALIDATE_EMAIL)) { @@ -119,10 +119,10 @@ class AppSettingsCommand extends Command $this->variables['APP_ENVIRONMENT_ONLY'] = $this->confirm('Enable UI based settings editor?', true) ? 'false' : 'true'; } - $this->output->comment('Please reference https://pterodactyl.io/panel/1.0/additional_configuration.html#telemetry for more detailed information regarding telemetry data and collection.'); - $this->variables['PTERODACTYL_TELEMETRY_ENABLED'] = $this->option('telemetry') ?? $this->confirm( + $this->output->comment('Please reference our website for more detailed information regarding telemetry data and collection.'); + $this->variables['PANEL_TELEMETRY_ENABLED'] = $this->option('telemetry') ?? $this->confirm( 'Enable sending anonymous telemetry data?', - config('pterodactyl.telemetry.enabled', true) + config('panel.telemetry.enabled', true) ) ? 'true' : 'false'; // Make sure session cookies are set as "secure" when using HTTPS diff --git a/app/Console/Commands/Environment/DatabaseSettingsCommand.php b/app/Console/Commands/Environment/DatabaseSettingsCommand.php index fb4a2e25b..b0a209119 100644 --- a/app/Console/Commands/Environment/DatabaseSettingsCommand.php +++ b/app/Console/Commands/Environment/DatabaseSettingsCommand.php @@ -1,11 +1,11 @@ output->note('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.'); $this->variables['DB_USERNAME'] = $this->option('username') ?? $this->ask( 'Database Username', - config('database.connections.mysql.username', 'pterodactyl') + config('database.connections.mysql.username', 'panel') ); $askForMySQLPassword = true; @@ -76,7 +74,7 @@ class DatabaseSettingsCommand extends Command $this->output->error('Your connection credentials have NOT been saved. You will need to provide valid connection information before proceeding.'); if ($this->confirm('Go back and try again?')) { - $this->database->disconnect('_pterodactyl_command_test'); + $this->database->disconnect('_panel_command_test'); return $this->handle(); } @@ -96,7 +94,7 @@ class DatabaseSettingsCommand extends Command */ private function testMySQLConnection() { - config()->set('database.connections._pterodactyl_command_test', [ + config()->set('database.connections._panel_command_test', [ 'driver' => 'mysql', 'host' => $this->variables['DB_HOST'], 'port' => $this->variables['DB_PORT'], @@ -108,6 +106,6 @@ class DatabaseSettingsCommand extends Command 'strict' => true, ]); - $this->database->connection('_pterodactyl_command_test')->getPdo(); + $this->database->connection('_panel_command_test')->getPdo(); } } diff --git a/app/Console/Commands/Environment/EmailSettingsCommand.php b/app/Console/Commands/Environment/EmailSettingsCommand.php index 3a211394c..d479834f8 100644 --- a/app/Console/Commands/Environment/EmailSettingsCommand.php +++ b/app/Console/Commands/Environment/EmailSettingsCommand.php @@ -1,9 +1,9 @@ config->get('app.version')], ['Latest Version', $this->versionService->getPanel()], ['Up-to-Date', $this->versionService->isLatestPanel() ? 'Yes' : $this->formatText('No', 'bg=red')], - ['Unique Identifier', $this->config->get('pterodactyl.service.author')], + ['Unique Identifier', $this->config->get('panel.service.author')], ], 'compact'); $this->output->title('Application Configuration'); diff --git a/app/Console/Commands/Location/DeleteLocationCommand.php b/app/Console/Commands/Location/DeleteLocationCommand.php index 3193e0c3d..f9e6ddb8d 100644 --- a/app/Console/Commands/Location/DeleteLocationCommand.php +++ b/app/Console/Commands/Location/DeleteLocationCommand.php @@ -1,11 +1,11 @@ option('maxDisk') ?? $this->ask('Enter the maximum amount of disk space'); $data['disk_overallocate'] = $this->option('overallocateDisk') ?? $this->ask('Enter the amount of memory to over allocate by, -1 will disable checking and 0 will prevent creating new server'); $data['upload_size'] = $this->option('uploadSize') ?? $this->ask('Enter the maximum filesize upload', '100'); - $data['daemonListen'] = $this->option('daemonListeningPort') ?? $this->ask('Enter the wings listening port', '8080'); - $data['daemonSFTP'] = $this->option('daemonSFTPPort') ?? $this->ask('Enter the wings SFTP listening port', '2022'); - $data['daemonBase'] = $this->option('daemonBase') ?? $this->ask('Enter the base folder', '/var/lib/pterodactyl/volumes'); + $data['daemonListen'] = $this->option('daemonListeningPort') ?? $this->ask('Enter the daemon listening port', '8080'); + $data['daemonSFTP'] = $this->option('daemonSFTPPort') ?? $this->ask('Enter the daemon SFTP listening port', '2022'); + $data['daemonBase'] = $this->option('daemonBase') ?? $this->ask('Enter the base folder', '/var/lib/panel/volumes'); $node = $this->creationService->handle($data); $this->line('Successfully created a new node on the location ' . $data['location_id'] . ' with the name ' . $data['name'] . ' and has an id of ' . $node->id . '.'); diff --git a/app/Console/Commands/Node/NodeConfigurationCommand.php b/app/Console/Commands/Node/NodeConfigurationCommand.php index 9bf0f425c..e52dccd72 100644 --- a/app/Console/Commands/Node/NodeConfigurationCommand.php +++ b/app/Console/Commands/Node/NodeConfigurationCommand.php @@ -1,8 +1,8 @@ argument('node')) ? 'id' : 'uuid'; - /** @var \Pterodactyl\Models\Node $node */ + /** @var \App\Models\Node $node */ $node = Node::query()->where($column, $this->argument('node'))->firstOr(function () { $this->error('The selected node does not exist.'); diff --git a/app/Console/Commands/Node/NodeListCommand.php b/app/Console/Commands/Node/NodeListCommand.php index 718ddd0d2..715f0c209 100644 --- a/app/Console/Commands/Node/NodeListCommand.php +++ b/app/Console/Commands/Node/NodeListCommand.php @@ -1,8 +1,8 @@ make(Kernel::class); $kernel->bootstrap(); $this->setLaravel($app); @@ -173,7 +173,7 @@ class UpgradeCommand extends Command }); $this->newLine(2); - $this->info('Panel has been successfully upgraded. Please ensure you also update any Wings instances: https://pterodactyl.io/wings/1.0/upgrading.html'); + $this->info('Panel has been successfully upgraded. Please ensure you also update any Daemon instances'); } protected function withProgress(ProgressBar $bar, \Closure $callback) diff --git a/app/Console/Commands/User/DeleteUserCommand.php b/app/Console/Commands/User/DeleteUserCommand.php index 2b13b4866..28dcc641c 100644 --- a/app/Console/Commands/User/DeleteUserCommand.php +++ b/app/Console/Commands/User/DeleteUserCommand.php @@ -1,11 +1,11 @@ command(PruneCommand::class, ['--model' => [ActivityLog::class]])->daily(); } - if (config('pterodactyl.telemetry.enabled')) { + if (config('panel.telemetry.enabled')) { $this->registerTelemetry($schedule); } } @@ -52,7 +52,7 @@ class Kernel extends ConsoleKernel /** * I wonder what this does. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException * @throws \Illuminate\Contracts\Container\BindingResolutionException */ private function registerTelemetry(Schedule $schedule): void diff --git a/app/Console/RequiresDatabaseMigrations.php b/app/Console/RequiresDatabaseMigrations.php index 2e5ebe6b2..c6b71f1bd 100644 --- a/app/Console/RequiresDatabaseMigrations.php +++ b/app/Console/RequiresDatabaseMigrations.php @@ -1,6 +1,6 @@ php artisan migrate --step --force -You will not be able to use Pterodactyl Panel as expected without fixing your +You will not be able to use the Panel as expected without fixing your database state by running the command above. '); diff --git a/app/Contracts/Core/ReceivesEvents.php b/app/Contracts/Core/ReceivesEvents.php index dbbad4458..9f78500bc 100644 --- a/app/Contracts/Core/ReceivesEvents.php +++ b/app/Contracts/Core/ReceivesEvents.php @@ -1,8 +1,8 @@ transactionLevel()) { $connections->rollBack(0); } @@ -163,7 +161,7 @@ class Handler extends ExceptionHandler foreach ($errors as $key => $error) { $meta = [ 'source_field' => $field, - 'rule' => str_replace(self::PTERODACTYL_RULE_STRING, 'p_', Arr::get( + 'rule' => str_replace(self::PANEL_RULE_STRING, 'p_', Arr::get( $codes, str_replace('.', '_', $field) . '.' . $key )), diff --git a/app/Exceptions/Http/Base/InvalidPasswordProvidedException.php b/app/Exceptions/Http/Base/InvalidPasswordProvidedException.php index bdcb8ec34..a0e166537 100644 --- a/app/Exceptions/Http/Base/InvalidPasswordProvidedException.php +++ b/app/Exceptions/Http/Base/InvalidPasswordProvidedException.php @@ -1,8 +1,8 @@ statusCode = is_null($response) ? $this->statusCode : $response->getStatusCode(); - // There are rare conditions where wings encounters a panic condition and crashes the + // There are rare conditions where daemon encounters a panic condition and crashes the // request being made after content has already been sent over the wire. In these cases // you can end up with a "successful" response code that is actual an error. // diff --git a/app/Exceptions/Http/HttpForbiddenException.php b/app/Exceptions/Http/HttpForbiddenException.php index 1488265a9..b0536257e 100644 --- a/app/Exceptions/Http/HttpForbiddenException.php +++ b/app/Exceptions/Http/HttpForbiddenException.php @@ -1,6 +1,6 @@ 'https://github.com/pterodactyl/panel/blob/develop/package.json', + 'Docs' => 'https://github.com/lancepioch/panel/blob/develop/package.json', ]; } } diff --git a/app/Exceptions/Transformer/InvalidTransformerLevelException.php b/app/Exceptions/Transformer/InvalidTransformerLevelException.php index 3d4c24248..9484960e1 100644 --- a/app/Exceptions/Transformer/InvalidTransformerLevelException.php +++ b/app/Exceptions/Transformer/InvalidTransformerLevelException.php @@ -1,9 +1,9 @@ serializer)) { - $this->serializer = new PterodactylSerializer(); + $this->serializer = new PanelSerializer(); } // Automatically set the paginator on the response object if the diff --git a/app/Extensions/Themes/Theme.php b/app/Extensions/Themes/Theme.php index fd65583e3..2badc3dcb 100644 --- a/app/Extensions/Themes/Theme.php +++ b/app/Extensions/Themes/Theme.php @@ -1,6 +1,6 @@ repository->getApplicationKeys($request->user()) ->filter(function (ApiKey $key) { foreach ($key->getAttributes() as $permission => $value) { diff --git a/app/Http/Controllers/Admin/Nodes/NodeController.php b/app/Http/Controllers/Admin/Nodes/NodeController.php index d80df6c80..014527a2d 100644 --- a/app/Http/Controllers/Admin/Nodes/NodeController.php +++ b/app/Http/Controllers/Admin/Nodes/NodeController.php @@ -1,12 +1,12 @@ paginate(config()->get('pterodactyl.paginate.admin.servers')); + ->paginate(config()->get('panel.paginate.admin.servers')); return $this->view->make('admin.servers.index', ['servers' => $servers]); } diff --git a/app/Http/Controllers/Admin/Servers/ServerTransferController.php b/app/Http/Controllers/Admin/Servers/ServerTransferController.php index 8941ce10c..fcdbe6efd 100644 --- a/app/Http/Controllers/Admin/Servers/ServerTransferController.php +++ b/app/Http/Controllers/Admin/Servers/ServerTransferController.php @@ -1,19 +1,19 @@ databases()->findOrFail($request->input('database')); $this->databasePasswordService->handle($database); diff --git a/app/Http/Controllers/Admin/Settings/AdvancedController.php b/app/Http/Controllers/Admin/Settings/AdvancedController.php index bf6883232..97180aa13 100644 --- a/app/Http/Controllers/Admin/Settings/AdvancedController.php +++ b/app/Http/Controllers/Admin/Settings/AdvancedController.php @@ -1,16 +1,16 @@ $abstract * diff --git a/app/Http/Controllers/Api/Application/Locations/LocationController.php b/app/Http/Controllers/Api/Application/Locations/LocationController.php index b95a0776a..eb5881fcd 100644 --- a/app/Http/Controllers/Api/Application/Locations/LocationController.php +++ b/app/Http/Controllers/Api/Application/Locations/LocationController.php @@ -1,21 +1,21 @@ user()->apiKeys() ->where('key_type', ApiKey::TYPE_ACCOUNT) ->where('identifier', $identifier) diff --git a/app/Http/Controllers/Api/Client/ClientApiController.php b/app/Http/Controllers/Api/Client/ClientApiController.php index a468d762a..4cf081fec 100644 --- a/app/Http/Controllers/Api/Client/ClientApiController.php +++ b/app/Http/Controllers/Api/Client/ClientApiController.php @@ -1,10 +1,10 @@ $abstract * diff --git a/app/Http/Controllers/Api/Client/ClientController.php b/app/Http/Controllers/Api/Client/ClientController.php index 9afb72628..758d81175 100644 --- a/app/Http/Controllers/Api/Client/ClientController.php +++ b/app/Http/Controllers/Api/Client/ClientController.php @@ -1,14 +1,14 @@ disk !== Backup::ADAPTER_AWS_S3 && $backup->disk !== Backup::ADAPTER_WINGS) { + if ($backup->disk !== Backup::ADAPTER_AWS_S3 && $backup->disk !== Backup::ADAPTER_DAEMON) { throw new BadRequestHttpException('The backup requested references an unknown disk driver type and cannot be downloaded.'); } @@ -179,7 +179,7 @@ class BackupController extends ClientApiController } /** - * Handles restoring a backup by making a request to the Wings instance telling it + * Handles restoring a backup by making a request to the daemon instance telling it * to begin the process of finding (or downloading) the backup and unpacking it * over the server files. * @@ -207,7 +207,7 @@ class BackupController extends ClientApiController $log->transaction(function () use ($backup, $server, $request) { // If the backup is for an S3 file we need to generate a unique Download link for - // it that will allow Wings to actually access the file. + // it that will allow daemon to actually access the file. if ($backup->disk === Backup::ADAPTER_AWS_S3) { $url = $this->downloadLinkService->handle($backup, $request->user()); } diff --git a/app/Http/Controllers/Api/Client/Servers/CommandController.php b/app/Http/Controllers/Api/Client/Servers/CommandController.php index 6cc50de47..a0e1134b6 100644 --- a/app/Http/Controllers/Api/Client/Servers/CommandController.php +++ b/app/Http/Controllers/Api/Client/Servers/CommandController.php @@ -1,17 +1,17 @@ fileRepository->setServer($server)->getContent( $request->get('file'), - config('pterodactyl.files.max_edit_size') + config('panel.files.max_edit_size') ); Activity::event('server:file.read')->property('file', $request->get('file'))->log(); @@ -102,7 +102,7 @@ class FileController extends ClientApiController /** * Writes the contents of the specified file to the server. * - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function write(WriteFileContentRequest $request, Server $server): JsonResponse { @@ -154,7 +154,7 @@ class FileController extends ClientApiController /** * Copies a file on the server. * - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function copy(CopyFileRequest $request, Server $server): JsonResponse { @@ -168,7 +168,7 @@ class FileController extends ClientApiController } /** - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function compress(CompressFilesRequest $request, Server $server): array { @@ -188,7 +188,7 @@ class FileController extends ClientApiController } /** - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function decompress(DecompressFilesRequest $request, Server $server): JsonResponse { @@ -210,7 +210,7 @@ class FileController extends ClientApiController /** * Deletes files or folders for the server in the given root directory. * - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function delete(DeleteFileRequest $request, Server $server): JsonResponse { @@ -230,7 +230,7 @@ class FileController extends ClientApiController /** * Updates file permissions for file(s) in the given root directory. * - * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException + * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ public function chmod(ChmodFilesRequest $request, Server $server): JsonResponse { @@ -243,7 +243,7 @@ class FileController extends ClientApiController } /** - * Requests that a file be downloaded from a remote location by Wings. + * Requests that a file be downloaded from a remote location by daemon. * * @throws \Throwable */ diff --git a/app/Http/Controllers/Api/Client/Servers/FileUploadController.php b/app/Http/Controllers/Api/Client/Servers/FileUploadController.php index 98fcd587d..e48dd75bd 100644 --- a/app/Http/Controllers/Api/Client/Servers/FileUploadController.php +++ b/app/Http/Controllers/Api/Client/Servers/FileUploadController.php @@ -1,14 +1,14 @@ repository->create([ 'server_id' => $server->id, 'name' => $request->input('name'), @@ -95,9 +95,9 @@ class ScheduleController extends ClientApiController /** * Updates a given schedule with the new data provided. * - * @throws \Pterodactyl\Exceptions\DisplayException - * @throws \Pterodactyl\Exceptions\Model\DataValidationException - * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException + * @throws \App\Exceptions\DisplayException + * @throws \App\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Repository\RecordNotFoundException */ public function update(UpdateScheduleRequest $request, Server $server, Schedule $schedule): array { @@ -117,8 +117,6 @@ class ScheduleController extends ClientApiController // Toggle the processing state of the scheduled task when it is enabled or disabled so that an // invalid state can be reset without manual database intervention. - // - // @see https://github.com/pterodactyl/panel/issues/2425 if ($schedule->is_active !== $active) { $data['is_processing'] = false; } @@ -165,7 +163,7 @@ class ScheduleController extends ClientApiController /** * Get the next run timestamp based on the cron data provided. * - * @throws \Pterodactyl\Exceptions\DisplayException + * @throws \App\Exceptions\DisplayException */ protected function getNextRunAt(Request $request): Carbon { diff --git a/app/Http/Controllers/Api/Client/Servers/ScheduleTaskController.php b/app/Http/Controllers/Api/Client/Servers/ScheduleTaskController.php index e2e4389a1..fc89e4120 100644 --- a/app/Http/Controllers/Api/Client/Servers/ScheduleTaskController.php +++ b/app/Http/Controllers/Api/Client/Servers/ScheduleTaskController.php @@ -1,23 +1,23 @@ tasks()->count() >= $limit) { throw new ServiceLimitExceededException("Schedules may not have more than $limit tasks associated with them. Creating this task would put this schedule over the limit."); } @@ -48,10 +48,10 @@ class ScheduleTaskController extends ClientApiController throw new HttpForbiddenException("A backup task cannot be created when the server's backup limit is set to 0."); } - /** @var \Pterodactyl\Models\Task|null $lastTask */ + /** @var \App\Models\Task|null $lastTask */ $lastTask = $schedule->tasks()->orderByDesc('sequence_id')->first(); - /** @var \Pterodactyl\Models\Task $task */ + /** @var \App\Models\Task $task */ $task = $this->connection->transaction(function () use ($request, $schedule, $lastTask) { $sequenceId = ($lastTask->sequence_id ?? 0) + 1; $requestSequenceId = $request->integer('sequence_id', $sequenceId); @@ -95,8 +95,8 @@ class ScheduleTaskController extends ClientApiController /** * Updates a given task for a server. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException - * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException + * @throws \App\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Repository\RecordNotFoundException */ public function update(StoreTaskRequest $request, Server $server, Schedule $schedule, Task $task): array { diff --git a/app/Http/Controllers/Api/Client/Servers/ServerController.php b/app/Http/Controllers/Api/Client/Servers/ServerController.php index 63eb9b988..71ac187b7 100644 --- a/app/Http/Controllers/Api/Client/Servers/ServerController.php +++ b/app/Http/Controllers/Api/Client/Servers/ServerController.php @@ -1,12 +1,12 @@ variables()->where('env_variable', $request->input('key'))->first(); $original = $variable->server_value; diff --git a/app/Http/Controllers/Api/Client/Servers/SubuserController.php b/app/Http/Controllers/Api/Client/Servers/SubuserController.php index 2c403c691..6324a5300 100644 --- a/app/Http/Controllers/Api/Client/Servers/SubuserController.php +++ b/app/Http/Controllers/Api/Client/Servers/SubuserController.php @@ -1,23 +1,23 @@ attributes->get('subuser'); $permissions = $this->getDefaultPermissions($request); @@ -106,7 +106,7 @@ class SubuserController extends ClientApiController 'revoked' => true, ]); - // Only update the database and hit up the Wings instance to invalidate JTI's if the permissions + // Only update the database and hit up the daemon instance to invalidate JTI's if the permissions // have actually changed for the user. if ($permissions !== $current) { $log->transaction(function ($instance) use ($request, $subuser, $server) { @@ -117,8 +117,8 @@ class SubuserController extends ClientApiController try { $this->serverRepository->setServer($server)->revokeUserJTI($subuser->user_id); } catch (DaemonConnectionException $exception) { - // Don't block this request if we can't connect to the Wings instance. Chances are it is - // offline and the token will be invalid once Wings boots back. + // Don't block this request if we can't connect to the daemon instance. Chances are it is + // offline and the token will be invalid once daemon boots back. Log::warning($exception, ['user_id' => $subuser->user_id, 'server_id' => $server->id]); $instance->property('revoked', false); @@ -138,7 +138,7 @@ class SubuserController extends ClientApiController */ public function delete(DeleteSubuserRequest $request, Server $server): JsonResponse { - /** @var \Pterodactyl\Models\Subuser $subuser */ + /** @var \App\Models\Subuser $subuser */ $subuser = $request->attributes->get('subuser'); $log = Activity::event('server:subuser.delete') @@ -152,7 +152,7 @@ class SubuserController extends ClientApiController try { $this->serverRepository->setServer($server)->revokeUserJTI($subuser->user_id); } catch (DaemonConnectionException $exception) { - // Don't block this request if we can't connect to the Wings instance. + // Don't block this request if we can't connect to the daemon instance. Log::warning($exception, ['user_id' => $subuser->user_id, 'server_id' => $server->id]); $instance->property('revoked', false); diff --git a/app/Http/Controllers/Api/Client/Servers/WebsocketController.php b/app/Http/Controllers/Api/Client/Servers/WebsocketController.php index 59b6f75d4..0fb062e96 100644 --- a/app/Http/Controllers/Api/Client/Servers/WebsocketController.php +++ b/app/Http/Controllers/Api/Client/Servers/WebsocketController.php @@ -1,16 +1,16 @@ user(); $user->update([ diff --git a/app/Http/Controllers/Api/Remote/ActivityProcessingController.php b/app/Http/Controllers/Api/Remote/ActivityProcessingController.php index b9d12c248..c7d739607 100644 --- a/app/Http/Controllers/Api/Remote/ActivityProcessingController.php +++ b/app/Http/Controllers/Api/Remote/ActivityProcessingController.php @@ -1,17 +1,17 @@ getTimezone(); - /** @var \Pterodactyl\Models\Node $node */ + /** @var \App\Models\Node $node */ $node = $request->attributes->get('node'); $servers = $node->servers()->whereIn('uuid', $request->servers())->get()->keyBy('uuid'); @@ -27,7 +27,7 @@ class ActivityProcessingController extends Controller $logs = []; foreach ($request->input('data') as $datum) { - /** @var \Pterodactyl\Models\Server|null $server */ + /** @var \App\Models\Server|null $server */ $server = $servers->get($datum['server']); if (is_null($server) || !Str::startsWith($datum['event'], 'server:')) { continue; diff --git a/app/Http/Controllers/Api/Remote/Backups/BackupRemoteUploadController.php b/app/Http/Controllers/Api/Remote/Backups/BackupRemoteUploadController.php index 7d92e0b1a..116bffb78 100644 --- a/app/Http/Controllers/Api/Remote/Backups/BackupRemoteUploadController.php +++ b/app/Http/Controllers/Api/Remote/Backups/BackupRemoteUploadController.php @@ -1,14 +1,14 @@ where('uuid', $backup)->firstOrFail(); // Prevent backups that have already been completed from trying to diff --git a/app/Http/Controllers/Api/Remote/Backups/BackupStatusController.php b/app/Http/Controllers/Api/Remote/Backups/BackupStatusController.php index f9c2a7932..17eb4063f 100644 --- a/app/Http/Controllers/Api/Remote/Backups/BackupStatusController.php +++ b/app/Http/Controllers/Api/Remote/Backups/BackupStatusController.php @@ -1,18 +1,18 @@ where('uuid', $backup)->firstOrFail(); if ($model->is_successful) { @@ -77,7 +77,7 @@ class BackupStatusController extends Controller */ public function restore(Request $request, string $backup): JsonResponse { - /** @var \Pterodactyl\Models\Backup $model */ + /** @var \App\Models\Backup $model */ $model = Backup::query()->where('uuid', $backup)->firstOrFail(); $model->server->update(['status' => null]); @@ -95,7 +95,7 @@ class BackupStatusController extends Controller * the given backup. * * @throws \Exception - * @throws \Pterodactyl\Exceptions\DisplayException + * @throws \App\Exceptions\DisplayException */ protected function completeMultipartUpload(Backup $backup, S3Filesystem $adapter, bool $successful, ?array $parts): void { diff --git a/app/Http/Controllers/Api/Remote/EggInstallController.php b/app/Http/Controllers/Api/Remote/EggInstallController.php index 31df7a96c..e8d03e614 100644 --- a/app/Http/Controllers/Api/Remote/EggInstallController.php +++ b/app/Http/Controllers/Api/Remote/EggInstallController.php @@ -1,12 +1,12 @@ attributes->get('node'); - /** @var \Pterodactyl\Models\Server $server */ + /** @var \App\Models\Server $server */ $server = $this->repository->findFirstWhere([ ['uuid', '=', $uuid], ['node_id', '=', $node->id], diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php index 8ce88e89e..593d05436 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php @@ -1,17 +1,17 @@ attributes->get('node'); // Avoid run-away N+1 SQL queries by preloading the relationships that are used @@ -55,7 +55,7 @@ class ServerDetailsController extends Controller $servers = Server::query()->with('allocations', 'egg', 'mounts', 'variables', 'location') ->where('node_id', $node->id) // If you don't cast this to a string you'll end up with a stringified per_page returned in - // the metadata, and then Wings will panic crash as a result. + // the metadata, and then daemon will panic crash as a result. ->paginate((int) $request->input('per_page', 50)); return new ServerConfigurationCollection($servers); @@ -63,9 +63,9 @@ class ServerDetailsController extends Controller /** * Resets the state of all servers on the node to be normal. This is triggered - * when Wings restarts and is useful for ensuring that any servers on the node + * when daemon restarts and is useful for ensuring that any servers on the node * do not get incorrectly stuck in installing/restoring from backup states since - * a Wings reboot would completely stop those processes. + * a daemon reboot would completely stop those processes. * * @throws \Throwable */ @@ -90,9 +90,9 @@ class ServerDetailsController extends Controller ->get(); $this->connection->transaction(function () use ($node, $servers) { - /** @var \Pterodactyl\Models\Server $server */ + /** @var \App\Models\Server $server */ foreach ($servers as $server) { - /** @var \Pterodactyl\Models\ActivityLog|null $activity */ + /** @var \App\Models\ActivityLog|null $activity */ $activity = $server->activity->first(); if (!is_null($activity)) { if ($subject = $activity->subjects->where('subject_type', 'backup')->first()) { diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php index 8fcfbe064..ebd717805 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php @@ -1,17 +1,17 @@ installed_at); - if ($isInitialInstall && config()->get('pterodactyl.email.send_install_notification', true)) { + if ($isInitialInstall && config()->get('panel.email.send_install_notification', true)) { $this->eventDispatcher->dispatch(new ServerInstalled($server)); - } elseif (!$isInitialInstall && config()->get('pterodactyl.email.send_reinstall_notification', true)) { + } elseif (!$isInitialInstall && config()->get('panel.email.send_reinstall_notification', true)) { $this->eventDispatcher->dispatch(new ServerInstalled($server)); } diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerTransferController.php b/app/Http/Controllers/Api/Remote/Servers/ServerTransferController.php index c14ddea97..73ba193e1 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerTransferController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerTransferController.php @@ -1,18 +1,18 @@ connection->transaction(function () use ($server, $transfer) { $allocations = array_merge([$transfer->old_allocation], $transfer->old_additional_allocations); diff --git a/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php b/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php index a360d1d0e..17fd0f6ca 100644 --- a/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php +++ b/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php @@ -1,21 +1,21 @@ findOrFail($details['user_id']); } catch (ModelNotFoundException) { $this->sendFailedLoginResponse($request, null, self::TOKEN_EXPIRED_MESSAGE); @@ -72,7 +72,7 @@ class LoginCheckpointController extends AbstractLoginController } else { $decrypted = $this->encrypter->decrypt($user->totp_secret); - if ($this->google2FA->verifyKey($decrypted, (string) $request->input('authentication_code') ?? '', config('pterodactyl.auth.2fa.window'))) { + if ($this->google2FA->verifyKey($decrypted, (string) $request->input('authentication_code') ?? '', config('panel.auth.2fa.window'))) { Event::dispatch(new ProvidedAuthenticationToken($user)); return $this->sendLoginResponse($user, $request); diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 2dbb34ee3..e90854572 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -1,13 +1,13 @@ input('user'); - /** @var \Pterodactyl\Models\User $user */ + /** @var \App\Models\User $user */ $user = User::query()->where($this->getField($username), $username)->firstOrFail(); } catch (ModelNotFoundException) { $this->sendFailedLoginResponse($request); diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 3325a1e6b..62bb312b7 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -1,6 +1,6 @@ route()->parameter('server'); if (!$server instanceof Server) { diff --git a/app/Http/Middleware/AdminAuthenticate.php b/app/Http/Middleware/AdminAuthenticate.php index 4c7f48bef..dc3296b06 100644 --- a/app/Http/Middleware/AdminAuthenticate.php +++ b/app/Http/Middleware/AdminAuthenticate.php @@ -1,6 +1,6 @@ user(); if (!$user || !$user->root_admin) { throw new AccessDeniedHttpException('This account does not have permission to access the API.'); diff --git a/app/Http/Middleware/Api/AuthenticateIPAccess.php b/app/Http/Middleware/Api/AuthenticateIPAccess.php index b8a9937ab..c9f3bf7dc 100644 --- a/app/Http/Middleware/Api/AuthenticateIPAccess.php +++ b/app/Http/Middleware/Api/AuthenticateIPAccess.php @@ -1,11 +1,11 @@ user()->currentAccessToken(); // If this is a stateful request just push the request through to the next diff --git a/app/Http/Middleware/Api/Client/RequireClientApiKey.php b/app/Http/Middleware/Api/Client/RequireClientApiKey.php index 1ddd0f128..8b542e2f2 100644 --- a/app/Http/Middleware/Api/Client/RequireClientApiKey.php +++ b/app/Http/Middleware/Api/Client/RequireClientApiKey.php @@ -1,9 +1,9 @@ user(); $server = $request->route()->parameter('server'); diff --git a/app/Http/Middleware/Api/Client/Server/ResourceBelongsToServer.php b/app/Http/Middleware/Api/Client/Server/ResourceBelongsToServer.php index 1157ddced..0d10260fc 100644 --- a/app/Http/Middleware/Api/Client/Server/ResourceBelongsToServer.php +++ b/app/Http/Middleware/Api/Client/Server/ResourceBelongsToServer.php @@ -1,16 +1,16 @@ route()->parameter('server'); $exception = new NotFoundHttpException('The requested resource was not found for this server.'); foreach ($params as $key => $model) { diff --git a/app/Http/Middleware/Api/Client/SubstituteClientBindings.php b/app/Http/Middleware/Api/Client/SubstituteClientBindings.php index af681467d..3abf9eb09 100644 --- a/app/Http/Middleware/Api/Client/SubstituteClientBindings.php +++ b/app/Http/Middleware/Api/Client/SubstituteClientBindings.php @@ -1,8 +1,8 @@ router->bind('user', function ($value, $route) { - /** @var \Pterodactyl\Models\Subuser $match */ + /** @var \App\Models\Subuser $match */ $match = $route->parameter('server') ->subusers() ->whereRelation('user', 'uuid', '=', $value) diff --git a/app/Http/Middleware/Api/Daemon/DaemonAuthenticate.php b/app/Http/Middleware/Api/Daemon/DaemonAuthenticate.php index 6e5ae2a43..6356769a9 100644 --- a/app/Http/Middleware/Api/Daemon/DaemonAuthenticate.php +++ b/app/Http/Middleware/Api/Daemon/DaemonAuthenticate.php @@ -1,12 +1,12 @@ repository->findFirstWhere([ 'daemon_token_id' => $parts[0], ]); diff --git a/app/Http/Middleware/Api/IsValidJson.php b/app/Http/Middleware/Api/IsValidJson.php index 95101a1b2..86bb34ff2 100644 --- a/app/Http/Middleware/Api/IsValidJson.php +++ b/app/Http/Middleware/Api/IsValidJson.php @@ -1,6 +1,6 @@ attributes->get('server'); $node = $server->getRelation('node'); diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index ad3eecdc7..38af84f7e 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -1,6 +1,6 @@ user(); $uri = rtrim($request->getRequestUri(), '/') . '/'; $current = $request->route()->getName(); @@ -44,7 +44,7 @@ class RequireTwoFactorAuthentication return $next($request); } - $level = (int) config('pterodactyl.auth.2fa_required'); + $level = (int) config('panel.auth.2fa_required'); // If this setting is not configured, or the user is already using 2FA then we can just // send them right through, nothing else needs to be checked. // diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php index af5382e8c..bb480ec8f 100644 --- a/app/Http/Middleware/TrimStrings.php +++ b/app/Http/Middleware/TrimStrings.php @@ -1,6 +1,6 @@ 'required|in:true,false', 'recaptcha:secret_key' => 'required|string|max:191', 'recaptcha:website_key' => 'required|string|max:191', - 'pterodactyl:guzzle:timeout' => 'required|integer|between:1,60', - 'pterodactyl:guzzle:connect_timeout' => 'required|integer|between:1,60', - 'pterodactyl:client_features:allocations:enabled' => 'required|in:true,false', - 'pterodactyl:client_features:allocations:range_start' => [ + 'panel:guzzle:timeout' => 'required|integer|between:1,60', + 'panel:guzzle:connect_timeout' => 'required|integer|between:1,60', + 'panel:client_features:allocations:enabled' => 'required|in:true,false', + 'panel:client_features:allocations:range_start' => [ 'nullable', - 'required_if:pterodactyl:client_features:allocations:enabled,true', + 'required_if:panel:client_features:allocations:enabled,true', 'integer', 'between:1024,65535', ], - 'pterodactyl:client_features:allocations:range_end' => [ + 'panel:client_features:allocations:range_end' => [ 'nullable', - 'required_if:pterodactyl:client_features:allocations:enabled,true', + 'required_if:panel:client_features:allocations:enabled,true', 'integer', 'between:1024,65535', - 'gt:pterodactyl:client_features:allocations:range_start', + 'gt:panel:client_features:allocations:range_start', ], ]; } @@ -40,11 +40,11 @@ class AdvancedSettingsFormRequest extends AdminFormRequest 'recaptcha:enabled' => 'reCAPTCHA Enabled', 'recaptcha:secret_key' => 'reCAPTCHA Secret Key', 'recaptcha:website_key' => 'reCAPTCHA Website Key', - 'pterodactyl:guzzle:timeout' => 'HTTP Request Timeout', - 'pterodactyl:guzzle:connect_timeout' => 'HTTP Connection Timeout', - 'pterodactyl:client_features:allocations:enabled' => 'Auto Create Allocations Enabled', - 'pterodactyl:client_features:allocations:range_start' => 'Starting Port', - 'pterodactyl:client_features:allocations:range_end' => 'Ending Port', + 'panel:guzzle:timeout' => 'HTTP Request Timeout', + 'panel:guzzle:connect_timeout' => 'HTTP Connection Timeout', + 'panel:client_features:allocations:enabled' => 'Auto Create Allocations Enabled', + 'panel:client_features:allocations:range_start' => 'Starting Port', + 'panel:client_features:allocations:range_end' => 'Ending Port', ]; } } diff --git a/app/Http/Requests/Admin/Settings/BaseSettingsFormRequest.php b/app/Http/Requests/Admin/Settings/BaseSettingsFormRequest.php index 8a24dd0ac..270e35d49 100644 --- a/app/Http/Requests/Admin/Settings/BaseSettingsFormRequest.php +++ b/app/Http/Requests/Admin/Settings/BaseSettingsFormRequest.php @@ -1,10 +1,10 @@ 'required|string|max:191', - 'pterodactyl:auth:2fa_required' => 'required|integer|in:0,1,2', + 'panel:auth:2fa_required' => 'required|integer|in:0,1,2', 'app:locale' => ['required', 'string', Rule::in(array_keys($this->getAvailableLanguages()))], ]; } @@ -23,7 +23,7 @@ class BaseSettingsFormRequest extends AdminFormRequest { return [ 'app:name' => 'Company Name', - 'pterodactyl:auth:2fa_required' => 'Require 2-Factor Authentication', + 'panel:auth:2fa_required' => 'Require 2-Factor Authentication', 'app:locale' => 'Default Language', ]; } diff --git a/app/Http/Requests/Admin/Settings/MailSettingsFormRequest.php b/app/Http/Requests/Admin/Settings/MailSettingsFormRequest.php index 3f014e982..da34a21c1 100644 --- a/app/Http/Requests/Admin/Settings/MailSettingsFormRequest.php +++ b/app/Http/Requests/Admin/Settings/MailSettingsFormRequest.php @@ -1,9 +1,9 @@ resource)) { - throw new PterodactylException('An ACL resource must be defined on API requests.'); + throw new PanelException('An ACL resource must be defined on API requests.'); } $token = $this->user()->currentAccessToken(); diff --git a/app/Http/Requests/Api/Application/Locations/DeleteLocationRequest.php b/app/Http/Requests/Api/Application/Locations/DeleteLocationRequest.php index 3c41e1166..a3934e63e 100644 --- a/app/Http/Requests/Api/Application/Locations/DeleteLocationRequest.php +++ b/app/Http/Requests/Api/Application/Locations/DeleteLocationRequest.php @@ -1,9 +1,9 @@ $this->requiredToOptional('memory', $rules['memory']), 'swap' => $this->requiredToOptional('swap', $rules['swap']), 'io' => $this->requiredToOptional('io', $rules['io']), @@ -94,8 +92,6 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest * Converts existing rules for certain limits into a format that maintains backwards * compatability with the old API endpoint while also supporting a more correct API * call. - * - * @see https://github.com/pterodactyl/panel/issues/1500 */ protected function requiredToOptional(string $field, array $rules, bool $limits = false): array { diff --git a/app/Http/Requests/Api/Application/Servers/UpdateServerDetailsRequest.php b/app/Http/Requests/Api/Application/Servers/UpdateServerDetailsRequest.php index aecc1cf02..45a05c7e3 100644 --- a/app/Http/Requests/Api/Application/Servers/UpdateServerDetailsRequest.php +++ b/app/Http/Requests/Api/Application/Servers/UpdateServerDetailsRequest.php @@ -1,8 +1,8 @@ route()->parameter('server'); Assert::isInstanceOf($server, Server::class); diff --git a/app/Http/Requests/Api/Client/Servers/Startup/GetStartupRequest.php b/app/Http/Requests/Api/Client/Servers/Startup/GetStartupRequest.php index fee92bcbc..a20ef49a9 100644 --- a/app/Http/Requests/Api/Client/Servers/Startup/GetStartupRequest.php +++ b/app/Http/Requests/Api/Client/Servers/Startup/GetStartupRequest.php @@ -1,9 +1,9 @@ user(); - /** @var \Pterodactyl\Models\Server $server */ + /** @var \App\Models\Server $server */ $server = $this->route()->parameter('server'); // If we are a root admin or the server owner, no need to perform these checks. @@ -63,8 +63,8 @@ abstract class SubuserRequest extends ClientApiRequest // Otherwise, get the current subuser's permission set, and ensure that the // permissions they are trying to assign are not _more_ than the ones they // already have. - /** @var \Pterodactyl\Models\Subuser|null $subuser */ - /** @var \Pterodactyl\Services\Servers\GetUserPermissionsService $service */ + /** @var \App\Models\Subuser|null $subuser */ + /** @var \App\Services\Servers\GetUserPermissionsService $service */ $service = $this->container->make(GetUserPermissionsService::class); if (count(array_diff($permissions, $service->handle($server, $user))) > 0) { diff --git a/app/Http/Requests/Api/Client/Servers/Subusers/UpdateSubuserRequest.php b/app/Http/Requests/Api/Client/Servers/Subusers/UpdateSubuserRequest.php index bd8929a98..90899dfd5 100644 --- a/app/Http/Requests/Api/Client/Servers/Subusers/UpdateSubuserRequest.php +++ b/app/Http/Requests/Api/Client/Servers/Subusers/UpdateSubuserRequest.php @@ -1,8 +1,8 @@ with('asset', $this->assetHashService); $view->with('siteConfiguration', [ - 'name' => config('app.name') ?? 'Pterodactyl', + 'name' => config('app.name', 'Panel'), 'locale' => config('app.locale') ?? 'en', 'recaptcha' => [ 'enabled' => config('recaptcha.enabled', false), diff --git a/app/Jobs/Job.php b/app/Jobs/Job.php index 0eb64bc7d..55ece29ac 100644 --- a/app/Jobs/Job.php +++ b/app/Jobs/Job.php @@ -1,6 +1,6 @@ where('schedule_id', $this->task->schedule_id) ->orderBy('sequence_id', 'asc') ->where('sequence_id', '>', $this->task->sequence_id) diff --git a/app/Listeners/Auth/AuthenticationListener.php b/app/Listeners/Auth/AuthenticationListener.php index ec25b19c5..de5271901 100644 --- a/app/Listeners/Auth/AuthenticationListener.php +++ b/app/Listeners/Auth/AuthenticationListener.php @@ -1,12 +1,12 @@ false, 'memory_overallocate' => 0, 'disk_overallocate' => 0, - 'daemonBase' => '/var/lib/pterodactyl/volumes', + 'daemonBase' => '/var/lib/panel/volumes', 'daemonSFTP' => 2022, 'daemonListen' => 8080, 'maintenance_mode' => false, diff --git a/app/Models/Objects/DeploymentObject.php b/app/Models/Objects/DeploymentObject.php index 0c44be08e..b0ea8ef9c 100644 --- a/app/Models/Objects/DeploymentObject.php +++ b/app/Models/Objects/DeploymentObject.php @@ -1,6 +1,6 @@ [ diff --git a/app/Models/RecoveryToken.php b/app/Models/RecoveryToken.php index d4ca764a0..c879bac09 100644 --- a/app/Models/RecoveryToken.php +++ b/app/Models/RecoveryToken.php @@ -1,6 +1,6 @@ on('server_variables.variable_id', 'egg_variables.id') ->where('server_variables.server_id', $this->id); }); @@ -348,7 +346,7 @@ class Server extends Model * exception is raised. This should be called whenever something needs to make * sure the server is not in a weird state that should block user access. * - * @throws \Pterodactyl\Exceptions\Http\Server\ServerStateConflictException + * @throws \App\Exceptions\Http\Server\ServerStateConflictException */ public function validateCurrentState() { diff --git a/app/Models/ServerTransfer.php b/app/Models/ServerTransfer.php index da4618828..4cc66d951 100644 --- a/app/Models/ServerTransfer.php +++ b/app/Models/ServerTransfer.php @@ -1,6 +1,6 @@ tokens()->forceCreate([ 'user_id' => $this->id, 'key_type' => ApiKey::TYPE_ACCOUNT, diff --git a/app/Models/User.php b/app/Models/User.php index c22c21c81..eaba717e0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -1,27 +1,27 @@ subject('Pterodactyl Test Message') + ->subject('Panel Test Message') ->greeting('Hello ' . $this->user->name . '!') - ->line('This is a test of the Pterodactyl mail system. You\'re good to go!'); + ->line('This is a test of the Panel mail system. You\'re good to go!'); } } diff --git a/app/Notifications/RemovedFromServer.php b/app/Notifications/RemovedFromServer.php index 492dc60e6..668d8f28a 100644 --- a/app/Notifications/RemovedFromServer.php +++ b/app/Notifications/RemovedFromServer.php @@ -1,6 +1,6 @@ app->environment() !== 'testing') { + if (!config('panel.load_environment_only', false) && $this->app->environment() !== 'testing') { $this->app->register(SettingsServiceProvider::class); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 9f9556b9a..389a9690b 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -1,11 +1,11 @@ $this->app->environment('production'), 'base_uri' => $this->node->getConnectionAddress(), - 'timeout' => config('pterodactyl.guzzle.timeout'), - 'connect_timeout' => config('pterodactyl.guzzle.connect_timeout'), + 'timeout' => config('panel.guzzle.timeout'), + 'connect_timeout' => config('panel.guzzle.connect_timeout'), 'headers' => array_merge($headers, [ 'Authorization' => 'Bearer ' . $this->node->getDecryptedKey(), 'Accept' => 'application/json', diff --git a/app/Repositories/Wings/DaemonServerRepository.php b/app/Repositories/Daemon/DaemonServerRepository.php similarity index 81% rename from app/Repositories/Wings/DaemonServerRepository.php rename to app/Repositories/Daemon/DaemonServerRepository.php index f013ac08c..90f7ac01f 100644 --- a/app/Repositories/Wings/DaemonServerRepository.php +++ b/app/Repositories/Daemon/DaemonServerRepository.php @@ -1,19 +1,19 @@ getBuilder() ->with('nest', 'node') ->where(function (Builder $query) use ($uuid) { diff --git a/app/Repositories/Eloquent/ServerVariableRepository.php b/app/Repositories/Eloquent/ServerVariableRepository.php index 26ded2cf6..e679390cd 100644 --- a/app/Repositories/Eloquent/ServerVariableRepository.php +++ b/app/Repositories/Eloquent/ServerVariableRepository.php @@ -1,9 +1,9 @@ node->allocations() ->where('ip', $server->allocation->ip) ->whereNull('server_id') @@ -56,16 +56,16 @@ class FindAssignableAllocationService * in the settings. If there are no matches in that range, or something is wrong with the * range information provided an exception will be raised. * - * @throws \Pterodactyl\Exceptions\DisplayException - * @throws \Pterodactyl\Exceptions\Service\Allocation\CidrOutOfRangeException - * @throws \Pterodactyl\Exceptions\Service\Allocation\InvalidPortMappingException - * @throws \Pterodactyl\Exceptions\Service\Allocation\PortOutOfRangeException - * @throws \Pterodactyl\Exceptions\Service\Allocation\TooManyPortsInRangeException + * @throws \App\Exceptions\DisplayException + * @throws \App\Exceptions\Service\Allocation\CidrOutOfRangeException + * @throws \App\Exceptions\Service\Allocation\InvalidPortMappingException + * @throws \App\Exceptions\Service\Allocation\PortOutOfRangeException + * @throws \App\Exceptions\Service\Allocation\TooManyPortsInRangeException */ protected function createNewAllocation(Server $server): Allocation { - $start = config('pterodactyl.client_features.allocations.range_start', null); - $end = config('pterodactyl.client_features.allocations.range_end', null); + $start = config('panel.client_features.allocations.range_start', null); + $end = config('panel.client_features.allocations.range_end', null); if (!$start || !$end) { throw new NoAutoAllocationSpaceAvailableException(); @@ -100,7 +100,7 @@ class FindAssignableAllocationService 'allocation_ports' => [$port], ]); - /** @var \Pterodactyl\Models\Allocation $allocation */ + /** @var \App\Models\Allocation $allocation */ $allocation = $server->node->allocations() ->where('ip', $server->allocation->ip) ->where('port', $port) diff --git a/app/Services/Api/KeyCreationService.php b/app/Services/Api/KeyCreationService.php index f026b9f22..1c88116bc 100644 --- a/app/Services/Api/KeyCreationService.php +++ b/app/Services/Api/KeyCreationService.php @@ -1,10 +1,10 @@ connection->transaction(function () use ($backup) { $backup->delete(); - /** @var \Pterodactyl\Extensions\Filesystem\S3Filesystem $adapter */ + /** @var \App\Extensions\Filesystem\S3Filesystem $adapter */ $adapter = $this->manager->adapter(Backup::ADAPTER_AWS_S3); $adapter->getClient()->deleteObject([ diff --git a/app/Services/Backups/DownloadLinkService.php b/app/Services/Backups/DownloadLinkService.php index f3f76c845..a167a1bb2 100644 --- a/app/Services/Backups/DownloadLinkService.php +++ b/app/Services/Backups/DownloadLinkService.php @@ -1,12 +1,12 @@ backupManager->adapter(Backup::ADAPTER_AWS_S3); $request = $adapter->getClient()->createPresignedRequest( diff --git a/app/Services/Backups/InitiateBackupService.php b/app/Services/Backups/InitiateBackupService.php index be8f96632..e40345ba7 100644 --- a/app/Services/Backups/InitiateBackupService.php +++ b/app/Services/Backups/InitiateBackupService.php @@ -1,17 +1,17 @@ where('is_locked', false)->orderBy('created_at')->first(); if (!$oldest) { throw new TooManyBackupsException($server->backup_limit); @@ -108,7 +108,7 @@ class InitiateBackupService } return $this->connection->transaction(function () use ($server, $name) { - /** @var \Pterodactyl\Models\Backup $backup */ + /** @var \App\Models\Backup $backup */ $backup = $this->repository->create([ 'server_id' => $server->id, 'uuid' => Uuid::uuid4()->toString(), diff --git a/app/Services/Databases/DatabaseManagementService.php b/app/Services/Databases/DatabaseManagementService.php index 20de6a78f..716c372bf 100644 --- a/app/Services/Databases/DatabaseManagementService.php +++ b/app/Services/Databases/DatabaseManagementService.php @@ -1,18 +1,18 @@ where('node_id', $server->node_id)->toBase(); - if ($nodeHosts->isEmpty() && !config('pterodactyl.client_features.databases.allow_random')) { + if ($nodeHosts->isEmpty() && !config('panel.client_features.databases.allow_random')) { throw new NoSuitableDatabaseHostException(); } } diff --git a/app/Services/Databases/Hosts/HostCreationService.php b/app/Services/Databases/Hosts/HostCreationService.php index d33a15856..e3f4d1606 100644 --- a/app/Services/Databases/Hosts/HostCreationService.php +++ b/app/Services/Databases/Hosts/HostCreationService.php @@ -1,13 +1,13 @@ configurationStructureService->handle($server, [], true); $response = []; - // Normalize the output of the configuration for the new Wings Daemon to more + // Normalize the output of the configuration for the new daemon Daemon to more // easily ingest, as well as make things more flexible down the road. foreach ($configs as $file => $data) { // Try to head off any errors relating to parsing a set of configuration files // or other JSON data for the egg. This should probably be blocked at the time // of egg creation/update, but it isn't so this check will at least prevent a - // 500 error which would crash the entire Wings boot process. - // - // @see https://github.com/pterodactyl/panel/issues/3055 + // 500 error which would crash the entire daemon boot process. if (!is_object($data) || !isset($data->find)) { continue; } diff --git a/app/Services/Eggs/EggCreationService.php b/app/Services/Eggs/EggCreationService.php index b084b0cca..57e7857d7 100644 --- a/app/Services/Eggs/EggCreationService.php +++ b/app/Services/Eggs/EggCreationService.php @@ -1,14 +1,13 @@ repository->create(array_merge($data, [ 'uuid' => Uuid::uuid4()->toString(), - 'author' => $this->config->get('pterodactyl.service.author'), + 'author' => $this->config->get('panel.service.author'), ]), true, true); } } diff --git a/app/Services/Eggs/EggDeletionService.php b/app/Services/Eggs/EggDeletionService.php index 7e4013351..6b8ca59cf 100644 --- a/app/Services/Eggs/EggDeletionService.php +++ b/app/Services/Eggs/EggDeletionService.php @@ -1,11 +1,11 @@ repository->getWithExportAttributes($egg); $struct = [ - '_comment' => 'DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO', + '_comment' => 'DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL', 'meta' => [ 'version' => Egg::EXPORT_VERSION, 'update_url' => $egg->update_url, diff --git a/app/Services/Eggs/Sharing/EggImporterService.php b/app/Services/Eggs/Sharing/EggImporterService.php index ecd6eadb6..9cf1feac9 100644 --- a/app/Services/Eggs/Sharing/EggImporterService.php +++ b/app/Services/Eggs/Sharing/EggImporterService.php @@ -1,15 +1,15 @@ parser->handle($file); - /** @var \Pterodactyl\Models\Nest $nest */ + /** @var \App\Models\Nest $nest */ $nest = Nest::query()->with('eggs', 'eggs.variables')->findOrFail($nest); return $this->connection->transaction(function () use ($nest, $parsed) { diff --git a/app/Services/Eggs/Sharing/EggUpdateImporterService.php b/app/Services/Eggs/Sharing/EggUpdateImporterService.php index 89a1f9287..4efe0866a 100644 --- a/app/Services/Eggs/Sharing/EggUpdateImporterService.php +++ b/app/Services/Eggs/Sharing/EggUpdateImporterService.php @@ -1,13 +1,13 @@ 'no-referrer', ]; - if (config('pterodactyl.assets.use_hash')) { + if (config('panel.assets.use_hash')) { $attributes['integrity'] = $this->integrity($resource); } @@ -83,7 +83,7 @@ class AssetHashService 'crossorigin' => 'anonymous', ]; - if (config('pterodactyl.assets.use_hash')) { + if (config('panel.assets.use_hash')) { $attributes['integrity'] = $this->integrity($resource); } diff --git a/app/Services/Helpers/SoftwareVersionService.php b/app/Services/Helpers/SoftwareVersionService.php index 2122b397b..1fd8483f0 100644 --- a/app/Services/Helpers/SoftwareVersionService.php +++ b/app/Services/Helpers/SoftwareVersionService.php @@ -1,17 +1,17 @@ cache->remember(self::VERSION_CACHE_KEY, CarbonImmutable::now()->addMinutes(config('pterodactyl.cdn.cache_time', 60)), function () { + return $this->cache->remember(self::VERSION_CACHE_KEY, CarbonImmutable::now()->addMinutes(config('panel.cdn.cache_time', 60)), function () { try { - $response = $this->client->request('GET', config('pterodactyl.cdn.url')); + $response = $this->client->request('GET', config('panel.cdn.url')); if ($response->getStatusCode() === 200) { return json_decode($response->getBody(), true); @@ -100,4 +92,9 @@ class SoftwareVersionService } }); } + + public function getDonations(): string + { + return 'https://github.com'; + } } diff --git a/app/Services/Locations/LocationCreationService.php b/app/Services/Locations/LocationCreationService.php index b1a3ec995..ff7aed2bd 100644 --- a/app/Services/Locations/LocationCreationService.php +++ b/app/Services/Locations/LocationCreationService.php @@ -1,9 +1,9 @@ repository->create([ 'uuid' => Uuid::uuid4()->toString(), - 'author' => $author ?? $this->config->get('pterodactyl.service.author'), + 'author' => $author ?? $this->config->get('panel.service.author'), 'name' => array_get($data, 'name'), 'description' => array_get($data, 'description'), ], true, true); diff --git a/app/Services/Nests/NestDeletionService.php b/app/Services/Nests/NestDeletionService.php index 6babf45c3..2f62c7d33 100644 --- a/app/Services/Nests/NestDeletionService.php +++ b/app/Services/Nests/NestDeletionService.php @@ -1,10 +1,10 @@ withClaim('user_uuid', $this->user->uuid) // The "user_id" claim is deprecated and should not be referenced — it remains - // here solely to ensure older versions of Wings are unaffected when the Panel + // here solely to ensure older versions of daemon are unaffected when the Panel // is updated. // // This claim will be removed in Panel@1.11 or later. diff --git a/app/Services/Nodes/NodeUpdateService.php b/app/Services/Nodes/NodeUpdateService.php index 28733e35a..782ec9cd7 100644 --- a/app/Services/Nodes/NodeUpdateService.php +++ b/app/Services/Nodes/NodeUpdateService.php @@ -1,16 +1,16 @@ connection->transaction(function () use ($data, $node) { - /** @var \Pterodactyl\Models\Node $updated */ + /** @var \App\Models\Node $updated */ $updated = $this->repository->withFreshModel()->update($node->id, $data, true, true); try { @@ -49,8 +49,6 @@ class NodeUpdateService // // This makes more sense anyways, because only the Panel uses the FQDN for connecting, the // node doesn't actually care about this. - // - // @see https://github.com/pterodactyl/panel/issues/1931 $node->fqdn = $updated->fqdn; $this->configurationRepository->setNode($node)->update($updated); @@ -58,13 +56,11 @@ class NodeUpdateService Log::warning($exception, ['node_id' => $node->id]); // Never actually throw these exceptions up the stack. If we were able to change the settings - // but something went wrong with Wings we just want to store the update and let the user manually + // but something went wrong with daemon we just want to store the update and let the user manually // make changes as needed. // - // This avoids issues with proxies such as Cloudflare which will see Wings as offline and then + // This avoids issues with proxies such as Cloudflare which will see daemon as offline and then // inject their own response pages, causing this logic to get fucked up. - // - // @see https://github.com/pterodactyl/panel/issues/2712 return [$updated, true]; } diff --git a/app/Services/Schedules/ProcessScheduleService.php b/app/Services/Schedules/ProcessScheduleService.php index 56b708499..33601d53b 100644 --- a/app/Services/Schedules/ProcessScheduleService.php +++ b/app/Services/Schedules/ProcessScheduleService.php @@ -1,15 +1,15 @@ tasks()->orderBy('sequence_id')->first(); if (is_null($task)) { @@ -59,7 +59,7 @@ class ProcessScheduleService } catch (\Exception $exception) { if (!$exception instanceof DaemonConnectionException) { // If we encountered some exception during this process that wasn't just an - // issue connecting to Wings run the failed sequence for a job. Otherwise we + // issue connecting to daemon run the failed sequence for a job. Otherwise we // can just quietly mark the task as completed without actually running anything. $job->failed($exception); } @@ -74,8 +74,6 @@ class ProcessScheduleService } else { // When using dispatchNow the RunTaskJob::failed() function is not called automatically // so we need to manually trigger it and then continue with the exception throw. - // - // @see https://github.com/pterodactyl/panel/issues/2550 try { $this->dispatcher->dispatchNow($job); } catch (\Exception $exception) { diff --git a/app/Services/Servers/BuildModificationService.php b/app/Services/Servers/BuildModificationService.php index 05553d7f1..0f1c6ac3b 100644 --- a/app/Services/Servers/BuildModificationService.php +++ b/app/Services/Servers/BuildModificationService.php @@ -1,16 +1,16 @@ connection->transaction(function () use ($server, $data) { $this->processAllocations($server, $data); @@ -59,7 +59,7 @@ class BuildModificationService $updateData = $this->structureService->handle($server); - // Because Wings always fetches an updated configuration from the Panel when booting + // Because daemon always fetches an updated configuration from the Panel when booting // a server this type of exception can be safely "ignored" and just written to the logs. // Ideally this request succeeds, so we can apply resource modifications on the fly, but // if it fails we can just continue on as normal. @@ -77,7 +77,7 @@ class BuildModificationService /** * Process the allocations being assigned in the data and ensure they are available for a server. * - * @throws \Pterodactyl\Exceptions\DisplayException + * @throws \App\Exceptions\DisplayException */ private function processAllocations(Server $server, array &$data): void { diff --git a/app/Services/Servers/DetailsModificationService.php b/app/Services/Servers/DetailsModificationService.php index d135c0495..1b32c2ac5 100644 --- a/app/Services/Servers/DetailsModificationService.php +++ b/app/Services/Servers/DetailsModificationService.php @@ -1,13 +1,13 @@ saveOrFail(); // If the owner_id value is changed we need to revoke any tokens that exist for the server - // on the Wings instance so that the old owner no longer has any permission to access the + // on the daemon instance so that the old owner no longer has any permission to access the // websockets. if ($server->owner_id !== $owner) { try { $this->serverRepository->setServer($server)->revokeUserJTI($owner); } catch (DaemonConnectionException $exception) { - // Do nothing. A failure here is not ideal, but it is likely to be caused by Wings + // Do nothing. A failure here is not ideal, but it is likely to be caused by daemon // being offline, or in an entirely broken state. Remember, these tokens reset every // few minutes by default, we're just trying to help it along a little quicker. } diff --git a/app/Services/Servers/EnvironmentService.php b/app/Services/Servers/EnvironmentService.php index 8f45bab2d..0406f6998 100644 --- a/app/Services/Servers/EnvironmentService.php +++ b/app/Services/Servers/EnvironmentService.php @@ -1,9 +1,9 @@ $object) { + foreach (config('panel.environment_variables', []) as $key => $object) { $variables->put( $key, is_callable($object) ? call_user_func($object, $server) : object_get($server, $object) diff --git a/app/Services/Servers/GetUserPermissionsService.php b/app/Services/Servers/GetUserPermissionsService.php index ae91cb33f..8c58c23f6 100644 --- a/app/Services/Servers/GetUserPermissionsService.php +++ b/app/Services/Servers/GetUserPermissionsService.php @@ -1,9 +1,9 @@ subusers()->where('user_id', $user->id)->first(); return $subuserPermissions ? $subuserPermissions->permissions : []; diff --git a/app/Services/Servers/ReinstallServerService.php b/app/Services/Servers/ReinstallServerService.php index 5881d1fc6..475decef4 100644 --- a/app/Services/Servers/ReinstallServerService.php +++ b/app/Services/Servers/ReinstallServerService.php @@ -1,10 +1,10 @@ connection->transaction(function () use ($data, $eggVariableData) { // Create the server and assign any additional allocations to it. $server = $this->createModel($data); @@ -109,9 +109,9 @@ class ServerCreationService /** * Gets an allocation to use for automatic deployment. * - * @throws \Pterodactyl\Exceptions\DisplayException - * @throws \Pterodactyl\Exceptions\Service\Deployment\NoViableAllocationException - * @throws \Pterodactyl\Exceptions\Service\Deployment\NoViableNodeException + * @throws \App\Exceptions\DisplayException + * @throws \App\Exceptions\Service\Deployment\NoViableAllocationException + * @throws \App\Exceptions\Service\Deployment\NoViableNodeException */ private function configureDeployment(array $data, DeploymentObject $deployment): Allocation { @@ -130,13 +130,13 @@ class ServerCreationService /** * Store the server in the database and return the model. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ private function createModel(array $data): Server { $uuid = $this->generateUniqueUuidCombo(); - /** @var \Pterodactyl\Models\Server $model */ + /** @var \App\Models\Server $model */ $model = $this->repository->create([ 'external_id' => Arr::get($data, 'external_id'), 'uuid' => $uuid, diff --git a/app/Services/Servers/ServerDeletionService.php b/app/Services/Servers/ServerDeletionService.php index a83c8feb6..024909b14 100644 --- a/app/Services/Servers/ServerDeletionService.php +++ b/app/Services/Servers/ServerDeletionService.php @@ -1,14 +1,14 @@ force && $exception->getStatusCode() !== Response::HTTP_NOT_FOUND) { throw $exception; @@ -69,8 +69,6 @@ class ServerDeletionService // so that the server itself can be deleted. This will leave it dangling on // the host instance, but we couldn't delete it anyways so not sure how we would // handle this better anyways. - // - // @see https://github.com/pterodactyl/panel/issues/2085 $database->delete(); Log::warning($exception); diff --git a/app/Services/Servers/StartupCommandService.php b/app/Services/Servers/StartupCommandService.php index efdbbc5c4..4703eb075 100644 --- a/app/Services/Servers/StartupCommandService.php +++ b/app/Services/Servers/StartupCommandService.php @@ -1,8 +1,8 @@ fresh(); }); @@ -70,7 +70,7 @@ class StartupModificationService $eggId = Arr::get($data, 'egg_id'); if (is_digit($eggId) && $server->egg_id !== (int) $eggId) { - /** @var \Pterodactyl\Models\Egg $egg */ + /** @var \App\Models\Egg $egg */ $egg = Egg::query()->findOrFail($data['egg_id']); $server = $server->forceFill([ diff --git a/app/Services/Servers/SuspensionService.php b/app/Services/Servers/SuspensionService.php index d11ace22c..196a0a680 100644 --- a/app/Services/Servers/SuspensionService.php +++ b/app/Services/Servers/SuspensionService.php @@ -1,10 +1,10 @@ daemonServerRepository->setServer($server)->sync(); } catch (\Exception $exception) { - // Rollback the server's suspension status if wings fails to sync the server. + // Rollback the server's suspension status if daemon fails to sync the server. $server->update([ 'status' => $isSuspending ? null : Server::STATUS_SUSPENDED, ]); diff --git a/app/Services/Servers/VariableValidatorService.php b/app/Services/Servers/VariableValidatorService.php index a19869265..aebe7ed9f 100644 --- a/app/Services/Servers/VariableValidatorService.php +++ b/app/Services/Servers/VariableValidatorService.php @@ -1,12 +1,12 @@ where('user_editable', true)->where('user_viewable', true); } - /** @var \Pterodactyl\Models\EggVariable[] $variables */ + /** @var \App\Models\EggVariable[] $variables */ $variables = $query->get(); $data = $rules = $customAttributes = []; diff --git a/app/Services/Subusers/SubuserCreationService.php b/app/Services/Subusers/SubuserCreationService.php index c207b0d07..ea602bc70 100644 --- a/app/Services/Subusers/SubuserCreationService.php +++ b/app/Services/Subusers/SubuserCreationService.php @@ -1,17 +1,17 @@ encrypter->decrypt($user->totp_secret); - $isValidToken = $this->google2FA->verifyKey($secret, $token, config()->get('pterodactyl.auth.2fa.window')); + $isValidToken = $this->google2FA->verifyKey($secret, $token, config()->get('panel.auth.2fa.window')); if (!$isValidToken) { throw new TwoFactorAuthenticationTokenInvalid(); diff --git a/app/Services/Users/TwoFactorSetupService.php b/app/Services/Users/TwoFactorSetupService.php index 9ce832215..edc7515a9 100644 --- a/app/Services/Users/TwoFactorSetupService.php +++ b/app/Services/Users/TwoFactorSetupService.php @@ -1,10 +1,10 @@ config->get('pterodactyl.auth.2fa.bytes', 16); ++$i) { + for ($i = 0; $i < $this->config->get('panel.auth.2fa.bytes', 16); ++$i) { $secret .= substr(self::VALID_BASE32_CHARACTERS, random_int(0, 31), 1); } } catch (\Exception $exception) { diff --git a/app/Services/Users/UserCreationService.php b/app/Services/Users/UserCreationService.php index 130ae1a4e..ea2bee488 100644 --- a/app/Services/Users/UserCreationService.php +++ b/app/Services/Users/UserCreationService.php @@ -1,14 +1,14 @@ hasher->make(str_random(30)); } - /** @var \Pterodactyl\Models\User $user */ + /** @var \App\Models\User $user */ $user = $this->repository->create(array_merge($data, [ 'uuid' => Uuid::uuid4()->toString(), ]), true, true); diff --git a/app/Services/Users/UserDeletionService.php b/app/Services/Users/UserDeletionService.php index f7f060cee..0abf4a269 100644 --- a/app/Services/Users/UserDeletionService.php +++ b/app/Services/Users/UserDeletionService.php @@ -1,12 +1,12 @@ $abstract * * @return T * - * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException + * @throws \App\Exceptions\Transformer\InvalidTransformerLevelException * * @noinspection PhpDocSignatureInspection */ diff --git a/app/Transformers/Api/Application/DatabaseHostTransformer.php b/app/Transformers/Api/Application/DatabaseHostTransformer.php index 019fdf261..d01afb43a 100644 --- a/app/Transformers/Api/Application/DatabaseHostTransformer.php +++ b/app/Transformers/Api/Application/DatabaseHostTransformer.php @@ -1,12 +1,12 @@ make(StartupCommandService::class); $user = $this->request->user(); @@ -78,7 +78,7 @@ class ServerTransformer extends BaseClientTransformer /** * Returns the allocations associated with this server. * - * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException + * @throws \App\Exceptions\Transformer\InvalidTransformerLevelException */ public function includeAllocations(Server $server): Collection { @@ -103,7 +103,7 @@ class ServerTransformer extends BaseClientTransformer } /** - * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException + * @throws \App\Exceptions\Transformer\InvalidTransformerLevelException */ public function includeVariables(Server $server): Collection|NullResource { @@ -121,7 +121,7 @@ class ServerTransformer extends BaseClientTransformer /** * Returns the egg associated with this server. * - * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException + * @throws \App\Exceptions\Transformer\InvalidTransformerLevelException */ public function includeEgg(Server $server): Item { @@ -131,7 +131,7 @@ class ServerTransformer extends BaseClientTransformer /** * Returns the subusers associated with this server. * - * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException + * @throws \App\Exceptions\Transformer\InvalidTransformerLevelException */ public function includeSubusers(Server $server): Collection|NullResource { diff --git a/app/Transformers/Api/Client/StatsTransformer.php b/app/Transformers/Api/Client/StatsTransformer.php index 6b323b315..40949d8e8 100644 --- a/app/Transformers/Api/Client/StatsTransformer.php +++ b/app/Transformers/Api/Client/StatsTransformer.php @@ -1,6 +1,6 @@ singleton( Illuminate\Contracts\Http\Kernel::class, - Pterodactyl\Http\Kernel::class + App\Http\Kernel::class ); $app->singleton( Illuminate\Contracts\Console\Kernel::class, - Pterodactyl\Console\Kernel::class + App\Console\Kernel::class ); $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, - Pterodactyl\Exceptions\Handler::class + App\Exceptions\Handler::class ); /* diff --git a/bootstrap/tests.php b/bootstrap/tests.php index 5b5449355..a80e0b27f 100644 --- a/bootstrap/tests.php +++ b/bootstrap/tests.php @@ -9,7 +9,7 @@ require __DIR__ . '/../vendor/autoload.php'; $app = require __DIR__ . '/app.php'; -/** @var \Pterodactyl\Console\Kernel $kernel */ +/** @var \App\Console\Kernel $kernel */ $kernel = $app->make(Kernel::class); /* diff --git a/composer.json b/composer.json index 25595571f..a249f5df8 100644 --- a/composer.json +++ b/composer.json @@ -1,21 +1,6 @@ { - "name": "pterodactyl/panel", + "name": "lancepioch/panel", "description": "The free, open-source game management panel. Supporting Minecraft, Spigot, BungeeCord, and SRCDS servers.", - "license": "MIT", - "authors": [ - { - "name": "Matthew Penner", - "email": "matthew@pterodactyl.io", - "homepage": "https://github.com/matthewpi", - "role": "Lead Developer" - }, - { - "name": "Dane Everitt", - "email": "dane@daneeveritt.com", - "homepage": "https://github.com/DaneEveritt", - "role": "Developer" - } - ], "require": { "php": "^8.1 || ^8.2", "ext-json": "*", @@ -69,14 +54,14 @@ "app/helpers.php" ], "psr-4": { - "Pterodactyl\\": "app/", + "App\\": "app/", "Database\\Factories\\": "database/Factories/", "Database\\Seeders\\": "database/Seeders/" } }, "autoload-dev": { "psr-4": { - "Pterodactyl\\Tests\\": "tests/" + "App\\Tests\\": "tests/" } }, "scripts": { diff --git a/config/app.php b/config/app.php index c3764619a..ea2633f07 100644 --- a/config/app.php +++ b/config/app.php @@ -7,7 +7,7 @@ return [ |-------------------------------------------------------------------------- | Application Version |-------------------------------------------------------------------------- - | This value is set when creating a Pterodactyl release. You should not + | This value is set when creating a Panel release. You should not | change this value if you are not maintaining your own internal versions. */ @@ -23,7 +23,7 @@ return [ | any other location as required by the application or its packages. */ - 'name' => env('APP_NAME', 'Pterodactyl'), + 'name' => env('APP_NAME', 'Panel'), /* |-------------------------------------------------------------------------- @@ -192,16 +192,16 @@ return [ /* * Application Service Providers... */ - Pterodactyl\Providers\ActivityLogServiceProvider::class, - Pterodactyl\Providers\AppServiceProvider::class, - Pterodactyl\Providers\AuthServiceProvider::class, - Pterodactyl\Providers\BackupsServiceProvider::class, - Pterodactyl\Providers\BladeServiceProvider::class, - Pterodactyl\Providers\EventServiceProvider::class, - Pterodactyl\Providers\HashidsServiceProvider::class, - Pterodactyl\Providers\RouteServiceProvider::class, - Pterodactyl\Providers\RepositoryServiceProvider::class, - Pterodactyl\Providers\ViewComposerServiceProvider::class, + App\Providers\ActivityLogServiceProvider::class, + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + App\Providers\BackupsServiceProvider::class, + App\Providers\BladeServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\HashidsServiceProvider::class, + App\Providers\RouteServiceProvider::class, + App\Providers\RepositoryServiceProvider::class, + App\Providers\ViewComposerServiceProvider::class, /* * Additional Dependencies @@ -224,11 +224,11 @@ return [ 'Alert' => Prologue\Alerts\Facades\Alert::class, 'Carbon' => Carbon\Carbon::class, 'JavaScript' => Laracasts\Utilities\JavaScript\JavaScriptFacade::class, - 'Theme' => Pterodactyl\Extensions\Facades\Theme::class, + 'Theme' => App\Extensions\Facades\Theme::class, // Custom Facades - 'Activity' => Pterodactyl\Facades\Activity::class, - 'LogBatch' => Pterodactyl\Facades\LogBatch::class, - 'LogTarget' => Pterodactyl\Facades\LogTarget::class, + 'Activity' => App\Facades\Activity::class, + 'LogBatch' => App\Facades\LogBatch::class, + 'LogTarget' => App\Facades\LogTarget::class, ])->toArray(), ]; diff --git a/config/auth.php b/config/auth.php index 21e6be7b2..88a5e6889 100644 --- a/config/auth.php +++ b/config/auth.php @@ -6,7 +6,7 @@ return [ | Lockout Configuration |-------------------------------------------------------------------------- | - | These options are Pterodactyl specific and allow you to configure how + | These options are Panel specific and allow you to configure how | long a user should be locked out for if they input a username or | password incorrectly. | @@ -81,7 +81,7 @@ return [ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => Pterodactyl\Models\User::class, + 'model' => App\Models\User::class, ], ], diff --git a/config/backups.php b/config/backups.php index f466ea4d5..ef31e176d 100644 --- a/config/backups.php +++ b/config/backups.php @@ -1,14 +1,14 @@ env('APP_BACKUP_DRIVER', Backup::ADAPTER_WINGS), + 'default' => env('APP_BACKUP_DRIVER', Backup::ADAPTER_DAEMON), - // This value is used to determine the lifespan of UploadPart presigned urls that wings + // This value is used to determine the lifespan of UploadPart presigned urls that daemon // uses to upload backups to S3 storage. Value is in minutes, so this would default to an hour. 'presigned_url_lifespan' => env('BACKUP_PRESIGNED_URL_LIFESPAN', 60), @@ -32,10 +32,10 @@ return [ ], 'disks' => [ - // There is no configuration for the local disk for Wings. That configuration + // There is no configuration for the local disk for Daemon. That configuration // is determined by the Daemon configuration, and not the Panel. - 'wings' => [ - 'adapter' => Backup::ADAPTER_WINGS, + 'daemon' => [ + 'adapter' => Backup::ADAPTER_DAEMON, ], // Configuration for storing backups in Amazon S3. This uses the same credentials diff --git a/config/cache.php b/config/cache.php index 14b00b51b..156c1ae9d 100644 --- a/config/cache.php +++ b/config/cache.php @@ -99,5 +99,5 @@ return [ | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'pterodactyl'), '_') . '_cache_'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'panel'), '_') . '_cache_'), ]; diff --git a/config/database.php b/config/database.php index b3a460ba2..0de0475dd 100644 --- a/config/database.php +++ b/config/database.php @@ -1,7 +1,7 @@ env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'panel'), - 'username' => env('DB_USERNAME', 'pterodactyl'), + 'username' => env('DB_USERNAME', 'panel'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', @@ -88,7 +88,7 @@ return [ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'pterodactyl'), '_') . '_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'panel'), '_') . '_database_'), ], 'default' => [ diff --git a/config/javascript.php b/config/javascript.php index 57504395d..537315d16 100644 --- a/config/javascript.php +++ b/config/javascript.php @@ -26,5 +26,5 @@ return [ | That way, you can access vars, like "SomeNamespace.someVariable." | */ - 'js_namespace' => 'Pterodactyl', + 'js_namespace' => 'Panel', ]; diff --git a/config/mail.php b/config/mail.php index 71c693cff..f2741ab52 100644 --- a/config/mail.php +++ b/config/mail.php @@ -92,7 +92,7 @@ return [ 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', env('MAIL_FROM', 'hello@example.com')), - 'name' => env('MAIL_FROM_NAME', 'Pterodactyl Panel'), + 'name' => env('MAIL_FROM_NAME', 'Panel'), ], /* diff --git a/config/pterodactyl.php b/config/panel.php similarity index 83% rename from config/pterodactyl.php rename to config/panel.php index 43c7c57be..bbec39ee8 100644 --- a/config/pterodactyl.php +++ b/config/panel.php @@ -20,7 +20,7 @@ return [ | | Each panel installation is assigned a unique UUID to identify the | author of custom services, and make upgrades easier by identifying - | standard Pterodactyl shipped services. + | standard Panel shipped services. */ 'service' => [ @@ -92,7 +92,7 @@ return [ 'cdn' => [ 'cache_time' => 60, - 'url' => 'https://cdn.pterodactyl.io/releases/latest.json', + 'url' => 'https://cdn.example.com/releases/latest.json', ], /* @@ -105,19 +105,19 @@ return [ 'client_features' => [ 'databases' => [ - 'enabled' => env('PTERODACTYL_CLIENT_DATABASES_ENABLED', true), - 'allow_random' => env('PTERODACTYL_CLIENT_DATABASES_ALLOW_RANDOM', true), + 'enabled' => env('PANEL_CLIENT_DATABASES_ENABLED', true), + 'allow_random' => env('PANEL_CLIENT_DATABASES_ALLOW_RANDOM', true), ], 'schedules' => [ // The total number of tasks that can exist for any given schedule at once. - 'per_schedule_task_limit' => env('PTERODACTYL_PER_SCHEDULE_TASK_LIMIT', 10), + 'per_schedule_task_limit' => env('PANEL_PER_SCHEDULE_TASK_LIMIT', 10), ], 'allocations' => [ - 'enabled' => env('PTERODACTYL_CLIENT_ALLOCATIONS_ENABLED', false), - 'range_start' => env('PTERODACTYL_CLIENT_ALLOCATIONS_RANGE_START'), - 'range_end' => env('PTERODACTYL_CLIENT_ALLOCATIONS_RANGE_END'), + 'enabled' => env('PANEL_CLIENT_ALLOCATIONS_ENABLED', false), + 'range_start' => env('PANEL_CLIENT_ALLOCATIONS_RANGE_START'), + 'range_end' => env('PANEL_CLIENT_ALLOCATIONS_RANGE_END'), ], ], @@ -130,7 +130,7 @@ return [ */ 'files' => [ - 'max_edit_size' => env('PTERODACTYL_FILES_MAX_EDIT_SIZE', 1024 * 1024 * 4), + 'max_edit_size' => env('PANEL_FILES_MAX_EDIT_SIZE', 1024 * 1024 * 4), ], /* @@ -160,7 +160,7 @@ return [ */ 'assets' => [ - 'use_hash' => env('PTERODACTYL_USE_ASSET_HASH', false), + 'use_hash' => env('PANEL_USE_ASSET_HASH', false), ], /* @@ -173,9 +173,9 @@ return [ 'email' => [ // Should an email be sent to a server owner once their server has completed it's first install process? - 'send_install_notification' => env('PTERODACTYL_SEND_INSTALL_NOTIFICATION', true), + 'send_install_notification' => env('PANEL_SEND_INSTALL_NOTIFICATION', true), // Should an email be sent to a server owner whenever their server is reinstalled? - 'send_reinstall_notification' => env('PTERODACTYL_SEND_REINSTALL_NOTIFICATION', true), + 'send_reinstall_notification' => env('PANEL_SEND_REINSTALL_NOTIFICATION', true), ], /* @@ -183,10 +183,10 @@ return [ | Telemetry Settings |-------------------------------------------------------------------------- | - | This section controls the telemetry sent by Pterodactyl. + | This section controls the telemetry. */ 'telemetry' => [ - 'enabled' => env('PTERODACTYL_TELEMETRY_ENABLED', true), + 'enabled' => env('PANEL_TELEMETRY_ENABLED', true), ], ]; diff --git a/config/sanctum.php b/config/sanctum.php index 21129a888..0ee715a6c 100644 --- a/config/sanctum.php +++ b/config/sanctum.php @@ -57,7 +57,7 @@ return [ */ 'middleware' => [ - 'verify_csrf_token' => Pterodactyl\Http\Middleware\VerifyCsrfToken::class, - 'encrypt_cookies' => Pterodactyl\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, ], ]; diff --git a/config/session.php b/config/session.php index d8fb98a09..a8b115a31 100644 --- a/config/session.php +++ b/config/session.php @@ -127,7 +127,7 @@ return [ 'cookie' => env( 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'pterodactyl'), '_') . '_session' + Str::slug(env('APP_NAME', 'panel'), '_') . '_session' ), /* diff --git a/database/Factories/AllocationFactory.php b/database/Factories/AllocationFactory.php index 4a5eb70c0..23e3f8b0c 100644 --- a/database/Factories/AllocationFactory.php +++ b/database/Factories/AllocationFactory.php @@ -2,8 +2,8 @@ namespace Database\Factories; -use Pterodactyl\Models\Server; -use Pterodactyl\Models\Allocation; +use App\Models\Server; +use App\Models\Allocation; use Illuminate\Database\Eloquent\Factories\Factory; class AllocationFactory extends Factory diff --git a/database/Factories/ApiKeyFactory.php b/database/Factories/ApiKeyFactory.php index 40c78ce26..bfcb4b98b 100644 --- a/database/Factories/ApiKeyFactory.php +++ b/database/Factories/ApiKeyFactory.php @@ -4,7 +4,7 @@ namespace Database\Factories; use Carbon\Carbon; use Illuminate\Support\Str; -use Pterodactyl\Models\ApiKey; +use App\Models\ApiKey; use Illuminate\Database\Eloquent\Factories\Factory; class ApiKeyFactory extends Factory diff --git a/database/Factories/BackupFactory.php b/database/Factories/BackupFactory.php index 4333ee34e..45609b361 100644 --- a/database/Factories/BackupFactory.php +++ b/database/Factories/BackupFactory.php @@ -4,7 +4,7 @@ namespace Database\Factories; use Ramsey\Uuid\Uuid; use Carbon\CarbonImmutable; -use Pterodactyl\Models\Backup; +use App\Models\Backup; use Illuminate\Database\Eloquent\Factories\Factory; class BackupFactory extends Factory @@ -24,7 +24,7 @@ class BackupFactory extends Factory return [ 'uuid' => Uuid::uuid4()->toString(), 'name' => $this->faker->sentence, - 'disk' => Backup::ADAPTER_WINGS, + 'disk' => Backup::ADAPTER_DAEMON, 'is_successful' => true, 'created_at' => CarbonImmutable::now(), 'completed_at' => CarbonImmutable::now(), diff --git a/database/Factories/DatabaseFactory.php b/database/Factories/DatabaseFactory.php index d3c6f2a57..963c52add 100644 --- a/database/Factories/DatabaseFactory.php +++ b/database/Factories/DatabaseFactory.php @@ -4,7 +4,7 @@ namespace Database\Factories; use Carbon\Carbon; use Illuminate\Support\Str; -use Pterodactyl\Models\Database; +use App\Models\Database; use Illuminate\Database\Eloquent\Factories\Factory; class DatabaseFactory extends Factory diff --git a/database/Factories/DatabaseHostFactory.php b/database/Factories/DatabaseHostFactory.php index b65e856ea..aedfd147e 100644 --- a/database/Factories/DatabaseHostFactory.php +++ b/database/Factories/DatabaseHostFactory.php @@ -2,7 +2,7 @@ namespace Database\Factories; -use Pterodactyl\Models\DatabaseHost; +use App\Models\DatabaseHost; use Illuminate\Support\Facades\Crypt; use Illuminate\Database\Eloquent\Factories\Factory; diff --git a/database/Factories/EggFactory.php b/database/Factories/EggFactory.php index 4085b70e5..5daa249d9 100644 --- a/database/Factories/EggFactory.php +++ b/database/Factories/EggFactory.php @@ -3,7 +3,7 @@ namespace Database\Factories; use Ramsey\Uuid\Uuid; -use Pterodactyl\Models\Egg; +use App\Models\Egg; use Illuminate\Database\Eloquent\Factories\Factory; class EggFactory extends Factory diff --git a/database/Factories/EggVariableFactory.php b/database/Factories/EggVariableFactory.php index c2bce816b..3fa9c2e99 100644 --- a/database/Factories/EggVariableFactory.php +++ b/database/Factories/EggVariableFactory.php @@ -3,7 +3,7 @@ namespace Database\Factories; use Illuminate\Support\Str; -use Pterodactyl\Models\EggVariable; +use App\Models\EggVariable; use Illuminate\Database\Eloquent\Factories\Factory; class EggVariableFactory extends Factory diff --git a/database/Factories/LocationFactory.php b/database/Factories/LocationFactory.php index 9e0af5dca..e835054b6 100644 --- a/database/Factories/LocationFactory.php +++ b/database/Factories/LocationFactory.php @@ -3,7 +3,7 @@ namespace Database\Factories; use Illuminate\Support\Str; -use Pterodactyl\Models\Location; +use App\Models\Location; use Illuminate\Database\Eloquent\Factories\Factory; class LocationFactory extends Factory diff --git a/database/Factories/NestFactory.php b/database/Factories/NestFactory.php index 9a5755ba1..896b920ae 100644 --- a/database/Factories/NestFactory.php +++ b/database/Factories/NestFactory.php @@ -3,7 +3,7 @@ namespace Database\Factories; use Ramsey\Uuid\Uuid; -use Pterodactyl\Models\Nest; +use App\Models\Nest; use Illuminate\Database\Eloquent\Factories\Factory; class NestFactory extends Factory diff --git a/database/Factories/NodeFactory.php b/database/Factories/NodeFactory.php index 1dbd5d9f5..1f6313fad 100644 --- a/database/Factories/NodeFactory.php +++ b/database/Factories/NodeFactory.php @@ -4,7 +4,7 @@ namespace Database\Factories; use Ramsey\Uuid\Uuid; use Illuminate\Support\Str; -use Pterodactyl\Models\Node; +use App\Models\Node; use Illuminate\Support\Facades\Crypt; use Illuminate\Database\Eloquent\Factories\Factory; @@ -38,7 +38,7 @@ class NodeFactory extends Factory 'daemon_token' => Crypt::encrypt(Str::random(Node::DAEMON_TOKEN_LENGTH)), 'daemonListen' => 8080, 'daemonSFTP' => 2022, - 'daemonBase' => '/var/lib/pterodactyl/volumes', + 'daemonBase' => '/var/lib/panel/volumes', ]; } } diff --git a/database/Factories/ScheduleFactory.php b/database/Factories/ScheduleFactory.php index 0a28f4c41..9b21f4fb5 100644 --- a/database/Factories/ScheduleFactory.php +++ b/database/Factories/ScheduleFactory.php @@ -2,7 +2,7 @@ namespace Database\Factories; -use Pterodactyl\Models\Schedule; +use App\Models\Schedule; use Illuminate\Database\Eloquent\Factories\Factory; class ScheduleFactory extends Factory diff --git a/database/Factories/ServerFactory.php b/database/Factories/ServerFactory.php index d89bd6a56..de8043270 100644 --- a/database/Factories/ServerFactory.php +++ b/database/Factories/ServerFactory.php @@ -5,7 +5,7 @@ namespace Database\Factories; use Carbon\Carbon; use Ramsey\Uuid\Uuid; use Illuminate\Support\Str; -use Pterodactyl\Models\Server; +use App\Models\Server; use Illuminate\Database\Eloquent\Factories\Factory; class ServerFactory extends Factory diff --git a/database/Factories/SubuserFactory.php b/database/Factories/SubuserFactory.php index 7db93d4d1..0726580f5 100644 --- a/database/Factories/SubuserFactory.php +++ b/database/Factories/SubuserFactory.php @@ -2,8 +2,8 @@ namespace Database\Factories; -use Pterodactyl\Models\Subuser; -use Pterodactyl\Models\Permission; +use App\Models\Subuser; +use App\Models\Permission; use Illuminate\Database\Eloquent\Factories\Factory; class SubuserFactory extends Factory diff --git a/database/Factories/UserFactory.php b/database/Factories/UserFactory.php index 977b03284..a1a33092d 100644 --- a/database/Factories/UserFactory.php +++ b/database/Factories/UserFactory.php @@ -5,7 +5,7 @@ namespace Database\Factories; use Carbon\Carbon; use Ramsey\Uuid\Uuid; use Illuminate\Support\Str; -use Pterodactyl\Models\User; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; class UserFactory extends Factory diff --git a/database/Seeders/EggSeeder.php b/database/Seeders/EggSeeder.php index 234e7b5a4..9553bab76 100644 --- a/database/Seeders/EggSeeder.php +++ b/database/Seeders/EggSeeder.php @@ -2,12 +2,12 @@ namespace Database\Seeders; -use Pterodactyl\Models\Egg; -use Pterodactyl\Models\Nest; +use App\Models\Egg; +use App\Models\Nest; use Illuminate\Database\Seeder; use Illuminate\Http\UploadedFile; -use Pterodactyl\Services\Eggs\Sharing\EggImporterService; -use Pterodactyl\Services\Eggs\Sharing\EggUpdateImporterService; +use App\Services\Eggs\Sharing\EggImporterService; +use App\Services\Eggs\Sharing\EggUpdateImporterService; class EggSeeder extends Seeder { @@ -44,7 +44,7 @@ class EggSeeder extends Seeder foreach (static::$import as $nest) { /* @noinspection PhpParamsInspection */ $this->parseEggFiles( - Nest::query()->where('author', 'support@pterodactyl.io')->where('name', $nest)->firstOrFail() + Nest::query()->where('author', 'panel@example.com')->where('name', $nest)->firstOrFail() ); } } diff --git a/database/Seeders/NestSeeder.php b/database/Seeders/NestSeeder.php index eae7ae21b..ec88d8580 100644 --- a/database/Seeders/NestSeeder.php +++ b/database/Seeders/NestSeeder.php @@ -3,18 +3,18 @@ namespace Database\Seeders; use Illuminate\Database\Seeder; -use Pterodactyl\Services\Nests\NestCreationService; -use Pterodactyl\Contracts\Repository\NestRepositoryInterface; +use App\Services\Nests\NestCreationService; +use App\Contracts\Repository\NestRepositoryInterface; class NestSeeder extends Seeder { /** - * @var \Pterodactyl\Services\Nests\NestCreationService + * @var \App\Services\Nests\NestCreationService */ private $creationService; /** - * @var \Pterodactyl\Contracts\Repository\NestRepositoryInterface + * @var \App\Contracts\Repository\NestRepositoryInterface */ private $repository; @@ -32,12 +32,12 @@ class NestSeeder extends Seeder /** * Run the seeder to add missing nests to the Panel. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ public function run() { $items = $this->repository->findWhere([ - 'author' => 'support@pterodactyl.io', + 'author' => 'panel@example.com', ])->keyBy('name')->toArray(); $this->createMinecraftNest(array_get($items, 'Minecraft')); @@ -49,7 +49,7 @@ class NestSeeder extends Seeder /** * Create the Minecraft nest to be used later on. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ private function createMinecraftNest(array $nest = null) { @@ -57,14 +57,14 @@ class NestSeeder extends Seeder $this->creationService->handle([ 'name' => 'Minecraft', 'description' => 'Minecraft - the classic game from Mojang. With support for Vanilla MC, Spigot, and many others!', - ], 'support@pterodactyl.io'); + ], 'panel@example.com'); } } /** * Create the Source Engine Games nest to be used later on. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ private function createSourceEngineNest(array $nest = null) { @@ -72,14 +72,14 @@ class NestSeeder extends Seeder $this->creationService->handle([ 'name' => 'Source Engine', 'description' => 'Includes support for most Source Dedicated Server games.', - ], 'support@pterodactyl.io'); + ], 'panel@example.com'); } } /** * Create the Voice Servers nest to be used later on. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ private function createVoiceServersNest(array $nest = null) { @@ -87,14 +87,14 @@ class NestSeeder extends Seeder $this->creationService->handle([ 'name' => 'Voice Servers', 'description' => 'Voice servers such as Mumble and Teamspeak 3.', - ], 'support@pterodactyl.io'); + ], 'panel@example.com'); } } /** * Create the Rust nest to be used later on. * - * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \App\Exceptions\Model\DataValidationException */ private function createRustNest(array $nest = null) { @@ -102,7 +102,7 @@ class NestSeeder extends Seeder $this->creationService->handle([ 'name' => 'Rust', 'description' => 'Rust - A game where you must fight to survive.', - ], 'support@pterodactyl.io'); + ], 'panel@example.com'); } } } diff --git a/database/Seeders/eggs/minecraft/egg-bungeecord.json b/database/Seeders/eggs/minecraft/egg-bungeecord.json index 0a9959692..52e70cada 100644 --- a/database/Seeders/eggs/minecraft/egg-bungeecord.json +++ b/database/Seeders/eggs/minecraft/egg-bungeecord.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-06-17T08:10:44+03:00", "name": "Bungeecord", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "For a long time, Minecraft server owners have had a dream that encompasses a free, easy, and reliable way to connect multiple Minecraft servers together. BungeeCord is the answer to said dream. Whether you are a small server wishing to string multiple game-modes together, or the owner of the ShotBow Network, BungeeCord is the ideal solution for you. With the help of BungeeCord, you will be able to unlock your community's full potential.", "features": [ "eula", @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 17": "ghcr.io\/App\/yolks:java_17", + "Java 16": "ghcr.io\/App\/yolks:java_16", + "Java 11": "ghcr.io\/App\/yolks:java_11", + "Java 8": "ghcr.io\/App\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Bungeecord Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${BUNGEE_VERSION}\" ] || [ \"${BUNGEE_VERSION}\" == \"latest\" ]; then\r\n BUNGEE_VERSION=\"lastStableBuild\"\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} https:\/\/ci.md-5.net\/job\/BungeeCord\/${BUNGEE_VERSION}\/artifact\/bootstrap\/target\/BungeeCord.jar", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-forge-minecraft.json b/database/Seeders/eggs/minecraft/egg-forge-minecraft.json index 189cafad9..824ef1708 100644 --- a/database/Seeders/eggs/minecraft/egg-forge-minecraft.json +++ b/database/Seeders/eggs/minecraft/egg-forge-minecraft.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-11-06T06:33:01-05:00", "name": "Forge Minecraft", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Minecraft Forge Server. Minecraft Forge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other.", "features": [ "eula", @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 17": "ghcr.io\/App\/yolks:java_17", + "Java 16": "ghcr.io\/App\/yolks:java_16", + "Java 11": "ghcr.io\/App\/yolks:java_11", + "Java 8": "ghcr.io\/App\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )", @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq\r\n\r\nif [[ ! -d \/mnt\/server ]]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Remove spaces from the version number to avoid issues with curl\r\nFORGE_VERSION=\"$(echo \"$FORGE_VERSION\" | tr -d ' ')\"\r\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\r\n\r\nif [[ ! -z ${FORGE_VERSION} ]]; then\r\n DOWNLOAD_LINK=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/${FORGE_VERSION}\/forge-${FORGE_VERSION}\r\n FORGE_JAR=forge-${FORGE_VERSION}*.jar\r\nelse\r\n JSON_DATA=$(curl -sSL https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/promotions_slim.json)\r\n\r\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\r\n echo -e \"getting latest version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"latest\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n BUILD_TYPE=latest\r\n fi\r\n\r\n if [[ \"${BUILD_TYPE}\" != \"recommended\" ]] && [[ \"${BUILD_TYPE}\" != \"latest\" ]]; then\r\n BUILD_TYPE=recommended\r\n fi\r\n\r\n echo -e \"minecraft version: ${MC_VERSION}\"\r\n echo -e \"build type: ${BUILD_TYPE}\"\r\n\r\n ## some variables for getting versions and things\r\n FILE_SITE=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n ## locating the forge version\r\n if [[ \"${VERSION_KEY}\" == \"\" ]] && [[ \"${BUILD_TYPE}\" == \"recommended\" ]]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"latest\"))')\r\n fi\r\n\r\n ## Error if the mc version set wasn't valid.\r\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\r\n echo -e \"The install failed because there is no valid version of forge for the version of minecraft selected.\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]] || [[ \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\r\n fi\r\n else\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar\r\n fi\r\nfi\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\n\r\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid. Exiting now\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link provided. Exiting now\"\r\n exit 3\r\nfi\r\n\r\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [[ ! -f .\/installer.jar ]]; then\r\n echo \"!!! Error downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\nfunction unix_args {\r\n echo -e \"Detected Forge 1.17 or newer version. Setting up forge unix args.\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n}\r\n\r\n# Delete args to support downgrading\/upgrading\r\nrm -rf libraries\/net\/minecraftforge\/forge\r\nrm unix_args.txt\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer || { echo -e \"\\nInstall failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\\nShould you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Wings config or specify exact allocated memory in the server Build Configuration instead of 0! \\nOtherwise, the Forge installer will not have enough memory.\"; exit 4; }\r\n\r\n# Check if we need a symlink for 1.17+ Forge JPMS args\r\nif [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n unix_args\r\n\r\n# Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives\r\nelif [[ $MC_VERSION == \"latest\" && $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n unix_args\r\nelse\r\n # For versions below 1.17 that ship with jar\r\n mv $FORGE_JAR $SERVER_JARFILE\r\nfi\r\n\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar\r\necho -e \"Installation process is completed\"", + "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq\r\n\r\nif [[ ! -d \/mnt\/server ]]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Remove spaces from the version number to avoid issues with curl\r\nFORGE_VERSION=\"$(echo \"$FORGE_VERSION\" | tr -d ' ')\"\r\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\r\n\r\nif [[ ! -z ${FORGE_VERSION} ]]; then\r\n DOWNLOAD_LINK=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/${FORGE_VERSION}\/forge-${FORGE_VERSION}\r\n FORGE_JAR=forge-${FORGE_VERSION}*.jar\r\nelse\r\n JSON_DATA=$(curl -sSL https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/promotions_slim.json)\r\n\r\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\r\n echo -e \"getting latest version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"latest\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n BUILD_TYPE=latest\r\n fi\r\n\r\n if [[ \"${BUILD_TYPE}\" != \"recommended\" ]] && [[ \"${BUILD_TYPE}\" != \"latest\" ]]; then\r\n BUILD_TYPE=recommended\r\n fi\r\n\r\n echo -e \"minecraft version: ${MC_VERSION}\"\r\n echo -e \"build type: ${BUILD_TYPE}\"\r\n\r\n ## some variables for getting versions and things\r\n FILE_SITE=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n ## locating the forge version\r\n if [[ \"${VERSION_KEY}\" == \"\" ]] && [[ \"${BUILD_TYPE}\" == \"recommended\" ]]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"latest\"))')\r\n fi\r\n\r\n ## Error if the mc version set wasn't valid.\r\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\r\n echo -e \"The install failed because there is no valid version of forge for the version of minecraft selected.\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]] || [[ \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\r\n fi\r\n else\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar\r\n fi\r\nfi\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\n\r\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid. Exiting now\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link provided. Exiting now\"\r\n exit 3\r\nfi\r\n\r\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [[ ! -f .\/installer.jar ]]; then\r\n echo \"!!! Error downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\nfunction unix_args {\r\n echo -e \"Detected Forge 1.17 or newer version. Setting up forge unix args.\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n}\r\n\r\n# Delete args to support downgrading\/upgrading\r\nrm -rf libraries\/net\/minecraftforge\/forge\r\nrm unix_args.txt\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer || { echo -e \"\\nInstall failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\\nShould you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Daemon config or specify exact allocated memory in the server Build Configuration instead of 0! \\nOtherwise, the Forge installer will not have enough memory.\"; exit 4; }\r\n\r\n# Check if we need a symlink for 1.17+ Forge JPMS args\r\nif [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n unix_args\r\n\r\n# Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives\r\nelif [[ $MC_VERSION == \"latest\" && $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n unix_args\r\nelse\r\n # For versions below 1.17 that ship with jar\r\n mv $FORGE_JAR $SERVER_JARFILE\r\nfi\r\n\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar\r\necho -e \"Installation process is completed\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } diff --git a/database/Seeders/eggs/minecraft/egg-paper.json b/database/Seeders/eggs/minecraft/egg-paper.json index 8f0011110..5cd95c2e9 100644 --- a/database/Seeders/eggs/minecraft/egg-paper.json +++ b/database/Seeders/eggs/minecraft/egg-paper.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-06-17T08:11:30+03:00", "name": "Paper", - "author": "parker@pterodactyl.io", + "author": "parker@example.com", "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.", "features": [ "eula", @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 17": "ghcr.io\/App\/yolks:java_17", + "Java 16": "ghcr.io\/App\/yolks:java_16", + "Java 11": "ghcr.io\/App\/yolks:java_11", + "Java 8": "ghcr.io\/App\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json b/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json index 61a531ae3..58f057a07 100644 --- a/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json +++ b/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-06-17T08:11:42+03:00", "name": "Sponge (SpongeVanilla)", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "SpongeVanilla is the SpongeAPI implementation for Vanilla Minecraft.", "features": [ "eula", @@ -14,9 +14,9 @@ "pid_limit" ], "docker_images": { - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 16": "ghcr.io\/App\/yolks:java_16", + "Java 11": "ghcr.io\/App\/yolks:java_11", + "Java 8": "ghcr.io\/App\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -29,7 +29,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Sponge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sSL \"https:\/\/repo.spongepowered.org\/maven\/org\/spongepowered\/spongevanilla\/${SPONGE_VERSION}\/spongevanilla-${SPONGE_VERSION}.jar\" -o ${SERVER_JARFILE}", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json b/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json index 19964bccb..7a8e65e67 100644 --- a/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json +++ b/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-06-17T08:11:58+03:00", "name": "Vanilla Minecraft", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Minecraft is a game about placing blocks and going on adventures. Explore randomly generated worlds and build amazing things from the simplest of homes to the grandest of castles. Play in Creative Mode with unlimited resources or mine deep in Survival Mode, crafting weapons and armor to fend off dangerous mobs. Do all this alone or with friends.", "features": [ "eula", @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 17": "ghcr.io\/App\/yolks:java_17", + "Java 16": "ghcr.io\/App\/yolks:java_16", + "Java 11": "ghcr.io\/App\/yolks:java_11", + "Java 8": "ghcr.io\/App\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Vanilla MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nLATEST_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.release'`\r\nLATEST_SNAPSHOT_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.snapshot'`\r\n\r\necho -e \"latest version is $LATEST_VERSION\"\r\necho -e \"latest snapshot is $LATEST_SNAPSHOT_VERSION\"\r\n\r\nif [ -z \"$VANILLA_VERSION\" ] || [ \"$VANILLA_VERSION\" == \"latest\" ]; then\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $LATEST_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nelif [ \"$VANILLA_VERSION\" == \"snapshot\" ]; then\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $LATEST_SNAPSHOT_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nelse\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $VANILLA_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nfi\r\n\r\nDOWNLOAD_URL=$(curl ${MANIFEST_URL} | jq .downloads.server | jq -r '. | .url')\r\n\r\necho -e \"running: curl -o ${SERVER_JARFILE} $DOWNLOAD_URL\"\r\ncurl -o ${SERVER_JARFILE} $DOWNLOAD_URL\r\n\r\necho -e \"Install Complete\"", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/rust/egg-rust.json b/database/Seeders/eggs/rust/egg-rust.json index 35f543c75..2f6141020 100644 --- a/database/Seeders/eggs/rust/egg-rust.json +++ b/database/Seeders/eggs/rust/egg-rust.json @@ -1,18 +1,18 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2023-03-25T13:37:00+00:00", "name": "Rust", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", "features": [ "steam_disk_space" ], "docker_images": { - "ghcr.io\/pterodactyl\/games:rust": "ghcr.io\/pterodactyl\/games:rust" + "ghcr.io\/App\/games:rust": "ghcr.io\/App\/games:rust" }, "file_denylist": [], "startup": ".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.logoimage \\\"{{SERVER_LOGO}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} +app.port {{APP_PORT}} $( [ -z ${MAP_URL} ] && printf %s \"+server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"{{WORLD_SEED}}\\\"\" || printf %s \"+server.levelurl {{MAP_URL}}\" ) {{ADDITIONAL_ARGS}}", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nSRCDS_APPID=258550\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, @@ -64,7 +64,7 @@ "name": "Description", "description": "The description under your server title. Commonly used for rules & info. Use \\n for newlines.", "env_variable": "DESCRIPTION", - "default_value": "Powered by Pterodactyl", + "default_value": "Powered by Panel", "user_viewable": true, "user_editable": true, "rules": "required|string", @@ -74,7 +74,7 @@ "name": "URL", "description": "The URL for your server. This is what comes up when clicking the \"Visit Website\" button.", "env_variable": "SERVER_URL", - "default_value": "http:\/\/pterodactyl.io", + "default_value": "http:\/\/example.com", "user_viewable": true, "user_editable": true, "rules": "nullable|url", diff --git a/database/Seeders/eggs/source-engine/egg-ark--survival-evolved.json b/database/Seeders/eggs/source-engine/egg-ark--survival-evolved.json deleted file mode 100644 index 660ebd14e..000000000 --- a/database/Seeders/eggs/source-engine/egg-ark--survival-evolved.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v1", - "update_url": null - }, - "exported_at": "2022-01-18T07:01:38-05:00", - "name": "Ark: Survival Evolved", - "author": "dev@shepper.fr", - "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK", - "features": [ - "steam_disk_space" - ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_source" - ], - "file_denylist": [], - "startup": "rmv() { echo -e \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c saveworld && rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c DoExit; }; trap rmv 15; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server {{ARGS}} -log & until echo \"waiting for rcon connection...\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD}; do sleep 5; done", - "config": { - "files": "{}", - "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", - "logs": "{}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## create a symbolic link for loading mods\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\ncd \/mnt\/server", - "container": "ghcr.io\/pterodactyl\/installers:debian", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Server Password", - "description": "If specified, players must provide this password to join the server.", - "env_variable": "ARK_PASSWORD", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|alpha_dash|between:1,100" - }, - { - "name": "Admin Password", - "description": "If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.", - "env_variable": "ARK_ADMIN_PASSWORD", - "default_value": "PleaseChangeMe", - "user_viewable": true, - "user_editable": true, - "rules": "required|alpha_dash|between:1,100" - }, - { - "name": "Server Map", - "description": "Available Maps: TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction, Valguero_P, Genesis, CrystalIsles, Gen2, LostIsland, Fjordur", - "env_variable": "SERVER_MAP", - "default_value": "TheIsland", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20" - }, - { - "name": "Server Name", - "description": "ARK server name", - "env_variable": "SESSION_NAME", - "default_value": "A Pterodactyl Hosted ARK Server", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:128" - }, - { - "name": "Rcon Port", - "description": "ARK rcon port used by rcon tools.", - "env_variable": "RCON_PORT", - "default_value": "27020", - "user_viewable": true, - "user_editable": true, - "rules": "required|numeric" - }, - { - "name": "Query Port", - "description": "ARK query port used by steam server browser and ark client server browser.", - "env_variable": "QUERY_PORT", - "default_value": "27015", - "user_viewable": true, - "user_editable": true, - "rules": "required|numeric" - }, - { - "name": "Auto-update server", - "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 0. Set to 1 to update", - "env_variable": "AUTO_UPDATE", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean" - }, - { - "name": "Battle Eye", - "description": "Enable BattleEye\r\n\r\n0 to disable\r\n1 to enable\r\n\r\ndefault=\"1\"", - "env_variable": "BATTLE_EYE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean" - }, - { - "name": "App ID", - "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.", - "env_variable": "SRCDS_APPID", - "default_value": "376030", - "user_viewable": true, - "user_editable": false, - "rules": "nullable|numeric" - }, - { - "name": "Additional Arguments", - "description": "Specify additional launch parameters such as -crossplay. You must include a dash - and separate each parameter with space: -crossplay -exclusivejoin", - "env_variable": "ARGS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - } - ] -} diff --git a/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json b/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json index 7c9a9779f..7e8d6e085 100644 --- a/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json +++ b/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json @@ -1,19 +1,19 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2022-01-18T07:01:54-05:00", "name": "Counter-Strike: Global Offensive", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Counter-Strike: Global Offensive is a multiplayer first-person shooter video game developed by Hidden Path Entertainment and Valve Corporation.", "features": [ "gsl_token", "steam_disk_space" ], "images": [ - "ghcr.io\/pterodactyl\/games:source" + "ghcr.io\/App\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game csgo -console -port {{SERVER_PORT}} +ip 0.0.0.0 +map {{SRCDS_MAP}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json b/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json index 6c93175f5..0d412d6b7 100644 --- a/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json +++ b/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json @@ -1,18 +1,18 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2022-01-18T07:03:08-05:00", "name": "Custom Source Engine Game", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "This option allows modifying the startup arguments and other details to run a custom SRCDS based game on the panel.", "features": [ "steam_disk_space" ], "images": [ - "ghcr.io\/pterodactyl\/games:source" + "ghcr.io\/App\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-garrys-mod.json b/database/Seeders/eggs/source-engine/egg-garrys-mod.json index 32829174d..ed59662bc 100644 --- a/database/Seeders/eggs/source-engine/egg-garrys-mod.json +++ b/database/Seeders/eggs/source-engine/egg-garrys-mod.json @@ -1,19 +1,19 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2022-01-18T07:04:20-05:00", "name": "Garrys Mod", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Garrys Mod, is a sandbox physics game created by Garry Newman, and developed by his company, Facepunch Studios.", "features": [ "gsl_token", "steam_disk_space" ], "images": [ - "ghcr.io\/pterodactyl\/games:source" + "ghcr.io\/App\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game garrysmod -console -port {{SERVER_PORT}} +ip 0.0.0.0 +host_workshop_collection {{WORKSHOP_ID}} +map {{SRCDS_MAP}} +gamemode {{GAMEMODE}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}} +maxplayers {{MAX_PLAYERS}} -tickrate {{TICKRATE}} $( [ \"$LUA_REFRESH\" == \"1\" ] || printf %s '-disableluarefresh' )", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# Creating needed default files for the game\r\ncd \/mnt\/server\/garrysmod\/lua\/autorun\/server\r\necho '\r\n-- Docs: https:\/\/wiki.garrysmod.com\/page\/resource\/AddWorkshop\r\n-- Place the ID of the workshop addon you want to be downloaded to people who join your server, not the collection ID\r\n-- Use https:\/\/beta.configcreator.com\/create\/gmod\/resources.lua to easily create a list based on your collection ID\r\n\r\nresource.AddWorkshop( \"\" )\r\n' > workshop.lua\r\n\r\ncd \/mnt\/server\/garrysmod\/cfg\r\necho '\r\n\/\/ Please do not set RCon in here, use the startup parameters.\r\n\r\nhostname\t\t\"New Gmod Server\"\r\nsv_password\t\t\"\"\r\nsv_loadingurl \"\"\r\nsv_downloadurl \"\"\r\n\r\n\/\/ Steam Server List Settings\r\n\/\/ sv_location \"eu\"\r\nsv_region \"255\"\r\nsv_lan \"0\"\r\nsv_max_queries_sec_global \"30000\"\r\nsv_max_queries_window \"45\"\r\nsv_max_queries_sec \"5\"\r\n\r\n\/\/ Server Limits\r\nsbox_maxprops\t\t100\r\nsbox_maxragdolls\t5\r\nsbox_maxnpcs\t\t10\r\nsbox_maxballoons\t10\r\nsbox_maxeffects\t\t10\r\nsbox_maxdynamite\t10\r\nsbox_maxlamps\t\t10\r\nsbox_maxthrusters\t10\r\nsbox_maxwheels\t\t10\r\nsbox_maxhoverballs\t10\r\nsbox_maxvehicles\t20\r\nsbox_maxbuttons\t\t10\r\nsbox_maxsents\t\t20\r\nsbox_maxemitters\t5\r\nsbox_godmode\t\t0\r\nsbox_noclip\t\t 0\r\n\r\n\/\/ Network Settings - Please keep these set to default.\r\n\r\nsv_minrate\t\t75000\r\nsv_maxrate\t\t0\r\ngmod_physiterations\t2\r\nnet_splitpacket_maxrate\t45000\r\ndecalfrequency\t\t12 \r\n\r\n\/\/ Execute Ban Files - Please do not edit\r\nexec banned_ip.cfg \r\nexec banned_user.cfg \r\n\r\n\/\/ Add custom lines under here\r\n' > server.cfg", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-insurgency.json b/database/Seeders/eggs/source-engine/egg-insurgency.json index 69d182f3d..5a98d812d 100644 --- a/database/Seeders/eggs/source-engine/egg-insurgency.json +++ b/database/Seeders/eggs/source-engine/egg-insurgency.json @@ -1,18 +1,18 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2022-01-18T07:07:27-05:00", "name": "Insurgency", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Take to the streets for intense close quarters combat, where a team's survival depends upon securing crucial strongholds and destroying enemy supply in this multiplayer and cooperative Source Engine based experience.", "features": [ "steam_disk_space" ], "images": [ - "ghcr.io\/pterodactyl\/games:source" + "ghcr.io\/App\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game insurgency -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-team-fortress2.json b/database/Seeders/eggs/source-engine/egg-team-fortress2.json index 6785984ed..72eaefea6 100644 --- a/database/Seeders/eggs/source-engine/egg-team-fortress2.json +++ b/database/Seeders/eggs/source-engine/egg-team-fortress2.json @@ -1,19 +1,19 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2022-01-30T14:09:22-05:00", "name": "Team Fortress 2", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Team Fortress 2 is a team-based first-person shooter multiplayer video game developed and published by Valve Corporation. It is the sequel to the 1996 mod Team Fortress for Quake and its 1999 remake.", "features": [ "gsl_token", "steam_disk_space" ], "images": [ - "ghcr.io\/pterodactyl\/games:source" + "ghcr.io\/App\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game tf -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "container": "ghcr.io\/App\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/voice-servers/egg-mumble-server.json b/database/Seeders/eggs/voice-servers/egg-mumble-server.json index feac4dc1a..9360fc679 100644 --- a/database/Seeders/eggs/voice-servers/egg-mumble-server.json +++ b/database/Seeders/eggs/voice-servers/egg-mumble-server.json @@ -1,12 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v2", "update_url": null }, "exported_at": "2022-10-15T12:38:18+02:00", "name": "Mumble Server", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "Mumble is an open source, low-latency, high quality voice chat software primarily intended for use while gaming.", "features": null, "docker_images": { @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nFILE=\/mnt\/server\/murmur.ini\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Downloading the config file.\"\r\n apk add --no-cache murmur\r\n cp \/etc\/murmur.ini \/mnt\/server\/murmur.ini\r\n apk del murmur\r\nfi\r\necho \"done\"", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json b/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json index ef15f1ca0..ed927da4c 100644 --- a/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json +++ b/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json @@ -1,16 +1,16 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", "meta": { "version": "PTDL_v1", "update_url": null }, "exported_at": "2021-06-15T17:24:18-04:00", "name": "Teamspeak3 Server", - "author": "support@pterodactyl.io", + "author": "panel@example.com", "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.", "features": null, "images": [ - "ghcr.io\/pterodactyl\/yolks:debian" + "ghcr.io\/App\/yolks:debian" ], "file_denylist": [], "startup": ".\/ts3server default_voice_port={{SERVER_PORT}} query_port={{QUERY_PORT}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} query_http_port={{QUERY_HTTP}} query_ssh_port={{QUERY_SSH}} query_protocols={{QUERY_PROTOCOLS_VAR}} license_accepted=1", @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# TS3 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nif [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then\r\n TS_VERSION=$(curl -sSL https:\/\/teamspeak.com\/versions\/server.json | jq -r '.linux.x86_64.version')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting files from http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\" \r\ncurl -L http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar -xvj --strip-components=1\r\ncp .\/redist\/libmariadb.so.2 .\/", - "container": "ghcr.io\/pterodactyl\/installers:alpine", + "container": "ghcr.io\/App\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/migrations/2016_11_04_000949_add_ark_service_option_fixed.php b/database/migrations/2016_11_04_000949_add_ark_service_option_fixed.php deleted file mode 100644 index 1547e32cc..000000000 --- a/database/migrations/2016_11_04_000949_add_ark_service_option_fixed.php +++ /dev/null @@ -1,90 +0,0 @@ -select('id')->where('author', 'ptrdctyl-v040-11e6-8b77-86f30ca893d3')->where('name', 'Source Engine')->first(); - - // No SRCDS Service, Skipping - if (!$service) { - return; - } - - // Already have this service option installed. - if (DB::table('service_options')->select('id')->where('name', 'Ark: Survival Evolved')->where('parent_service', $service->id)->first()) { - return; - } - - $oid = DB::table('service_options')->insertGetId([ - 'parent_service' => $service->id, - 'name' => 'Ark: Survival Evolved', - 'description' => 'As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! — Gamepedia: ARK', - 'tag' => 'ark', - 'docker_image' => 'quay.io/pterodactyl/srcds:ark', - 'executable' => './ShooterGameServer', - 'startup' => 'TheIsland?listen?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?MaxPlayers={{SERVER_MAX_PLAYERS}}', - ]); - - DB::table('service_variables')->insert([ - 'option_id' => $oid, - 'name' => 'Server Password', - 'description' => 'If specified, players must provide this password to join the server.', - 'env_variable' => 'ARK_PASSWORD', - 'default_value' => '', - 'user_viewable' => 1, - 'user_editable' => 1, - 'required' => 0, - 'regex' => '/^(\w\.*)$/', - ]); - - DB::table('service_variables')->insert([ - 'option_id' => $oid, - 'name' => 'Admin Password', - 'description' => 'If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.', - 'env_variable' => 'ARK_ADMIN_PASSWORD', - 'default_value' => '', - 'user_viewable' => 1, - 'user_editable' => 1, - 'required' => 0, - 'regex' => '/^(\w\.*)$/', - ]); - - DB::table('service_variables')->insert([ - 'option_id' => $oid, - 'name' => 'Maximum Players', - 'description' => 'Specifies the maximum number of players that can play on the server simultaneously.', - 'env_variable' => 'SERVER_MAX_PLAYERS', - 'default_value' => 20, - 'user_viewable' => 1, - 'user_editable' => 1, - 'required' => 1, - 'regex' => '/^(\d{1,4})$/', - ]); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - DB::transaction(function () { - $service = DB::table('services')->select('id')->where('author', 'ptrdctyl-v040-11e6-8b77-86f30ca893d3')->where('name', 'Source Engine')->first(); - - if ($service) { - $option = DB::table('service_options')->where('parent_service', $service->id)->where('tag', 'ark')->first(); - - if ($option) { - $variables = DB::table('service_variables')->where('option_id', $option->id)->delete(); - } - } - }); - } -} diff --git a/database/migrations/2017_01_03_150436_fix_misnamed_option_tag.php b/database/migrations/2017_01_03_150436_fix_misnamed_option_tag.php deleted file mode 100644 index 7cdf96807..000000000 --- a/database/migrations/2017_01_03_150436_fix_misnamed_option_tag.php +++ /dev/null @@ -1,36 +0,0 @@ -where([ - ['name', 'Sponge (SpongeVanilla)'], - ['tag', 'spigot'], - ['docker_image', 'quay.io/pterodactyl/minecraft:sponge'], - ])->update([ - 'tag' => 'sponge', - ]); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - DB::table('service_options')->where([ - ['name', 'Sponge (SpongeVanilla)'], - ['tag', 'sponge'], - ['docker_image', 'quay.io/pterodactyl/minecraft:sponge'], - ])->update([ - 'tag' => 'spigot', - ]); - } -} diff --git a/database/migrations/2017_01_12_135449_add_more_user_data.php b/database/migrations/2017_01_12_135449_add_more_user_data.php index 0206040b5..5648e1225 100644 --- a/database/migrations/2017_01_12_135449_add_more_user_data.php +++ b/database/migrations/2017_01_12_135449_add_more_user_data.php @@ -1,6 +1,6 @@ where('author', config('pterodactyl.service.core'))->where('folder', 'srcds')->first(); + $service = DB::table('services')->where('author', config('panel.service.core'))->where('folder', 'srcds')->first(); if (!$service) { return; } diff --git a/database/migrations/2017_03_12_150648_MoveFunctionsFromFileToDatabase.php b/database/migrations/2017_03_12_150648_MoveFunctionsFromFileToDatabase.php index 3628ba7a4..49cadfd38 100644 --- a/database/migrations/2017_03_12_150648_MoveFunctionsFromFileToDatabase.php +++ b/database/migrations/2017_03_12_150648_MoveFunctionsFromFileToDatabase.php @@ -9,28 +9,6 @@ class MoveFunctionsFromFileToDatabase extends Migration private $default = <<<'EOF' 'use strict'; -/** - * Pterodactyl - Daemon - * Copyright (c) 2015 - 2017 Dane Everitt - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ const rfr = require('rfr'); const _ = require('lodash'); @@ -44,28 +22,6 @@ EOF; private $default_mc = <<<'EOF' 'use strict'; -/** - * Pterodactyl - Daemon - * Copyright (c) 2015 - 2017 Dane Everitt - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ const rfr = require('rfr'); const _ = require('lodash'); diff --git a/database/migrations/2017_04_15_125021_UpgradeTaskSystem.php b/database/migrations/2017_04_15_125021_UpgradeTaskSystem.php index d069e1ba1..7d717fd8a 100644 --- a/database/migrations/2017_04_15_125021_UpgradeTaskSystem.php +++ b/database/migrations/2017_04_15_125021_UpgradeTaskSystem.php @@ -1,6 +1,6 @@ $server->owner_id, 'server_id' => $server->id, 'secret' => DaemonKeyRepositoryInterface::INTERNAL_KEY_IDENTIFIER . str_random(40), - 'expires_at' => Carbon::now()->addMinutes(config('pterodactyl.api.key_expire_time', 720))->toDateTimeString(), + 'expires_at' => Carbon::now()->addMinutes(config('panel.api.key_expire_time', 720))->toDateTimeString(), 'created_at' => Carbon::now()->toDateTimeString(), 'updated_at' => Carbon::now()->toDateTimeString(), ]; diff --git a/database/migrations/2017_09_23_185022_RemoveDaemonSecretFromSubusersTable.php b/database/migrations/2017_09_23_185022_RemoveDaemonSecretFromSubusersTable.php index d4d2dd695..22efc3bfc 100644 --- a/database/migrations/2017_09_23_185022_RemoveDaemonSecretFromSubusersTable.php +++ b/database/migrations/2017_09_23_185022_RemoveDaemonSecretFromSubusersTable.php @@ -4,7 +4,7 @@ use Carbon\Carbon; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -use Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface; +use App\Contracts\Repository\DaemonKeyRepositoryInterface; class RemoveDaemonSecretFromSubusersTable extends Migration { @@ -20,7 +20,7 @@ class RemoveDaemonSecretFromSubusersTable extends Migration 'user_id' => $subuser->user_id, 'server_id' => $subuser->server_id, 'secret' => DaemonKeyRepositoryInterface::INTERNAL_KEY_IDENTIFIER . str_random(40), - 'expires_at' => Carbon::now()->addMinutes(config('pterodactyl.api.key_expire_time', 720))->toDateTimeString(), + 'expires_at' => Carbon::now()->addMinutes(config('panel.api.key_expire_time', 720))->toDateTimeString(), 'created_at' => Carbon::now()->toDateTimeString(), 'updated_at' => Carbon::now()->toDateTimeString(), ]; diff --git a/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php b/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php index dffa7687a..1f5cf9f15 100644 --- a/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php +++ b/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php @@ -26,7 +26,7 @@ class ChangeServicesToUseAMoreUniqueIdentifier extends Migration DB::table('services')->get(['id', 'author', 'uuid'])->each(function ($service) { DB::table('services')->where('id', $service->id)->update([ - 'author' => ($service->author === 'ptrdctyl-v040-11e6-8b77-86f30ca893d3') ? 'support@pterodactyl.io' : 'unknown@unknown-author.com', + 'author' => ($service->author === 'ptrdctyl-v040-11e6-8b77-86f30ca893d3') ? 'panel@example.com' : 'unknown@unknown-author.com', 'uuid' => Uuid::uuid4()->toString(), ]); }); diff --git a/database/migrations/2020_03_22_163911_merge_permissions_table_into_subusers.php b/database/migrations/2020_03_22_163911_merge_permissions_table_into_subusers.php index 27d26674f..8fddbcae7 100644 --- a/database/migrations/2020_03_22_163911_merge_permissions_table_into_subusers.php +++ b/database/migrations/2020_03_22_163911_merge_permissions_table_into_subusers.php @@ -2,9 +2,9 @@ use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; -use Pterodactyl\Models\Permission; +use App\Models\Permission; use Illuminate\Support\Facades\Schema; -use Pterodactyl\Models\Permission as P; +use App\Models\Permission as P; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2022_12_12_213937_update_mail_settings_to_new_format.php b/database/migrations/2022_12_12_213937_update_mail_settings_to_new_format.php index 97b651033..15f02ef0b 100644 --- a/database/migrations/2022_12_12_213937_update_mail_settings_to_new_format.php +++ b/database/migrations/2022_12_12_213937_update_mail_settings_to_new_format.php @@ -1,6 +1,6 @@ =14" }, @@ -134,9 +134,9 @@ "test": "jest", "lint": "eslint ./resources/scripts/**/*.{ts,tsx} --ext .ts,.tsx", "watch": "cross-env NODE_ENV=development ./node_modules/.bin/webpack --watch --progress", - "build": "cross-env NODE_ENV=development ./node_modules/.bin/webpack --progress", + "build": "cross-env NODE_OPTIONS='--openssl-legacy-provider' NODE_ENV=development ./node_modules/.bin/webpack --progress", "build:production": "yarn run clean && cross-env NODE_ENV=production ./node_modules/.bin/webpack --mode production", - "serve": "yarn run clean && cross-env WEBPACK_PUBLIC_PATH=/webpack@hmr/ NODE_ENV=development webpack-dev-server --host 0.0.0.0 --port 8080 --public https://pterodactyl.test --hot" + "serve": "yarn run clean && cross-env WEBPACK_PUBLIC_PATH=/webpack@hmr/ NODE_ENV=development webpack-dev-server --host 0.0.0.0 --port 8080 --public https://panel.test --hot" }, "browserslist": [ "> 0.5%", diff --git a/public/assets/svgs/pterodactyl.svg b/public/assets/svgs/pterodactyl.svg deleted file mode 100755 index f3582adf2..000000000 --- a/public/assets/svgs/pterodactyl.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 \ No newline at end of file diff --git a/public/js/laroute.js b/public/js/laroute.js index ca120c0d9..1c287eb71 100644 --- a/public/js/laroute.js +++ b/public/js/laroute.js @@ -5,8 +5,8 @@ var routes = { 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\/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"}], + rootUrl: 'http://panel.test', + 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":"App\Http\Controllers\Base\IndexController@getIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"status\/{server}","name":"index.status","action":"App\Http\Controllers\Base\IndexController@status"},{"host":null,"methods":["GET","HEAD"],"uri":"account","name":"account","action":"App\Http\Controllers\Base\AccountController@index"},{"host":null,"methods":["POST"],"uri":"account","name":null,"action":"App\Http\Controllers\Base\AccountController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api","name":"account.api","action":"App\Http\Controllers\Base\ClientApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/api\/new","name":"account.api.new","action":"App\Http\Controllers\Base\ClientApiController@create"},{"host":null,"methods":["POST"],"uri":"account\/api\/new","name":null,"action":"App\Http\Controllers\Base\ClientApiController@store"},{"host":null,"methods":["DELETE"],"uri":"account\/api\/revoke\/{identifier}","name":"account.api.revoke","action":"App\Http\Controllers\Base\ClientApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security","name":"account.security","action":"App\Http\Controllers\Base\SecurityController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"account\/security\/revoke\/{id}","name":"account.security.revoke","action":"App\Http\Controllers\Base\SecurityController@revoke"},{"host":null,"methods":["PUT"],"uri":"account\/security\/totp","name":"account.security.totp","action":"App\Http\Controllers\Base\SecurityController@generateTotp"},{"host":null,"methods":["POST"],"uri":"account\/security\/totp","name":"account.security.totp.set","action":"App\Http\Controllers\Base\SecurityController@setTotp"},{"host":null,"methods":["DELETE"],"uri":"account\/security\/totp","name":"account.security.totp.disable","action":"App\Http\Controllers\Base\SecurityController@disableTotp"},{"host":null,"methods":["GET","HEAD"],"uri":"admin","name":"admin.index","action":"App\Http\Controllers\Admin\BaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/statistics","name":"admin.statistics","action":"App\Http\Controllers\Admin\StatisticsController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api","name":"admin.api.index","action":"App\Http\Controllers\Admin\ApiController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/api\/new","name":"admin.api.new","action":"App\Http\Controllers\Admin\ApiController@create"},{"host":null,"methods":["POST"],"uri":"admin\/api\/new","name":null,"action":"App\Http\Controllers\Admin\ApiController@store"},{"host":null,"methods":["DELETE"],"uri":"admin\/api\/revoke\/{identifier}","name":"admin.api.delete","action":"App\Http\Controllers\Admin\ApiController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations","name":"admin.locations","action":"App\Http\Controllers\Admin\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/locations\/view\/{location}","name":"admin.locations.view","action":"App\Http\Controllers\Admin\LocationController@view"},{"host":null,"methods":["POST"],"uri":"admin\/locations","name":null,"action":"App\Http\Controllers\Admin\LocationController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/locations\/view\/{location}","name":null,"action":"App\Http\Controllers\Admin\LocationController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases","name":"admin.databases","action":"App\Http\Controllers\Admin\DatabaseController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/databases\/view\/{host}","name":"admin.databases.view","action":"App\Http\Controllers\Admin\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"admin\/databases","name":null,"action":"App\Http\Controllers\Admin\DatabaseController@create"},{"host":null,"methods":["PATCH"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"App\Http\Controllers\Admin\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/databases\/view\/{host}","name":null,"action":"App\Http\Controllers\Admin\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings","name":"admin.settings","action":"App\Http\Controllers\Admin\Settings\IndexController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/mail","name":"admin.settings.mail","action":"App\Http\Controllers\Admin\Settings\MailController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/mail\/test","name":"admin.settings.mail.test","action":"App\Http\Controllers\Admin\Settings\MailController@test"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/settings\/advanced","name":"admin.settings.advanced","action":"App\Http\Controllers\Admin\Settings\AdvancedController@index"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings","name":null,"action":"App\Http\Controllers\Admin\Settings\IndexController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/mail","name":null,"action":"App\Http\Controllers\Admin\Settings\MailController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/settings\/advanced","name":null,"action":"App\Http\Controllers\Admin\Settings\AdvancedController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users","name":"admin.users","action":"App\Http\Controllers\Admin\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/accounts.json","name":"admin.users.json","action":"App\Http\Controllers\Admin\UserController@json"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/new","name":"admin.users.new","action":"App\Http\Controllers\Admin\UserController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/users\/view\/{user}","name":"admin.users.view","action":"App\Http\Controllers\Admin\UserController@view"},{"host":null,"methods":["POST"],"uri":"admin\/users\/new","name":null,"action":"App\Http\Controllers\Admin\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"admin\/users\/view\/{user}","name":null,"action":"App\Http\Controllers\Admin\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/users\/view\/{user}","name":null,"action":"App\Http\Controllers\Admin\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers","name":"admin.servers","action":"App\Http\Controllers\Admin\ServersController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/new","name":"admin.servers.new","action":"App\Http\Controllers\Admin\ServersController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}","name":"admin.servers.view","action":"App\Http\Controllers\Admin\ServersController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/details","name":"admin.servers.view.details","action":"App\Http\Controllers\Admin\ServersController@viewDetails"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/build","name":"admin.servers.view.build","action":"App\Http\Controllers\Admin\ServersController@viewBuild"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/startup","name":"admin.servers.view.startup","action":"App\Http\Controllers\Admin\ServersController@viewStartup"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/database","name":"admin.servers.view.database","action":"App\Http\Controllers\Admin\ServersController@viewDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/manage","name":"admin.servers.view.manage","action":"App\Http\Controllers\Admin\ServersController@viewManage"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/servers\/view\/{server}\/delete","name":"admin.servers.view.delete","action":"App\Http\Controllers\Admin\ServersController@viewDelete"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/new","name":null,"action":"App\Http\Controllers\Admin\ServersController@store"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/build","name":null,"action":"App\Http\Controllers\Admin\ServersController@updateBuild"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/startup","name":null,"action":"App\Http\Controllers\Admin\ServersController@saveStartup"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"App\Http\Controllers\Admin\ServersController@newDatabase"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/toggle","name":"admin.servers.view.manage.toggle","action":"App\Http\Controllers\Admin\ServersController@toggleInstall"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/rebuild","name":"admin.servers.view.manage.rebuild","action":"App\Http\Controllers\Admin\ServersController@rebuildContainer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/suspension","name":"admin.servers.view.manage.suspension","action":"App\Http\Controllers\Admin\ServersController@manageSuspension"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/manage\/reinstall","name":"admin.servers.view.manage.reinstall","action":"App\Http\Controllers\Admin\ServersController@reinstallServer"},{"host":null,"methods":["POST"],"uri":"admin\/servers\/view\/{server}\/delete","name":null,"action":"App\Http\Controllers\Admin\ServersController@delete"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/details","name":null,"action":"App\Http\Controllers\Admin\ServersController@setDetails"},{"host":null,"methods":["PATCH"],"uri":"admin\/servers\/view\/{server}\/database","name":null,"action":"App\Http\Controllers\Admin\ServersController@resetDatabasePassword"},{"host":null,"methods":["DELETE"],"uri":"admin\/servers\/view\/{server}\/database\/{database}\/delete","name":"admin.servers.view.database.delete","action":"App\Http\Controllers\Admin\ServersController@deleteDatabase"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes","name":"admin.nodes","action":"App\Http\Controllers\Admin\NodesController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/new","name":"admin.nodes.new","action":"App\Http\Controllers\Admin\NodesController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}","name":"admin.nodes.view","action":"App\Http\Controllers\Admin\NodesController@viewIndex"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings","name":"admin.nodes.view.settings","action":"App\Http\Controllers\Admin\NodesController@viewSettings"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/configuration","name":"admin.nodes.view.configuration","action":"App\Http\Controllers\Admin\NodesController@viewConfiguration"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":"admin.nodes.view.allocation","action":"App\Http\Controllers\Admin\NodesController@viewAllocation"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/servers","name":"admin.nodes.view.servers","action":"App\Http\Controllers\Admin\NodesController@viewServers"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nodes\/view\/{node}\/settings\/token","name":"admin.nodes.view.configuration.token","action":"App\Http\Controllers\Admin\NodesController@setToken"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/new","name":null,"action":"App\Http\Controllers\Admin\NodesController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation","name":null,"action":"App\Http\Controllers\Admin\NodesController@createAllocation"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove","name":"admin.nodes.view.allocation.removeBlock","action":"App\Http\Controllers\Admin\NodesController@allocationRemoveBlock"},{"host":null,"methods":["POST"],"uri":"admin\/nodes\/view\/{node}\/allocation\/alias","name":"admin.nodes.view.allocation.setAlias","action":"App\Http\Controllers\Admin\NodesController@allocationSetAlias"},{"host":null,"methods":["PATCH"],"uri":"admin\/nodes\/view\/{node}\/settings","name":null,"action":"App\Http\Controllers\Admin\NodesController@updateSettings"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/delete","name":"admin.nodes.view.delete","action":"App\Http\Controllers\Admin\NodesController@delete"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/allocation\/remove\/{allocation}","name":"admin.nodes.view.allocation.removeSingle","action":"App\Http\Controllers\Admin\NodesController@allocationRemoveSingle"},{"host":null,"methods":["DELETE"],"uri":"admin\/nodes\/view\/{node}\/allocations","name":"admin.nodes.view.allocation.removeMultiple","action":"App\Http\Controllers\Admin\NodesController@allocationRemoveMultiple"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests","name":"admin.nests","action":"App\Http\Controllers\Admin\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/new","name":"admin.nests.new","action":"App\Http\Controllers\Admin\Nests\NestController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/view\/{nest}","name":"admin.nests.view","action":"App\Http\Controllers\Admin\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/new","name":"admin.nests.egg.new","action":"App\Http\Controllers\Admin\Nests\EggController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}","name":"admin.nests.egg.view","action":"App\Http\Controllers\Admin\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/export","name":"admin.nests.egg.export","action":"App\Http\Controllers\Admin\Nests\EggShareController@export"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":"admin.nests.egg.variables","action":"App\Http\Controllers\Admin\Nests\EggVariableController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":"admin.nests.egg.scripts","action":"App\Http\Controllers\Admin\Nests\EggScriptController@index"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/new","name":null,"action":"App\Http\Controllers\Admin\Nests\NestController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/import","name":"admin.nests.egg.import","action":"App\Http\Controllers\Admin\Nests\EggShareController@import"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/new","name":null,"action":"App\Http\Controllers\Admin\Nests\EggController@store"},{"host":null,"methods":["POST"],"uri":"admin\/nests\/egg\/{egg}\/variables","name":null,"action":"App\Http\Controllers\Admin\Nests\EggVariableController@store"},{"host":null,"methods":["PUT"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"App\Http\Controllers\Admin\Nests\EggShareController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"App\Http\Controllers\Admin\Nests\NestController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"App\Http\Controllers\Admin\Nests\EggController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/scripts","name":null,"action":"App\Http\Controllers\Admin\Nests\EggScriptController@update"},{"host":null,"methods":["PATCH"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":"admin.nests.egg.variables.edit","action":"App\Http\Controllers\Admin\Nests\EggVariableController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/view\/{nest}","name":null,"action":"App\Http\Controllers\Admin\Nests\NestController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}","name":null,"action":"App\Http\Controllers\Admin\Nests\EggController@destroy"},{"host":null,"methods":["DELETE"],"uri":"admin\/nests\/egg\/{egg}\/variables\/{variable}","name":null,"action":"App\Http\Controllers\Admin\Nests\EggVariableController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs","name":"admin.packs","action":"App\Http\Controllers\Admin\PackController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new","name":"admin.packs.new","action":"App\Http\Controllers\Admin\PackController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/new\/template","name":"admin.packs.new.template","action":"App\Http\Controllers\Admin\PackController@newTemplate"},{"host":null,"methods":["GET","HEAD"],"uri":"admin\/packs\/view\/{pack}","name":"admin.packs.view","action":"App\Http\Controllers\Admin\PackController@view"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/new","name":null,"action":"App\Http\Controllers\Admin\PackController@store"},{"host":null,"methods":["POST"],"uri":"admin\/packs\/view\/{pack}\/export\/{files?}","name":"admin.packs.view.export","action":"App\Http\Controllers\Admin\PackController@export"},{"host":null,"methods":["PATCH"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"App\Http\Controllers\Admin\PackController@update"},{"host":null,"methods":["DELETE"],"uri":"admin\/packs\/view\/{pack}","name":null,"action":"App\Http\Controllers\Admin\PackController@destroy"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login","name":"auth.login","action":"App\Http\Controllers\Auth\LoginController@showLoginForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/login\/totp","name":"auth.totp","action":"App\Http\Controllers\Auth\LoginController@totp"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password","name":"auth.password","action":"App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/password\/reset\/{token}","name":"auth.reset","action":"App\Http\Controllers\Auth\ResetPasswordController@showResetForm"},{"host":null,"methods":["POST"],"uri":"auth\/login","name":null,"action":"App\Http\Controllers\Auth\LoginController@login"},{"host":null,"methods":["POST"],"uri":"auth\/login\/totp","name":null,"action":"App\Http\Controllers\Auth\LoginController@loginUsingTotp"},{"host":null,"methods":["POST"],"uri":"auth\/password","name":null,"action":"App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset","name":"auth.reset.post","action":"App\Http\Controllers\Auth\ResetPasswordController@reset"},{"host":null,"methods":["POST"],"uri":"auth\/password\/reset\/{token}","name":null,"action":"App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail"},{"host":null,"methods":["GET","HEAD"],"uri":"auth\/logout","name":"auth.logout","action":"App\Http\Controllers\Auth\LoginController@logout"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}","name":"server.index","action":"App\Http\Controllers\Server\ConsoleController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/console","name":"server.console","action":"App\Http\Controllers\Server\ConsoleController@console"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/allocation","name":"server.settings.allocation","action":"App\Http\Controllers\Server\Settings\AllocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/name","name":"server.settings.name","action":"App\Http\Controllers\Server\Settings\NameController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/sftp","name":"server.settings.sftp","action":"App\Http\Controllers\Server\Settings\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/settings\/startup","name":"server.settings.startup","action":"App\Http\Controllers\Server\Settings\StartupController@index"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/allocation","name":null,"action":"App\Http\Controllers\Server\Settings\AllocationController@update"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/name","name":null,"action":"App\Http\Controllers\Server\Settings\NameController@update"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/settings\/startup","name":null,"action":"App\Http\Controllers\Server\Settings\StartupController@update"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/databases","name":"server.databases.index","action":"App\Http\Controllers\Server\DatabaseController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/databases\/new","name":"server.databases.new","action":"App\Http\Controllers\Server\DatabaseController@store"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/databases\/password","name":"server.databases.password","action":"App\Http\Controllers\Server\DatabaseController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/databases\/delete\/{database}","name":"server.databases.delete","action":"App\Http\Controllers\Server\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files","name":"server.files.index","action":"App\Http\Controllers\Server\Files\FileActionsController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/add","name":"server.files.add","action":"App\Http\Controllers\Server\Files\FileActionsController@create"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/edit\/{file}","name":"server.files.edit","action":"App\Http\Controllers\Server\Files\FileActionsController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/files\/download\/{file}","name":"server.files.edit","action":"App\Http\Controllers\Server\Files\DownloadController@index"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/directory-list","name":"server.files.directory-list","action":"App\Http\Controllers\Server\Files\RemoteRequestController@directory"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/files\/save","name":"server.files.save","action":"App\Http\Controllers\Server\Files\RemoteRequestController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users","name":"server.subusers","action":"App\Http\Controllers\Server\SubuserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/new","name":"server.subusers.new","action":"App\Http\Controllers\Server\SubuserController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/users\/new","name":null,"action":"App\Http\Controllers\Server\SubuserController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/users\/view\/{subuser}","name":"server.subusers.view","action":"App\Http\Controllers\Server\SubuserController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"App\Http\Controllers\Server\SubuserController@update"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/users\/view\/{subuser}","name":null,"action":"App\Http\Controllers\Server\SubuserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules","name":"server.schedules","action":"App\Http\Controllers\Server\Tasks\TaskManagementController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/new","name":"server.schedules.new","action":"App\Http\Controllers\Server\Tasks\TaskManagementController@create"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/new","name":null,"action":"App\Http\Controllers\Server\Tasks\TaskManagementController@store"},{"host":null,"methods":["GET","HEAD"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":"server.schedules.view","action":"App\Http\Controllers\Server\Tasks\TaskManagementController@view"},{"host":null,"methods":["PATCH"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"App\Http\Controllers\Server\Tasks\TaskManagementController@update"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/toggle","name":"server.schedules.toggle","action":"App\Http\Controllers\Server\Tasks\ActionController@toggle"},{"host":null,"methods":["POST"],"uri":"server\/{server}\/schedules\/view\/{schedule}\/trigger","name":"server.schedules.trigger","action":"App\Http\Controllers\Server\Tasks\ActionController@trigger"},{"host":null,"methods":["DELETE"],"uri":"server\/{server}\/schedules\/view\/{schedule}","name":null,"action":"App\Http\Controllers\Server\Tasks\TaskManagementController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users","name":"api.application.users","action":"App\Http\Controllers\Api\Application\Users\UserController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/users\/{user}","name":"api.application.users.view","action":"App\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":"App\Http\Controllers\Api\Application\Users\ExternalUserController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/users","name":null,"action":"App\Http\Controllers\Api\Application\Users\UserController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/users\/{user}","name":null,"action":"App\Http\Controllers\Api\Application\Users\UserController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/users\/{user}","name":null,"action":"App\Http\Controllers\Api\Application\Users\UserController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes","name":"api.application.nodes","action":"App\Http\Controllers\Api\Application\Nodes\NodeController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}","name":"api.application.nodes.view","action":"App\Http\Controllers\Api\Application\Nodes\NodeController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes","name":null,"action":"App\Http\Controllers\Api\Application\Nodes\NodeController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"App\Http\Controllers\Api\Application\Nodes\NodeController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}","name":null,"action":"App\Http\Controllers\Api\Application\Nodes\NodeController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nodes\/{node}\/allocations","name":"api.application.allocations","action":"App\Http\Controllers\Api\Application\Nodes\AllocationController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/nodes\/{node}\/allocations","name":null,"action":"App\Http\Controllers\Api\Application\Nodes\AllocationController@store"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/nodes\/{node}\/allocations\/{allocation}","name":"api.application.allocations.view","action":"App\Http\Controllers\Api\Application\Nodes\AllocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations","name":"api.applications.locations","action":"App\Http\Controllers\Api\Application\Locations\LocationController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/locations\/{location}","name":"api.application.locations.view","action":"App\Http\Controllers\Api\Application\Locations\LocationController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/locations","name":null,"action":"App\Http\Controllers\Api\Application\Locations\LocationController@store"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/locations\/{location}","name":null,"action":"App\Http\Controllers\Api\Application\Locations\LocationController@update"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/locations\/{location}","name":null,"action":"App\Http\Controllers\Api\Application\Locations\LocationController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers","name":"api.application.servers","action":"App\Http\Controllers\Api\Application\Servers\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}","name":"api.application.servers.view","action":"App\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":"App\Http\Controllers\Api\Application\Servers\ExternalServerController@index"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/details","name":"api.application.servers.details","action":"App\Http\Controllers\Api\Application\Servers\ServerDetailsController@details"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/build","name":"api.application.servers.build","action":"App\Http\Controllers\Api\Application\Servers\ServerDetailsController@build"},{"host":null,"methods":["PATCH"],"uri":"api\/application\/servers\/{server}\/startup","name":"api.application.servers.startup","action":"App\Http\Controllers\Api\Application\Servers\StartupController@index"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers","name":null,"action":"App\Http\Controllers\Api\Application\Servers\ServerController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/suspend","name":"api.application.servers.suspend","action":"App\Http\Controllers\Api\Application\Servers\ServerManagementController@suspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/unsuspend","name":"api.application.servers.unsuspend","action":"App\Http\Controllers\Api\Application\Servers\ServerManagementController@unsuspend"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/reinstall","name":"api.application.servers.reinstall","action":"App\Http\Controllers\Api\Application\Servers\ServerManagementController@reinstall"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/rebuild","name":"api.application.servers.rebuild","action":"App\Http\Controllers\Api\Application\Servers\ServerManagementController@rebuild"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}","name":null,"action":"App\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/{force?}","name":null,"action":"App\Http\Controllers\Api\Application\Servers\ServerController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/servers\/{server}\/databases","name":"api.application.servers.databases","action":"App\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":"App\Http\Controllers\Api\Application\Servers\DatabaseController@view"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases","name":null,"action":"App\Http\Controllers\Api\Application\Servers\DatabaseController@store"},{"host":null,"methods":["POST"],"uri":"api\/application\/servers\/{server}\/databases\/{database}\/reset-password","name":null,"action":"App\Http\Controllers\Api\Application\Servers\DatabaseController@resetPassword"},{"host":null,"methods":["DELETE"],"uri":"api\/application\/servers\/{server}\/databases\/{database}","name":null,"action":"App\Http\Controllers\Api\Application\Servers\DatabaseController@delete"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests","name":"api.application.nests","action":"App\Http\Controllers\Api\Application\Nests\NestController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}","name":"api.application.nests.view","action":"App\Http\Controllers\Api\Application\Nests\NestController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/application\/nests\/{nest}\/eggs","name":"api.application.nests.eggs","action":"App\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":"App\Http\Controllers\Api\Application\Nests\EggController@view"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client","name":"api.client.index","action":"App\Http\Controllers\Api\Client\ClientController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client\/servers\/{server}","name":"api.client.servers.view","action":"App\Http\Controllers\Api\Client\Servers\ServerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/client\/servers\/{server}\/utilization","name":"api.client.servers.resources","action":"App\Http\Controllers\Api\Client\Servers\ResourceUtilizationController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/command","name":"api.client.servers.command","action":"App\Http\Controllers\Api\Client\Servers\CommandController@index"},{"host":null,"methods":["POST"],"uri":"api\/client\/servers\/{server}\/power","name":"api.client.servers.power","action":"App\Http\Controllers\Api\Client\Servers\PowerController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/authenticate\/{token}","name":"api.remote.authenticate","action":"App\Http\Controllers\Api\Remote\ValidateKeyController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/download-file","name":"api.remote.download_file","action":"App\Http\Controllers\Api\Remote\FileDownloadController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs","name":"api.remote.eggs","action":"App\Http\Controllers\Api\Remote\EggRetrievalController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/eggs\/{uuid}","name":"api.remote.eggs.download","action":"App\Http\Controllers\Api\Remote\EggRetrievalController@download"},{"host":null,"methods":["GET","HEAD"],"uri":"api\/remote\/scripts\/{uuid}","name":"api.remote.scripts","action":"App\Http\Controllers\Api\Remote\EggInstallController@index"},{"host":null,"methods":["POST"],"uri":"api\/remote\/sftp","name":"api.remote.sftp","action":"App\Http\Controllers\Api\Remote\SftpController@index"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}","name":"daemon.pack.pull","action":"App\Http\Controllers\Daemon\PackController@pull"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/packs\/pull\/{uuid}\/hash","name":"daemon.pack.hash","action":"App\Http\Controllers\Daemon\PackController@hash"},{"host":null,"methods":["GET","HEAD"],"uri":"daemon\/configure\/{token}","name":"daemon.configuration","action":"App\Http\Controllers\Daemon\ActionController@configuration"},{"host":null,"methods":["POST"],"uri":"daemon\/install","name":"daemon.install","action":"App\Http\Controllers\Daemon\ActionController@markInstall"}], prefix: '', route : function (name, parameters, route) { diff --git a/public/themes/pterodactyl/css/checkbox.css b/public/themes/panel/css/checkbox.css similarity index 100% rename from public/themes/pterodactyl/css/checkbox.css rename to public/themes/panel/css/checkbox.css diff --git a/public/themes/pterodactyl/css/pterodactyl.css b/public/themes/panel/css/panel.css similarity index 91% rename from public/themes/pterodactyl/css/pterodactyl.css rename to public/themes/panel/css/panel.css index 8e3580f2b..69b8983e8 100644 --- a/public/themes/pterodactyl/css/pterodactyl.css +++ b/public/themes/panel/css/panel.css @@ -1,25 +1,3 @@ -/** - * Pterodactyl - Panel - * Copyright (c) 2015 - 2017 Dane Everitt - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ @import 'checkbox.css'; .login-page { @@ -51,45 +29,45 @@ z-index: -1; } -.pterodactyl-login-box { +.panel-login-box { background: rgba(0, 0, 0, 0.25); border-radius: 3px; padding: 20px; } -.pterodactyl-login-input > input { +.panel-login-input > input { background: rgba(0, 0, 0, 0.4); border: 1px solid #000; border-radius: 2px; color: #fff; } -.pterodactyl-login-input > .form-control-feedback { +.panel-login-input > .form-control-feedback { color: #fff; } -.pterodactyl-login-button--main { +.panel-login-button--main { background: rgba(0, 0, 0, 0.4); border: 1px solid #000; border-radius: 2px; color: #fff; } -.pterodactyl-login-button--main:hover { +.panel-login-button--main:hover { background: rgba(0, 0, 0, 0.7); border: 1px solid #000; border-radius: 2px; color: #fff; } -.pterodactyl-login-button--left { +.panel-login-button--left { background: rgba(255, 255, 255, 0.4); border: 1px solid rgba(255, 255, 255, 0.6); border-radius: 2px; color: #fff; } -.pterodactyl-login-button--left:hover { +.panel-login-button--left:hover { background: rgba(255, 255, 255, 0.6); border: 1px solid rgba(255, 255, 255, 0.8); border-radius: 2px; diff --git a/public/themes/pterodactyl/css/terminal.css b/public/themes/panel/css/terminal.css similarity index 100% rename from public/themes/pterodactyl/css/terminal.css rename to public/themes/panel/css/terminal.css diff --git a/public/themes/panel/js/admin/functions.js b/public/themes/panel/js/admin/functions.js new file mode 100644 index 000000000..ea63303ed --- /dev/null +++ b/public/themes/panel/js/admin/functions.js @@ -0,0 +1,4 @@ +$.urlParam=function(name){var results=new RegExp("[\\?&]"+name+"=([^&#]*)").exec(decodeURIComponent(window.location.href));if(results==null){return null}else{return results[1]||0}};function getPageName(url){var index=url.lastIndexOf("/")+1;var filenameWithExtension=url.substr(index);var filename=filenameWithExtension.split(".")[0];return filename} +// Remember Active Tab and Navigate to it on Reload +for(var queryParameters={},queryString=location.search.substring(1),re=/([^&=]+)=([^&]*)/g,m;m=re.exec(queryString);)queryParameters[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);$("a[data-toggle='tab']").click(function(){queryParameters.tab=$(this).attr("href").substring(1),window.history.pushState(null,null,location.pathname+"?"+$.param(queryParameters))}); +if($.urlParam('tab') != null){$('.nav.nav-tabs a[href="#' + $.urlParam('tab') + '"]').tab('show');} diff --git a/public/themes/pterodactyl/js/admin/new-server.js b/public/themes/panel/js/admin/new-server.js similarity index 82% rename from public/themes/pterodactyl/js/admin/new-server.js rename to public/themes/panel/js/admin/new-server.js index db138cbde..b812d7f15 100644 --- a/public/themes/pterodactyl/js/admin/new-server.js +++ b/public/themes/panel/js/admin/new-server.js @@ -1,22 +1,3 @@ -// Copyright (c) 2015 - 2017 Dane Everitt -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. $(document).ready(function() { $('#pNestId').select2({ placeholder: 'Select a Nest', @@ -55,7 +36,7 @@ $(document).on('click', function (event) { $('#pNodeId').on('change', function () { currentNode = $(this).val(); - $.each(Pterodactyl.nodeData, function (i, v) { + $.each(Panel.nodeData, function (i, v) { if (v.id == currentNode) { $('#pAllocation').html('').select2({ data: v.allocations, @@ -69,7 +50,7 @@ $('#pNodeId').on('change', function () { $('#pNestId').on('change', function (event) { $('#pEggId').html('').select2({ - data: $.map(_.get(Pterodactyl.nests, $(this).val() + '.eggs', []), function (item) { + data: $.map(_.get(Panel.nests, $(this).val() + '.eggs', []), function (item) { return { id: item.id, text: item.name, @@ -79,7 +60,7 @@ $('#pNestId').on('change', function (event) { }); $('#pEggId').on('change', function (event) { - let parentChain = _.get(Pterodactyl.nests, $('#pNestId').val(), null); + let parentChain = _.get(Panel.nests, $('#pNestId').val(), null); let objectChain = _.get(parentChain, 'eggs.' + $(this).val(), null); const images = _.get(objectChain, 'docker_images', {}) @@ -140,7 +121,7 @@ function updateAdditionalAllocations() { let currentAllocation = $('#pAllocation').val(); let currentNode = $('#pNodeId').val(); - $.each(Pterodactyl.nodeData, function (i, v) { + $.each(Panel.nodeData, function (i, v) { if (v.id == currentNode) { let allocations = []; diff --git a/public/themes/pterodactyl/js/admin/server/transfer.js b/public/themes/panel/js/admin/server/transfer.js similarity index 93% rename from public/themes/pterodactyl/js/admin/server/transfer.js rename to public/themes/panel/js/admin/server/transfer.js index 5c2664a86..43cfa0a51 100644 --- a/public/themes/pterodactyl/js/admin/server/transfer.js +++ b/public/themes/panel/js/admin/server/transfer.js @@ -15,7 +15,7 @@ $(document).ready(function () { $('#pNodeId').on('change', function () { let currentNode = $(this).val(); - $.each(Pterodactyl.nodeData, function (i, v) { + $.each(Panel.nodeData, function (i, v) { if (v.id == currentNode) { $('#pAllocation').html('').select2({ data: v.allocations, @@ -35,7 +35,7 @@ function updateAdditionalAllocations() { let currentAllocation = $('#pAllocation').val(); let currentNode = $('#pNodeId').val(); - $.each(Pterodactyl.nodeData, function (i, v) { + $.each(Panel.nodeData, function (i, v) { if (v.id == currentNode) { let allocations = []; diff --git a/public/themes/pterodactyl/js/plugins/minecraft/eula.js b/public/themes/panel/js/plugins/minecraft/eula.js similarity index 59% rename from public/themes/pterodactyl/js/plugins/minecraft/eula.js rename to public/themes/panel/js/plugins/minecraft/eula.js index 27e78c94c..2b2dd2154 100644 --- a/public/themes/pterodactyl/js/plugins/minecraft/eula.js +++ b/public/themes/panel/js/plugins/minecraft/eula.js @@ -1,22 +1,3 @@ -// Copyright (c) 2015 - 2017 Dane Everitt -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. $(document).ready(function () { Socket.on('console', function (data) { if (typeof data === 'undefined' || typeof data.line === 'undefined') { @@ -38,8 +19,8 @@ $(document).ready(function () { }, function () { $.ajax({ type: 'POST', - url: Pterodactyl.meta.saveFile, - headers: { 'X-CSRF-Token': Pterodactyl.meta.csrfToken, }, + url: Panel.meta.saveFile, + headers: { 'X-CSRF-Token': Panel.meta.csrfToken, }, data: { file: 'eula.txt', contents: 'eula=true' diff --git a/public/themes/pterodactyl/vendor/ace/ace.js b/public/themes/panel/vendor/ace/ace.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ace.js rename to public/themes/panel/vendor/ace/ace.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-elastic_tabstops_lite.js b/public/themes/panel/vendor/ace/ext-elastic_tabstops_lite.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-elastic_tabstops_lite.js rename to public/themes/panel/vendor/ace/ext-elastic_tabstops_lite.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-error_marker.js b/public/themes/panel/vendor/ace/ext-error_marker.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-error_marker.js rename to public/themes/panel/vendor/ace/ext-error_marker.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-linking.js b/public/themes/panel/vendor/ace/ext-linking.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-linking.js rename to public/themes/panel/vendor/ace/ext-linking.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-modelist.js b/public/themes/panel/vendor/ace/ext-modelist.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-modelist.js rename to public/themes/panel/vendor/ace/ext-modelist.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-old_ie.js b/public/themes/panel/vendor/ace/ext-old_ie.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-old_ie.js rename to public/themes/panel/vendor/ace/ext-old_ie.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-searchbox.js b/public/themes/panel/vendor/ace/ext-searchbox.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-searchbox.js rename to public/themes/panel/vendor/ace/ext-searchbox.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-settings_menu.js b/public/themes/panel/vendor/ace/ext-settings_menu.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-settings_menu.js rename to public/themes/panel/vendor/ace/ext-settings_menu.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-spellcheck.js b/public/themes/panel/vendor/ace/ext-spellcheck.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-spellcheck.js rename to public/themes/panel/vendor/ace/ext-spellcheck.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-split.js b/public/themes/panel/vendor/ace/ext-split.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-split.js rename to public/themes/panel/vendor/ace/ext-split.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-static_highlight.js b/public/themes/panel/vendor/ace/ext-static_highlight.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-static_highlight.js rename to public/themes/panel/vendor/ace/ext-static_highlight.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-textarea.js b/public/themes/panel/vendor/ace/ext-textarea.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-textarea.js rename to public/themes/panel/vendor/ace/ext-textarea.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-themelist.js b/public/themes/panel/vendor/ace/ext-themelist.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-themelist.js rename to public/themes/panel/vendor/ace/ext-themelist.js diff --git a/public/themes/pterodactyl/vendor/ace/ext-whitespace.js b/public/themes/panel/vendor/ace/ext-whitespace.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/ext-whitespace.js rename to public/themes/panel/vendor/ace/ext-whitespace.js diff --git a/public/themes/pterodactyl/vendor/ace/keybinding-emacs.js b/public/themes/panel/vendor/ace/keybinding-emacs.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/keybinding-emacs.js rename to public/themes/panel/vendor/ace/keybinding-emacs.js diff --git a/public/themes/pterodactyl/vendor/ace/keybinding-vim.js b/public/themes/panel/vendor/ace/keybinding-vim.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/keybinding-vim.js rename to public/themes/panel/vendor/ace/keybinding-vim.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-assembly_x86.js b/public/themes/panel/vendor/ace/mode-assembly_x86.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-assembly_x86.js rename to public/themes/panel/vendor/ace/mode-assembly_x86.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-c_cpp.js b/public/themes/panel/vendor/ace/mode-c_cpp.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-c_cpp.js rename to public/themes/panel/vendor/ace/mode-c_cpp.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-coffee.js b/public/themes/panel/vendor/ace/mode-coffee.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-coffee.js rename to public/themes/panel/vendor/ace/mode-coffee.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-csharp.js b/public/themes/panel/vendor/ace/mode-csharp.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-csharp.js rename to public/themes/panel/vendor/ace/mode-csharp.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-css.js b/public/themes/panel/vendor/ace/mode-css.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-css.js rename to public/themes/panel/vendor/ace/mode-css.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-golang.js b/public/themes/panel/vendor/ace/mode-golang.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-golang.js rename to public/themes/panel/vendor/ace/mode-golang.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-haml.js b/public/themes/panel/vendor/ace/mode-haml.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-haml.js rename to public/themes/panel/vendor/ace/mode-haml.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-html.js b/public/themes/panel/vendor/ace/mode-html.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-html.js rename to public/themes/panel/vendor/ace/mode-html.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-ini.js b/public/themes/panel/vendor/ace/mode-ini.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-ini.js rename to public/themes/panel/vendor/ace/mode-ini.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-java.js b/public/themes/panel/vendor/ace/mode-java.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-java.js rename to public/themes/panel/vendor/ace/mode-java.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-javascript.js b/public/themes/panel/vendor/ace/mode-javascript.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-javascript.js rename to public/themes/panel/vendor/ace/mode-javascript.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-json.js b/public/themes/panel/vendor/ace/mode-json.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-json.js rename to public/themes/panel/vendor/ace/mode-json.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-kotlin.js b/public/themes/panel/vendor/ace/mode-kotlin.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-kotlin.js rename to public/themes/panel/vendor/ace/mode-kotlin.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-lua.js b/public/themes/panel/vendor/ace/mode-lua.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-lua.js rename to public/themes/panel/vendor/ace/mode-lua.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-markdown.js b/public/themes/panel/vendor/ace/mode-markdown.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-markdown.js rename to public/themes/panel/vendor/ace/mode-markdown.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-mysql.js b/public/themes/panel/vendor/ace/mode-mysql.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-mysql.js rename to public/themes/panel/vendor/ace/mode-mysql.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-objectivec.js b/public/themes/panel/vendor/ace/mode-objectivec.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-objectivec.js rename to public/themes/panel/vendor/ace/mode-objectivec.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-perl.js b/public/themes/panel/vendor/ace/mode-perl.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-perl.js rename to public/themes/panel/vendor/ace/mode-perl.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-php.js b/public/themes/panel/vendor/ace/mode-php.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-php.js rename to public/themes/panel/vendor/ace/mode-php.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-plain_text.js b/public/themes/panel/vendor/ace/mode-plain_text.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-plain_text.js rename to public/themes/panel/vendor/ace/mode-plain_text.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-properties.js b/public/themes/panel/vendor/ace/mode-properties.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-properties.js rename to public/themes/panel/vendor/ace/mode-properties.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-python.js b/public/themes/panel/vendor/ace/mode-python.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-python.js rename to public/themes/panel/vendor/ace/mode-python.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-ruby.js b/public/themes/panel/vendor/ace/mode-ruby.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-ruby.js rename to public/themes/panel/vendor/ace/mode-ruby.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-rust.js b/public/themes/panel/vendor/ace/mode-rust.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-rust.js rename to public/themes/panel/vendor/ace/mode-rust.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-sh.js b/public/themes/panel/vendor/ace/mode-sh.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-sh.js rename to public/themes/panel/vendor/ace/mode-sh.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-smarty.js b/public/themes/panel/vendor/ace/mode-smarty.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-smarty.js rename to public/themes/panel/vendor/ace/mode-smarty.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-sql.js b/public/themes/panel/vendor/ace/mode-sql.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-sql.js rename to public/themes/panel/vendor/ace/mode-sql.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-xml.js b/public/themes/panel/vendor/ace/mode-xml.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-xml.js rename to public/themes/panel/vendor/ace/mode-xml.js diff --git a/public/themes/pterodactyl/vendor/ace/mode-yaml.js b/public/themes/panel/vendor/ace/mode-yaml.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/mode-yaml.js rename to public/themes/panel/vendor/ace/mode-yaml.js diff --git a/public/themes/pterodactyl/vendor/ace/theme-chrome.js b/public/themes/panel/vendor/ace/theme-chrome.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/theme-chrome.js rename to public/themes/panel/vendor/ace/theme-chrome.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-css.js b/public/themes/panel/vendor/ace/worker-css.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-css.js rename to public/themes/panel/vendor/ace/worker-css.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-html.js b/public/themes/panel/vendor/ace/worker-html.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-html.js rename to public/themes/panel/vendor/ace/worker-html.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-javascript.js b/public/themes/panel/vendor/ace/worker-javascript.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-javascript.js rename to public/themes/panel/vendor/ace/worker-javascript.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-json.js b/public/themes/panel/vendor/ace/worker-json.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-json.js rename to public/themes/panel/vendor/ace/worker-json.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-lua.js b/public/themes/panel/vendor/ace/worker-lua.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-lua.js rename to public/themes/panel/vendor/ace/worker-lua.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-php.js b/public/themes/panel/vendor/ace/worker-php.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-php.js rename to public/themes/panel/vendor/ace/worker-php.js diff --git a/public/themes/pterodactyl/vendor/ace/worker-xml.js b/public/themes/panel/vendor/ace/worker-xml.js similarity index 100% rename from public/themes/pterodactyl/vendor/ace/worker-xml.js rename to public/themes/panel/vendor/ace/worker-xml.js diff --git a/public/themes/pterodactyl/vendor/adminlte/admin.min.css b/public/themes/panel/vendor/adminlte/admin.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/adminlte/admin.min.css rename to public/themes/panel/vendor/adminlte/admin.min.css diff --git a/public/themes/pterodactyl/vendor/adminlte/adminlte.min.css.map b/public/themes/panel/vendor/adminlte/adminlte.min.css.map similarity index 100% rename from public/themes/pterodactyl/vendor/adminlte/adminlte.min.css.map rename to public/themes/panel/vendor/adminlte/adminlte.min.css.map diff --git a/public/themes/pterodactyl/vendor/adminlte/app.min.js b/public/themes/panel/vendor/adminlte/app.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/adminlte/app.min.js rename to public/themes/panel/vendor/adminlte/app.min.js diff --git a/public/themes/pterodactyl/vendor/adminlte/colors/skin-blue.min.css b/public/themes/panel/vendor/adminlte/colors/skin-blue.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/adminlte/colors/skin-blue.min.css rename to public/themes/panel/vendor/adminlte/colors/skin-blue.min.css diff --git a/public/themes/pterodactyl/vendor/animate/animate.min.css b/public/themes/panel/vendor/animate/animate.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/animate/animate.min.css rename to public/themes/panel/vendor/animate/animate.min.css diff --git a/public/themes/pterodactyl/vendor/ansi/ansi_up.js b/public/themes/panel/vendor/ansi/ansi_up.js similarity index 100% rename from public/themes/pterodactyl/vendor/ansi/ansi_up.js rename to public/themes/panel/vendor/ansi/ansi_up.js diff --git a/public/themes/pterodactyl/vendor/async/async.min.js b/public/themes/panel/vendor/async/async.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/async/async.min.js rename to public/themes/panel/vendor/async/async.min.js diff --git a/public/themes/pterodactyl/vendor/async/async.min.map b/public/themes/panel/vendor/async/async.min.map similarity index 100% rename from public/themes/pterodactyl/vendor/async/async.min.map rename to public/themes/panel/vendor/async/async.min.map diff --git a/public/themes/pterodactyl/vendor/bootstrap-notify/bootstrap-notify.min.js b/public/themes/panel/vendor/bootstrap-notify/bootstrap-notify.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap-notify/bootstrap-notify.min.js rename to public/themes/panel/vendor/bootstrap-notify/bootstrap-notify.min.js diff --git a/public/themes/pterodactyl/vendor/bootstrap/bootstrap-theme.min.css b/public/themes/panel/vendor/bootstrap/bootstrap-theme.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap/bootstrap-theme.min.css rename to public/themes/panel/vendor/bootstrap/bootstrap-theme.min.css diff --git a/public/themes/pterodactyl/vendor/bootstrap/bootstrap-theme.min.css.map b/public/themes/panel/vendor/bootstrap/bootstrap-theme.min.css.map similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap/bootstrap-theme.min.css.map rename to public/themes/panel/vendor/bootstrap/bootstrap-theme.min.css.map diff --git a/public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.css b/public/themes/panel/vendor/bootstrap/bootstrap.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.css rename to public/themes/panel/vendor/bootstrap/bootstrap.min.css diff --git a/public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.css.map b/public/themes/panel/vendor/bootstrap/bootstrap.min.css.map similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.css.map rename to public/themes/panel/vendor/bootstrap/bootstrap.min.css.map diff --git a/public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.js b/public/themes/panel/vendor/bootstrap/bootstrap.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/bootstrap/bootstrap.min.js rename to public/themes/panel/vendor/bootstrap/bootstrap.min.js diff --git a/public/themes/pterodactyl/vendor/chartjs/chart.min.js b/public/themes/panel/vendor/chartjs/chart.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/chartjs/chart.min.js rename to public/themes/panel/vendor/chartjs/chart.min.js diff --git a/public/themes/pterodactyl/vendor/fontawesome/animation.min.css b/public/themes/panel/vendor/fontawesome/animation.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/fontawesome/animation.min.css rename to public/themes/panel/vendor/fontawesome/animation.min.css diff --git a/public/themes/pterodactyl/vendor/jquery/date-format.min.js b/public/themes/panel/vendor/jquery/date-format.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/jquery/date-format.min.js rename to public/themes/panel/vendor/jquery/date-format.min.js diff --git a/public/themes/pterodactyl/vendor/jquery/jquery.js b/public/themes/panel/vendor/jquery/jquery.js similarity index 100% rename from public/themes/pterodactyl/vendor/jquery/jquery.js rename to public/themes/panel/vendor/jquery/jquery.js diff --git a/public/themes/pterodactyl/vendor/jquery/jquery.min.js b/public/themes/panel/vendor/jquery/jquery.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/jquery/jquery.min.js rename to public/themes/panel/vendor/jquery/jquery.min.js diff --git a/public/themes/pterodactyl/vendor/jquery/jquery.min.map b/public/themes/panel/vendor/jquery/jquery.min.map similarity index 100% rename from public/themes/pterodactyl/vendor/jquery/jquery.min.map rename to public/themes/panel/vendor/jquery/jquery.min.map diff --git a/public/themes/pterodactyl/vendor/lodash/lodash.js b/public/themes/panel/vendor/lodash/lodash.js similarity index 100% rename from public/themes/pterodactyl/vendor/lodash/lodash.js rename to public/themes/panel/vendor/lodash/lodash.js diff --git a/public/themes/pterodactyl/vendor/mousewheel/jquery.mousewheel-min.js b/public/themes/panel/vendor/mousewheel/jquery.mousewheel-min.js similarity index 100% rename from public/themes/pterodactyl/vendor/mousewheel/jquery.mousewheel-min.js rename to public/themes/panel/vendor/mousewheel/jquery.mousewheel-min.js diff --git a/public/themes/pterodactyl/vendor/particlesjs/particles.json b/public/themes/panel/vendor/particlesjs/particles.json similarity index 100% rename from public/themes/pterodactyl/vendor/particlesjs/particles.json rename to public/themes/panel/vendor/particlesjs/particles.json diff --git a/public/themes/pterodactyl/vendor/particlesjs/particles.min.js b/public/themes/panel/vendor/particlesjs/particles.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/particlesjs/particles.min.js rename to public/themes/panel/vendor/particlesjs/particles.min.js diff --git a/public/themes/pterodactyl/vendor/select2/select2.full.min.js b/public/themes/panel/vendor/select2/select2.full.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/select2/select2.full.min.js rename to public/themes/panel/vendor/select2/select2.full.min.js diff --git a/public/themes/pterodactyl/vendor/select2/select2.min.css b/public/themes/panel/vendor/select2/select2.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/select2/select2.min.css rename to public/themes/panel/vendor/select2/select2.min.css diff --git a/public/themes/pterodactyl/vendor/siofu/client.min.js b/public/themes/panel/vendor/siofu/client.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/siofu/client.min.js rename to public/themes/panel/vendor/siofu/client.min.js diff --git a/public/themes/pterodactyl/vendor/slimscroll/jquery.slimscroll.min.js b/public/themes/panel/vendor/slimscroll/jquery.slimscroll.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/slimscroll/jquery.slimscroll.min.js rename to public/themes/panel/vendor/slimscroll/jquery.slimscroll.min.js diff --git a/public/themes/pterodactyl/vendor/socketio/socket.io.js.map b/public/themes/panel/vendor/socketio/socket.io.js.map similarity index 100% rename from public/themes/pterodactyl/vendor/socketio/socket.io.js.map rename to public/themes/panel/vendor/socketio/socket.io.js.map diff --git a/public/themes/pterodactyl/vendor/socketio/socket.io.v203.min.js b/public/themes/panel/vendor/socketio/socket.io.v203.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/socketio/socket.io.v203.min.js rename to public/themes/panel/vendor/socketio/socket.io.v203.min.js diff --git a/public/themes/pterodactyl/vendor/sweetalert/sweetalert.min.css b/public/themes/panel/vendor/sweetalert/sweetalert.min.css similarity index 100% rename from public/themes/pterodactyl/vendor/sweetalert/sweetalert.min.css rename to public/themes/panel/vendor/sweetalert/sweetalert.min.css diff --git a/public/themes/pterodactyl/vendor/sweetalert/sweetalert.min.js b/public/themes/panel/vendor/sweetalert/sweetalert.min.js similarity index 100% rename from public/themes/pterodactyl/vendor/sweetalert/sweetalert.min.js rename to public/themes/panel/vendor/sweetalert/sweetalert.min.js diff --git a/public/themes/pterodactyl/js/admin/functions.js b/public/themes/pterodactyl/js/admin/functions.js deleted file mode 100644 index 26115cd46..000000000 --- a/public/themes/pterodactyl/js/admin/functions.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2015 - 2017 Dane Everitt -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -$.urlParam=function(name){var results=new RegExp("[\\?&]"+name+"=([^&#]*)").exec(decodeURIComponent(window.location.href));if(results==null){return null}else{return results[1]||0}};function getPageName(url){var index=url.lastIndexOf("/")+1;var filenameWithExtension=url.substr(index);var filename=filenameWithExtension.split(".")[0];return filename} -// Remeber Active Tab and Navigate to it on Reload -for(var queryParameters={},queryString=location.search.substring(1),re=/([^&=]+)=([^&]*)/g,m;m=re.exec(queryString);)queryParameters[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);$("a[data-toggle='tab']").click(function(){queryParameters.tab=$(this).attr("href").substring(1),window.history.pushState(null,null,location.pathname+"?"+$.param(queryParameters))}); -if($.urlParam('tab') != null){$('.nav.nav-tabs a[href="#' + $.urlParam('tab') + '"]').tab('show');} diff --git a/resources/lang/en/strings.php b/resources/lang/en/strings.php index ddade2cea..1ddd8e153 100644 --- a/resources/lang/en/strings.php +++ b/resources/lang/en/strings.php @@ -91,5 +91,5 @@ return [ 'enable' => 'Enable', 'disable' => 'Disable', 'save' => 'Save', - 'copyright' => '© 2015 - :year Pterodactyl Software', + 'copyright' => '© 2015 - :year Panel', ]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index a82aaa1be..9cccf3508 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -98,7 +98,7 @@ return [ 'attributes' => [], - // Internal validation logic for Pterodactyl + // Internal validation logic for Panel 'internal' => [ 'variable_value' => ':env variable', 'invalid_password' => 'The password provided was invalid for this account.', diff --git a/resources/scripts/api/http.ts b/resources/scripts/api/http.ts index 382c1119a..c8a76e692 100644 --- a/resources/scripts/api/http.ts +++ b/resources/scripts/api/http.ts @@ -58,7 +58,7 @@ export function httpErrorToHuman(error: any): string { return data.errors[0].detail; } - // Errors from wings directory, mostly just for file uploads. + // Errors from daemon directory, mostly just for file uploads. if (data.error && typeof data.error === 'string') { return data.error; } diff --git a/resources/scripts/components/App.tsx b/resources/scripts/components/App.tsx index 935400030..881ff4c01 100644 --- a/resources/scripts/components/App.tsx +++ b/resources/scripts/components/App.tsx @@ -21,7 +21,7 @@ const AuthenticationRouter = lazy(() => import(/* webpackChunkName: "auth" */ '@ interface ExtendedWindow extends Window { SiteConfiguration?: SiteSettings; - PterodactylUser?: { + PanelUser?: { uuid: string; username: string; email: string; @@ -38,17 +38,17 @@ interface ExtendedWindow extends Window { setupInterceptors(history); const App = () => { - const { PterodactylUser, SiteConfiguration } = window as ExtendedWindow; - if (PterodactylUser && !store.getState().user.data) { + const { PanelUser, SiteConfiguration } = window as ExtendedWindow; + if (PanelUser && !store.getState().user.data) { store.getActions().user.setUserData({ - uuid: PterodactylUser.uuid, - username: PterodactylUser.username, - email: PterodactylUser.email, - language: PterodactylUser.language, - rootAdmin: PterodactylUser.root_admin, - useTotp: PterodactylUser.use_totp, - createdAt: new Date(PterodactylUser.created_at), - updatedAt: new Date(PterodactylUser.updated_at), + uuid: PanelUser.uuid, + username: PanelUser.username, + email: PanelUser.email, + language: PanelUser.language, + rootAdmin: PanelUser.root_admin, + useTotp: PanelUser.use_totp, + createdAt: new Date(PanelUser.created_at), + updatedAt: new Date(PanelUser.updated_at), }); } diff --git a/resources/scripts/components/auth/LoginFormContainer.tsx b/resources/scripts/components/auth/LoginFormContainer.tsx index 62749815b..74530c00a 100644 --- a/resources/scripts/components/auth/LoginFormContainer.tsx +++ b/resources/scripts/components/auth/LoginFormContainer.tsx @@ -35,21 +35,11 @@ export default forwardRef(({ title, ...props }, ref) =>
- +
{props.children}
-

- © 2015 - {new Date().getFullYear()}  - - Pterodactyl Software - -

+

© 2015 - {new Date().getFullYear()} 

)); diff --git a/resources/scripts/components/elements/PageContentBlock.tsx b/resources/scripts/components/elements/PageContentBlock.tsx index a4df19567..13c787bfa 100644 --- a/resources/scripts/components/elements/PageContentBlock.tsx +++ b/resources/scripts/components/elements/PageContentBlock.tsx @@ -28,11 +28,11 @@ const PageContentBlock: React.FC = ({ title, showFlashKey

- Pterodactyl® + Panel  © 2015 - {new Date().getFullYear()}

diff --git a/resources/scripts/components/server/WebsocketHandler.tsx b/resources/scripts/components/server/WebsocketHandler.tsx index 2772013df..f8186d785 100644 --- a/resources/scripts/components/server/WebsocketHandler.tsx +++ b/resources/scripts/components/server/WebsocketHandler.tsx @@ -48,7 +48,7 @@ export default () => { socket.on('token expired', () => updateToken(uuid, socket)); socket.on('jwt error', (error: string) => { setConnectionState(false); - console.warn('JWT validation error from wings:', error); + console.warn('JWT validation error from daemon:', error); if (reconnectErrors.find((v) => error.toLowerCase().indexOf(v) >= 0)) { updateToken(uuid, socket); diff --git a/resources/scripts/components/server/backups/CreateBackupButton.tsx b/resources/scripts/components/server/backups/CreateBackupButton.tsx index fef0150c7..d0cb98fd5 100644 --- a/resources/scripts/components/server/backups/CreateBackupButton.tsx +++ b/resources/scripts/components/server/backups/CreateBackupButton.tsx @@ -40,7 +40,7 @@ const ModalContent = ({ ...props }: RequiredModalProps) => { label={'Ignored Files & Directories'} description={` Enter the files or folders to ignore while generating this backup. Leave blank to use - the contents of the .pteroignore file in the root of the server directory if present. + the contents of the .panelignore file in the root of the server directory if present. Wildcard matching of files and folders is supported in addition to negating a rule by prefixing the path with an exclamation point. `} diff --git a/resources/scripts/components/server/console/Console.tsx b/resources/scripts/components/server/console/Console.tsx index 25f07439f..0b3cee683 100644 --- a/resources/scripts/components/server/console/Console.tsx +++ b/resources/scripts/components/server/console/Console.tsx @@ -52,7 +52,7 @@ const terminalProps: ITerminalOptions = { }; export default () => { - const TERMINAL_PRELUDE = '\u001b[1m\u001b[33mcontainer@pterodactyl~ \u001b[0m'; + const TERMINAL_PRELUDE = '\u001b[1m\u001b[33mcontainer@panel~ \u001b[0m'; const ref = useRef(null); const terminal = useMemo(() => new Terminal({ ...terminalProps }), []); const fitAddon = new FitAddon(); diff --git a/resources/scripts/components/server/features/PIDLimitModalFeature.tsx b/resources/scripts/components/server/features/PIDLimitModalFeature.tsx index f4061bc6d..995742eeb 100644 --- a/resources/scripts/components/server/features/PIDLimitModalFeature.tsx +++ b/resources/scripts/components/server/features/PIDLimitModalFeature.tsx @@ -64,12 +64,12 @@ const PIDLimitModalFeature = () => {

This server has reached the maximum process or memory limit.

- Increasing container_pid_limit in the wings + Increasing container_pid_limit in the daemon configuration, config.yml, might help resolve this issue.

- Note: Wings must be restarted for the configuration file changes to take effect + Note: Daemon must be restarted for the configuration file changes to take effect

- {hash.replace(/^#/, '').endsWith('.pteroignore') && ( + {hash.replace(/^#/, '').endsWith('.panelignore') && (

- You're editing a .pteroignore{' '} + You're editing a .panelignore{' '} file. Any files or directories listed in here will be excluded from backups. Wildcards are supported by using an asterisk (*). You can negate a prior rule by prepending an exclamation point ( diff --git a/resources/scripts/components/server/files/FileObjectRow.tsx b/resources/scripts/components/server/files/FileObjectRow.tsx index 08a3240c2..5c7c9347a 100644 --- a/resources/scripts/components/server/files/FileObjectRow.tsx +++ b/resources/scripts/components/server/files/FileObjectRow.tsx @@ -40,7 +40,7 @@ const FileObjectRow = ({ file }: { file: FileObject }) => ( key={file.name} onContextMenu={(e) => { e.preventDefault(); - window.dispatchEvent(new CustomEvent(`pterodactyl:files:ctx:${file.key}`, { detail: e.clientX })); + window.dispatchEvent(new CustomEvent(`panel:files:ctx:${file.key}`, { detail: e.clientX })); }} > diff --git a/resources/scripts/components/server/schedules/TaskDetailsModal.tsx b/resources/scripts/components/server/schedules/TaskDetailsModal.tsx index f54c0a258..578c207c0 100644 --- a/resources/scripts/components/server/schedules/TaskDetailsModal.tsx +++ b/resources/scripts/components/server/schedules/TaskDetailsModal.tsx @@ -168,7 +168,7 @@ const TaskDetailsModal = ({ schedule, task }: Props) => { diff --git a/resources/scripts/components/server/startup/VariableBox.tsx b/resources/scripts/components/server/startup/VariableBox.tsx index ba3a4fe47..cffadd8dd 100644 --- a/resources/scripts/components/server/startup/VariableBox.tsx +++ b/resources/scripts/components/server/startup/VariableBox.tsx @@ -60,15 +60,15 @@ const VariableBox = ({ variable }: Props) => { return ( +

{!variable.isEditable && ( - Read Only + Read Only )} {variable.name}

} > - + {useSwitch ? ( <> @@ -128,9 +128,7 @@ const VariableBox = ({ variable }: Props) => { )} -

- {variable.description} -

+

{variable.description}

); }; diff --git a/resources/views/admin/eggs/new.blade.php b/resources/views/admin/eggs/new.blade.php index 9a0a07849..2644ac6d8 100644 --- a/resources/views/admin/eggs/new.blade.php +++ b/resources/views/admin/eggs/new.blade.php @@ -47,7 +47,7 @@
- +

Forces all outgoing network traffic to have its Source IP NATed to the IP of the server's primary allocation IP. @@ -64,7 +64,7 @@

- +

The docker images available to servers using this egg. Enter one per line. Users will be able to select from this list of images if more than one value is provided.

@@ -142,7 +142,7 @@ }); $('#pNestId').on('change', function (event) { $('#pConfigFrom').html('').select2({ - data: $.map(_.get(Pterodactyl.nests, $(this).val() + '.eggs', []), function (item) { + data: $.map(_.get(Panel.nests, $(this).val() + '.eggs', []), function (item) { return { id: item.id, text: item.name + ' <' + item.author + '>', diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index ed26a92ab..b2367ff44 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -27,9 +27,13 @@
@if ($version->isLatestPanel()) - You are running Pterodactyl Panel version {{ config('app.version') }}. Your panel is up-to-date! + You are running Panel version {{ config('app.version') }}. Your panel is up-to-date! @else - Your panel is not up-to-date! The latest version is {{ $version->getPanel() }} and you are currently running version {{ config('app.version') }}. + Your panel is not up-to-date! The latest version is + + {{ $version->getPanel() }} + + and you are currently running version {{ config('app.version') }}. @endif
@@ -40,11 +44,11 @@
 
diff --git a/resources/views/admin/nests/index.blade.php b/resources/views/admin/nests/index.blade.php index 4bb6ae784..ea5a28dc6 100644 --- a/resources/views/admin/nests/index.blade.php +++ b/resources/views/admin/nests/index.blade.php @@ -16,7 +16,7 @@
- Eggs are a powerful feature of Pterodactyl Panel that allow for extreme flexibility and configuration. Please note that while powerful, modifying an egg wrongly can very easily brick your servers and cause more problems. Please avoid editing our default eggs — those provided by support@pterodactyl.io — unless you are absolutely sure of what you are doing. + Eggs are a powerful feature of Panel that allow for extreme flexibility and configuration. Please note that while powerful, modifying an egg wrongly can very easily brick your servers and cause more problems. Please avoid editing our default eggs — those provided by panel@example.com — unless you are absolutely sure of what you are doing.
diff --git a/resources/views/admin/nests/view.blade.php b/resources/views/admin/nests/view.blade.php index 9a6730746..a3884b952 100644 --- a/resources/views/admin/nests/view.blade.php +++ b/resources/views/admin/nests/view.blade.php @@ -55,7 +55,7 @@
-

The author of this service option. Please direct questions and issues to them unless this is an official option authored by support@pterodactyl.io.

+

The author of this service option. Please direct questions and issues to them unless this is an official option authored by panel@example.com.

diff --git a/resources/views/admin/nodes/new.blade.php b/resources/views/admin/nodes/new.blade.php index b10d08a76..75251e20e 100644 --- a/resources/views/admin/nodes/new.blade.php +++ b/resources/views/admin/nodes/new.blade.php @@ -103,7 +103,7 @@
- +

Enter the directory where server files should be stored. If you use OVH you should check your partition scheme. You may need to use /home/daemon-data to have enough space.

diff --git a/resources/views/admin/nodes/view/configuration.blade.php b/resources/views/admin/nodes/view/configuration.blade.php index 1bbf15f33..530516b74 100644 --- a/resources/views/admin/nodes/view/configuration.blade.php +++ b/resources/views/admin/nodes/view/configuration.blade.php @@ -38,7 +38,7 @@
{{ $node->getYamlConfiguration() }}
@@ -50,7 +50,7 @@

Use the button below to generate a custom deployment command that can be used to configure - wings on the target server with a single command. + daemon on the target server with a single command.

- +
@@ -253,7 +253,7 @@
- +
diff --git a/resources/views/admin/servers/partials/navigation.blade.php b/resources/views/admin/servers/partials/navigation.blade.php index 964eac8e3..2f74d514e 100644 --- a/resources/views/admin/servers/partials/navigation.blade.php +++ b/resources/views/admin/servers/partials/navigation.blade.php @@ -1,5 +1,5 @@ @php - /** @var \Pterodactyl\Models\Server $server */ + /** @var \App\Models\Server $server */ $router = app('router'); @endphp
diff --git a/resources/views/admin/servers/view/startup.blade.php b/resources/views/admin/servers/view/startup.blade.php index 05330298e..7be24ac12 100644 --- a/resources/views/admin/servers/view/startup.blade.php +++ b/resources/views/admin/servers/view/startup.blade.php @@ -110,7 +110,7 @@ $(document).ready(function () { $('#pEggId').select2({placeholder: 'Select a Nest Egg'}).on('change', function () { var selectedEgg = _.isNull($(this).val()) ? $(this).find('option').first().val() : $(this).val(); - var parentChain = _.get(Pterodactyl.nests, $("#pNestId").val()); + var parentChain = _.get(Panel.nests, $("#pNestId").val()); var objectChain = _.get(parentChain, 'eggs.' + selectedEgg); const images = _.get(objectChain, 'docker_images', []) @@ -120,7 +120,7 @@ let opt = document.createElement('option'); opt.value = images[keys[i]]; opt.innerHTML = keys[i] + " (" + images[keys[i]] + ")"; - if (objectChain.id === parseInt(Pterodactyl.server.egg_id) && Pterodactyl.server.image == opt.value) { + if (objectChain.id === parseInt(Panel.server.egg_id) && Panel.server.image == opt.value) { opt.selected = true } $('#pDockerImage').append(opt); @@ -129,9 +129,9 @@ $('#pDockerImageCustom').val(''); }) - if (objectChain.id === parseInt(Pterodactyl.server.egg_id)) { - if ($('#pDockerImage').val() != Pterodactyl.server.image) { - $('#pDockerImageCustom').val(Pterodactyl.server.image); + if (objectChain.id === parseInt(Panel.server.egg_id)) { + if ($('#pDockerImage').val() != Panel.server.image) { + $('#pDockerImageCustom').val(Panel.server.image); } } @@ -143,7 +143,7 @@ $('#appendVariablesTo').html(''); $.each(_.get(objectChain, 'variables', []), function (i, item) { - var setValue = _.get(Pterodactyl.server_variables, item.env_variable, item.default_value); + var setValue = _.get(Panel.server_variables, item.env_variable, item.default_value); var isRequired = (item.required === 1) ? 'Required ' : ''; var dataAppend = ' \
\ @@ -167,7 +167,7 @@ $('#pNestId').select2({placeholder: 'Select a Nest'}).on('change', function () { $('#pEggId').html('').select2({ - data: $.map(_.get(Pterodactyl.nests, $(this).val() + '.eggs', []), function (item) { + data: $.map(_.get(Panel.nests, $(this).val() + '.eggs', []), function (item) { return { id: item.id, text: item.name, @@ -175,8 +175,8 @@ }), }); - if (_.isObject(_.get(Pterodactyl.nests, $(this).val() + '.eggs.' + Pterodactyl.server.egg_id))) { - $('#pEggId').val(Pterodactyl.server.egg_id); + if (_.isObject(_.get(Panel.nests, $(this).val() + '.eggs.' + Panel.server.egg_id))) { + $('#pEggId').val(Panel.server.egg_id); } $('#pEggId').change(); diff --git a/resources/views/admin/settings/advanced.blade.php b/resources/views/admin/settings/advanced.blade.php index 0f2056ca4..dc5543ca9 100644 --- a/resources/views/admin/settings/advanced.blade.php +++ b/resources/views/admin/settings/advanced.blade.php @@ -6,7 +6,7 @@ @endsection @section('content-header') -

Advanced SettingsConfigure advanced settings for Pterodactyl.

+

Advanced SettingsConfigure advanced settings for Panel.