1
1
mirror of https://github.com/pterodactyl/panel.git synced 2024-11-25 10:32:31 +01:00

Merge branch '1.0-develop' into develop

This commit is contained in:
Matthew Penner 2023-12-29 22:11:34 -07:00
commit fe83a4f755
No known key found for this signature in database
7 changed files with 43 additions and 24 deletions

View File

@ -3,6 +3,28 @@ This file is a running track of new features and fixes to each version of the pa
This project follows [Semantic Versioning](http://semver.org) guidelines. 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 ## v1.11.3
### Changed ### Changed
* When updating a server's description through the client API, if no value is specified, the description will now remain unchanged. * When updating a server's description through the client API, if no value is specified, the description will now remain unchanged.

View File

@ -27,17 +27,12 @@ Stop settling for less. Make game servers a first class citizen on your platform
I would like to extend my sincere thanks to the following sponsors for helping fund Pterodactyl's development. 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) [Interested in becoming a sponsor?](https://github.com/sponsors/matthewpi)
| Company | About | | Company | About |
|-----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [**WISP**](https://wisp.gg) | Extra features. | | [**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. |
| [**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. |
| [**WemX**](https://wemx.net/) | WemX helps automate your hosting company or SaaS business by automating billing, user management, authentication, and much more. | | [**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! |
| [**BisectHosting**](https://www.bisecthosting.com/) | BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012. | | [**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. |
| [**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. |
| [**DutchIS**](https://dutchis.net?ref=pterodactyl) | DutchIS provides instant infrastructure such as pay per use VPS hosting. Start your game hosting journey on DutchIS. |
| [**Skoali**](https://skoali.com/) | Skoali is a French company that hosts game servers and other types of services (VPS, WEB, Dedicated servers, ...). We also have a free plan for Minecraft and Garry's Mod. |
| [**Rabbit Computing**](https://www.rabbitcomputing.com/link.php?id=5) | Rabbit Computing offers powerful VPS servers, highly available game hosting, and fully unlimited web hosting. Use code README for 20% off your first three months! |
### Supported Games ### Supported Games

View File

@ -12,7 +12,7 @@
"steam_disk_space" "steam_disk_space"
], ],
"docker_images": { "docker_images": {
"quay.io\/pterodactyl\/core:rust": "quay.io\/pterodactyl\/core:rust" "ghcr.io\/pterodactyl\/games:rust": "ghcr.io\/pterodactyl\/games:rust"
}, },
"file_denylist": [], "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}}", "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}}",
@ -47,7 +47,7 @@
"default_value": "vanilla", "default_value": "vanilla",
"user_viewable": true, "user_viewable": true,
"user_editable": true, "user_editable": true,
"rules": "required|in:carbon,oxide,vanilla", "rules": "required|in:vanilla,oxide,carbon",
"field_type": "text" "field_type": "text"
}, },
{ {

View File

@ -222,7 +222,7 @@
configs configs
coreutils coreutils
mysql80 mysql80
nodejs-18_x nodejs_18
nodePackages.pnpm nodePackages.pnpm
php81WithExtensions php81WithExtensions
postgresql_15 postgresql_15

View File

@ -23,7 +23,7 @@ export interface ServerEggVariable {
description: string; description: string;
envVariable: string; envVariable: string;
defaultValue: string; defaultValue: string;
serverValue: string; serverValue: string | null;
isEditable: boolean; isEditable: boolean;
rules: string[]; rules: string[];
} }

View File

@ -5,7 +5,6 @@ import { usePermissions } from '@/plugins/usePermissions';
import InputSpinner from '@/components/elements/InputSpinner'; import InputSpinner from '@/components/elements/InputSpinner';
import Input from '@/components/elements/Input'; import Input from '@/components/elements/Input';
import Switch from '@/components/elements/Switch'; import Switch from '@/components/elements/Switch';
import tw from 'twin.macro';
import { debounce } from 'debounce'; import { debounce } from 'debounce';
import updateStartupVariable from '@/api/server/updateStartupVariable'; import updateStartupVariable from '@/api/server/updateStartupVariable';
import useFlash from '@/plugins/useFlash'; import useFlash from '@/plugins/useFlash';
@ -61,15 +60,15 @@ const VariableBox = ({ variable }: Props) => {
return ( return (
<TitledGreyBox <TitledGreyBox
title={ title={
<p css={tw`text-sm uppercase`}> <p className="text-sm uppercase">
{!variable.isEditable && ( {!variable.isEditable && (
<span css={tw`bg-neutral-700 text-xs py-1 px-2 rounded-full mr-2 mb-1`}>Read Only</span> <span className="bg-neutral-700 text-xs py-1 px-2 rounded-full mr-2 mb-1">Read Only</span>
)} )}
{variable.name} {variable.name}
</p> </p>
} }
> >
<FlashMessageRender byKey={FLASH_KEY} css={tw`mb-2 md:mb-4`} /> <FlashMessageRender byKey={FLASH_KEY} className="mb-2 md:mb-4" />
<InputSpinner visible={loading}> <InputSpinner visible={loading}>
{useSwitch ? ( {useSwitch ? (
<> <>
@ -97,7 +96,7 @@ const VariableBox = ({ variable }: Props) => {
<Select <Select
onChange={e => setVariableValue(e.target.value)} onChange={e => setVariableValue(e.target.value)}
name={variable.envVariable} name={variable.envVariable}
defaultValue={variable.serverValue} defaultValue={variable.serverValue ?? variable.defaultValue}
disabled={!canEdit || !variable.isEditable} disabled={!canEdit || !variable.isEditable}
> >
{selectValues.map(selectValue => ( {selectValues.map(selectValue => (
@ -120,7 +119,7 @@ const VariableBox = ({ variable }: Props) => {
}} }}
readOnly={!canEdit || !variable.isEditable} readOnly={!canEdit || !variable.isEditable}
name={variable.envVariable} name={variable.envVariable}
defaultValue={variable.serverValue} defaultValue={variable.serverValue ?? ''}
placeholder={variable.defaultValue} placeholder={variable.defaultValue}
/> />
</> </>
@ -128,7 +127,10 @@ const VariableBox = ({ variable }: Props) => {
</> </>
)} )}
</InputSpinner> </InputSpinner>
<p css={tw`mt-1 text-xs text-neutral-300`}>{variable.description}</p>
<p className="mt-1 text-xs text-neutral-300">
{variable.description}
</p>
</TitledGreyBox> </TitledGreyBox>
); );
}; };

View File

@ -8,7 +8,7 @@ with pkgs;
buildInputs = [ buildInputs = [
alejandra alejandra
composer composer
nodejs-18_x nodejs_18
nodePackages.pnpm nodePackages.pnpm
php81WithExtensions php81WithExtensions