Merge branch '1.0-develop' into develop
This commit is contained in:
commit
6f5fb09c13
10 changed files with 25 additions and 25 deletions
4
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
|
@ -68,8 +68,8 @@ body:
|
||||||
Run the following command to collect logs on your system.
|
Run the following command to collect logs on your system.
|
||||||
|
|
||||||
Wings: `sudo wings diagnostics`
|
Wings: `sudo wings diagnostics`
|
||||||
Panel: `tail -n 100 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | nc bin.ptdl.co 99`
|
Panel: `tail -n 150 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | nc pteropaste.com 99`
|
||||||
placeholder: "https://bin.ptdl.co/a1h6z"
|
placeholder: "https://pteropaste.com/a1h6z"
|
||||||
render: bash
|
render: bash
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
3
.github/workflows/docker.yaml
vendored
3
.github/workflows/docker.yaml
vendored
|
@ -41,6 +41,7 @@ jobs:
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v2
|
||||||
|
if: "github.event_name != 'pull_request'"
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
|
@ -54,7 +55,7 @@ jobs:
|
||||||
sed -i "s/ 'version' => 'canary',/ 'version' => '${REF:1}',/" config/app.php
|
sed -i "s/ 'version' => 'canary',/ 'version' => '${REF:1}',/" config/app.php
|
||||||
|
|
||||||
- name: Build and Push
|
- name: Build and Push
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Containerfile
|
file: ./Containerfile
|
||||||
|
|
22
README.md
22
README.md
|
@ -27,17 +27,17 @@ 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 developement.
|
I would like to extend my sincere thanks to the following sponsors for helping fund Pterodactyl's developement.
|
||||||
[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. |
|
| [**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. |
|
| [**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! |
|
| [**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! |
|
||||||
| [**Skynode**](https://www.skynode.pro/) | Skynode provides blazing fast game servers along with a top-notch user experience. Whatever our clients are looking for, we're able to provide it! |
|
| [**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. |
|
||||||
| [**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. |
|
| [**Pterodactyl Market**](https://pterodactylmarket.com/) | Pterodactyl Market is a one-and-stop shop for Pterodactyl. In our market, you can find Add-ons, Themes, Eggs, and more for Pterodactyl. |
|
||||||
| [**Pterodactyl Market**](https://pterodactylmarket.com/) | Pterodactyl Market is a one-and-stop shop for Pterodactyl. In our market, you can find Add-ons, Themes, Eggs, and more for Pterodactyl. |
|
| [**DutchIS**](https://dutchis.net?ref=pterodactyl) | DutchIS provides instant infrastructure such as pay per use VPS hosting. Start your game hosting journey on DutchIS. |
|
||||||
| [**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. |
|
||||||
| [**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
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ class EmailSettingsCommand extends Command
|
||||||
trans('command/messages.environment.mail.ask_driver'),
|
trans('command/messages.environment.mail.ask_driver'),
|
||||||
[
|
[
|
||||||
'smtp' => 'SMTP Server',
|
'smtp' => 'SMTP Server',
|
||||||
'mail' => 'PHP\'s Internal Mail Function',
|
'sendmail' => 'sendmail Binary',
|
||||||
'mailgun' => 'Mailgun Transactional Email',
|
'mailgun' => 'Mailgun Transactional Email',
|
||||||
'mandrill' => 'Mandrill Transactional Email',
|
'mandrill' => 'Mandrill Transactional Email',
|
||||||
'postmark' => 'Postmark Transactional Email',
|
'postmark' => 'Postmark Transactional Email',
|
||||||
|
|
|
@ -10,7 +10,7 @@ class PruneOrphanedBackupsCommand extends Command
|
||||||
{
|
{
|
||||||
protected $signature = 'p:maintenance:prune-backups {--prune-age=}';
|
protected $signature = 'p:maintenance:prune-backups {--prune-age=}';
|
||||||
|
|
||||||
protected $description = 'Marks all backups that have not completed in the last "n" minutes as being failed.';
|
protected $description = 'Marks all backups older than "n" minutes that have not yet completed as being failed.';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PruneOrphanedBackupsCommand constructor.
|
* PruneOrphanedBackupsCommand constructor.
|
||||||
|
@ -38,7 +38,7 @@ class PruneOrphanedBackupsCommand extends Command
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->warn("Marking $count backups that have not been marked as completed in the last $since minutes as failed.");
|
$this->warn("Marking $count uncompleted backups that are older than $since minutes as failed.");
|
||||||
|
|
||||||
$query->update([
|
$query->update([
|
||||||
'is_successful' => false,
|
'is_successful' => false,
|
||||||
|
|
|
@ -15,8 +15,6 @@ final class Time
|
||||||
*/
|
*/
|
||||||
public static function getMySQLTimezoneOffset(string $timezone): string
|
public static function getMySQLTimezoneOffset(string $timezone): string
|
||||||
{
|
{
|
||||||
$offset = round(CarbonImmutable::now($timezone)->getTimezone()->getOffset(CarbonImmutable::now('UTC')) / 3600);
|
return CarbonImmutable::now($timezone)->getTimezone()->toOffsetName();
|
||||||
|
|
||||||
return sprintf('%s%s:00', $offset > 0 ? '+' : '-', str_pad((string) abs($offset), 2, '0', STR_PAD_LEFT));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ class SettingsController extends ClientApiController
|
||||||
public function rename(RenameServerRequest $request, Server $server): JsonResponse
|
public function rename(RenameServerRequest $request, Server $server): JsonResponse
|
||||||
{
|
{
|
||||||
$name = $request->input('name');
|
$name = $request->input('name');
|
||||||
$description = $request->input('description') ?? $server->description;
|
$description = $request->has('description') ? (string) $request->input('description') : $server->description;
|
||||||
$this->repository->update($server->id, [
|
$this->repository->update($server->id, [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
|
|
|
@ -119,14 +119,14 @@ export default ({ database, className }: Props) => {
|
||||||
<Can action={'database.view_password'}>
|
<Can action={'database.view_password'}>
|
||||||
<div css={tw`mt-6`}>
|
<div css={tw`mt-6`}>
|
||||||
<Label>Password</Label>
|
<Label>Password</Label>
|
||||||
<CopyOnClick text={database.password}>
|
<CopyOnClick text={database.password} showInNotification={false}>
|
||||||
<Input type={'text'} readOnly value={database.password} />
|
<Input type={'text'} readOnly value={database.password} />
|
||||||
</CopyOnClick>
|
</CopyOnClick>
|
||||||
</div>
|
</div>
|
||||||
</Can>
|
</Can>
|
||||||
<div css={tw`mt-6`}>
|
<div css={tw`mt-6`}>
|
||||||
<Label>JDBC Connection String</Label>
|
<Label>JDBC Connection String</Label>
|
||||||
<CopyOnClick text={jdbcConnectionString}>
|
<CopyOnClick text={jdbcConnectionString} showInNotification={false}>
|
||||||
<Input type={'text'} readOnly value={jdbcConnectionString} />
|
<Input type={'text'} readOnly value={jdbcConnectionString} />
|
||||||
</CopyOnClick>
|
</CopyOnClick>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -18,11 +18,12 @@ import { ServerContext } from '@/state/server';
|
||||||
import styles from './style.module.css';
|
import styles from './style.module.css';
|
||||||
|
|
||||||
function Clickable({ file, children }: { file: FileObject; children: ReactNode }) {
|
function Clickable({ file, children }: { file: FileObject; children: ReactNode }) {
|
||||||
|
const [canRead] = usePermissions(['file.read']);
|
||||||
const [canReadContents] = usePermissions(['file.read-content']);
|
const [canReadContents] = usePermissions(['file.read-content']);
|
||||||
const id = ServerContext.useStoreState(state => state.server.data!.id);
|
const id = ServerContext.useStoreState(state => state.server.data!.id);
|
||||||
const directory = ServerContext.useStoreState(state => state.files.directory);
|
const directory = ServerContext.useStoreState(state => state.files.directory);
|
||||||
|
|
||||||
return !canReadContents || (file.isFile && !file.isEditable()) ? (
|
return (file.isFile && (!file.isEditable() || !canReadContents)) || (!file.isFile && !canRead) ? (
|
||||||
<div className={styles.details}>{children}</div>
|
<div className={styles.details}>{children}</div>
|
||||||
) : (
|
) : (
|
||||||
<NavLink
|
<NavLink
|
||||||
|
|
|
@ -93,7 +93,7 @@ const MassActionsBar = () => {
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<Portal>
|
<Portal>
|
||||||
<div className="fixed bottom-0 z-50 mb-6 flex w-full justify-center">
|
<div className="pointer-events-none fixed bottom-0 z-50 mb-6 flex w-full justify-center">
|
||||||
<FadeTransition duration="duration-75" show={selectedFiles.length > 0} appear unmount>
|
<FadeTransition duration="duration-75" show={selectedFiles.length > 0} appear unmount>
|
||||||
<div className="pointer-events-auto flex items-center space-x-4 rounded bg-black/50 p-4">
|
<div className="pointer-events-auto flex items-center space-x-4 rounded bg-black/50 p-4">
|
||||||
<Button onClick={() => setShowMove(true)}>Move</Button>
|
<Button onClick={() => setShowMove(true)}>Move</Button>
|
||||||
|
|
Loading…
Reference in a new issue