Compare commits

..

2506 commits

Author SHA1 Message Date
esy
61faabcbfd feat: add license
Some checks failed
Docker / Push (push) Has been cancelled
Laravel / Static Analysis (push) Has been cancelled
Laravel / Lint (push) Has been cancelled
Laravel / Tests (mariadb:10.2, 8.1) (push) Has been cancelled
Laravel / Tests (mariadb:10.2, 8.2) (push) Has been cancelled
Laravel / Tests (mariadb:10.9, 8.1) (push) Has been cancelled
Laravel / Tests (mariadb:10.9, 8.2) (push) Has been cancelled
Laravel / Tests (mysql:8, 8.1) (push) Has been cancelled
Laravel / Tests (mysql:8, 8.2) (push) Has been cancelled
Laravel / Tests (postgres:13, 8.1) (push) Has been cancelled
Laravel / Tests (postgres:13, 8.2) (push) Has been cancelled
Laravel / Tests (postgres:14, 8.1) (push) Has been cancelled
Laravel / Tests (postgres:14, 8.2) (push) Has been cancelled
Laravel / Tests (postgres:15, 8.1) (push) Has been cancelled
Laravel / Tests (postgres:15, 8.2) (push) Has been cancelled
UI / Lint (push) Has been cancelled
UI / Tests (16) (push) Has been cancelled
UI / Tests (18) (push) Has been cancelled
2024-09-23 20:07:52 +00:00
Matthew Penner
a9bdf7a1ef
Merge branch '1.0-develop' into develop 2023-10-02 17:06:39 -06:00
Matthew Penner
7fa0c26d80
Update README.md 2023-10-02 17:06:05 -06:00
Matthew Penner
804a08bd2e
nix: update flake.lock 2023-10-02 16:59:23 -06:00
Matthew Penner
8ffe0f1ff0
chore: fix eslint 2023-10-02 16:56:48 -06:00
Matthew Penner
9b35a55eea
ui: make the Input component slightly shorter 2023-09-29 16:34:56 -06:00
Matthew Penner
35ded9def8
ui(admin): fix server egg select improperly switching 2023-09-29 16:33:15 -06:00
Matthew Penner
3721b2007b
ui(admin): fix egg creation 2023-09-28 13:48:21 -06:00
Matthew Penner
6f5fb09c13
Merge branch '1.0-develop' into develop 2023-08-22 19:22:50 -06:00
Boy132
5a417e9adb
app(setup): replace mail with sendmail driver (#4750) 2023-08-22 19:18:05 -06:00
Boy132
51cee7688a
app: update prune-backup command description (#4754) 2023-08-22 19:17:18 -06:00
Boy132
67b2d944a6
ui(client): allow MassActionBar to be clicked through (#4753) 2023-08-22 19:12:57 -06:00
Matthew Penner
57d27293d2
github(template): update paste domain (#4757)
Switch from `bin.ptdl.co` to `pteropaste.com`
2023-08-22 15:08:14 -10:00
Boy132
1af200c464 Replace bin.ptdl.co with pteropaste.com
ptdl.co always has cert issues. pteropaste is used anywhere else (e.g. in Discord bot commands)
Also increased the line number to 150.
2023-08-22 15:05:55 -10:00
Matthew Penner
97049f48c3
ui(server): hide sensitive information in copy-on-click notifications (#4761) 2023-08-22 15:04:35 -10:00
Vadym
2d4071ca25 do not show strings with password in notification text 2023-08-22 15:03:47 -10:00
Matthew Penner
5cd2697be3
api(client): allow setting empty server description
Closes https://github.com/pterodactyl/panel/issues/4752
2023-08-22 15:02:56 -10:00
Robert Nisipeanu
85f1259709 fix(4752): check if description field present on request 2023-08-22 15:01:49 -10:00
Matthew Penner
bf1768406b
ui(server): fix permissions check on file manager (#4793) 2023-08-22 15:01:14 -10:00
Boy132
a83058668f only files check for "read-content", check folders for "read"
fixes #4792
2023-08-22 15:00:25 -10:00
Matthew Penner
987440c8ca
app: fix formatting 2023-08-22 18:59:34 -06:00
Matthew Penner
341fa0a52d
docker: fix log directory (#4839) 2023-08-22 14:59:12 -10:00
Michael Parker
aa2f797f6f fix panel log folder
resolves #4838

Fixes an issue with the log symlink as well
2023-08-22 14:57:45 -10:00
Matthew Penner
04d83edd36
app: fix getMySQLTimezoneOffset() truncating seconds
Previously the `getMySQLTimezoneOffset()` function would truncate the
seconds part of a time offset (returning `+9:00` instead of `+9:30`) for
example. This only affects timezones with offsets that contain minutes.

Closes https://github.com/pterodactyl/panel/issues/4821
Superseeds https://github.com/pterodactyl/panel/pull/4827

Co-authored-by: danny6167 <daniel@barteck.com.au>
2023-08-22 18:54:59 -06:00
Matthew Penner
15860613b6
Update README.md 2023-08-22 18:50:11 -06:00
Matthew Penner
3cd15d6f21
ci(docker): skip login on pull requests 2023-07-11 20:52:09 -06:00
Matthew Penner
d3c6568522
Merge branch '1.0-develop' into develop 2023-07-11 20:40:41 -06:00
Matthew Penner
29783ed240
egg(rust): add support for Carbon
Rebased version of #4734 to 1.0-develop
2023-07-11 20:37:14 -06:00
Matthew Penner
b7b128efc5
Merge branch '1.0-develop' into develop 2023-06-28 20:24:29 -06:00
Matthew Penner
7c8bdfc4d8
Update README.md 2023-06-28 20:23:53 -06:00
Matthew Penner
eaf46429f2
Merge branch '1.0-develop' into develop 2023-05-12 23:12:06 -06:00
Matthew Penner
bad765039b
Update README.md 2023-05-12 23:10:17 -06:00
Matthew Penner
b23f3114e4
Update README.md 2023-05-12 23:08:43 -06:00
Matthew Penner
dc6fadd1c5
Merge branch '1.0-develop' into develop 2023-03-11 14:12:23 -07:00
Matthew Penner
8bfcffc477
Update README.md 2023-03-11 14:11:34 -07:00
Matthew Penner
f5ce1a240c
ci: install pnpm 2023-02-23 14:39:45 -07:00
Matthew Penner
8320c64918
switch from yarn to pnpm 2023-02-23 14:37:12 -07:00
Matthew Penner
0d225b0e8f
ci(docker): revert workflow changes 2023-02-23 14:35:07 -07:00
Matthew Penner
8ae40a7c71
containerfile: remove platform arg 2023-02-23 14:22:31 -07:00
Matthew Penner
7241829da6
containerfile: reinstall tzdata
ref; https://bugzilla.redhat.com/show_bug.cgi?id=1870814
2023-02-23 14:09:24 -07:00
Matthew Penner
05d8de0671
ci(container): tweak options 2023-02-23 13:47:39 -07:00
Matthew Penner
f98aa11a3a
ci(container): update to ubuntu-22.04 2023-02-23 13:43:40 -07:00
Matthew Penner
ab4b4e6ada
ci(container): replace old docker workflow 2023-02-23 13:40:04 -07:00
Matthew Penner
673f7282e0
ui: fix prettier 2023-02-23 13:15:06 -07:00
Matthew Penner
2195aa6447
ci(docker): upgrade to php 8.2 2023-02-23 13:08:49 -07:00
Matthew Penner
187c7f74cd
yarn: upgrade dependencies 2023-02-23 13:08:40 -07:00
Matthew Penner
0af39492e3
app(services): fix DeployServerDatabaseService phpstan 2023-02-23 12:49:07 -07:00
Matthew Penner
733771ae75
nix: update flake lock 2023-02-23 12:48:53 -07:00
Matthew Penner
85df1a4ec7
ci(laravel): add PHP 8.2 to test matrix 2023-02-23 12:48:28 -07:00
Matthew Penner
a1e5afccb4
composer: update lock 2023-02-23 12:37:27 -07:00
Matthew Penner
18f6611a2d
Merge branch '1.0-develop' into develop 2023-02-23 12:36:22 -07:00
Matthew Penner
1d38b4f0e2
Laravel 10 (#4706) 2023-02-23 12:30:16 -07:00
Matthew Penner
ad4ddc6300
nix: update flake 2023-02-23 12:24:47 -07:00
Devonte W
b746c3ead1
fix(api/client): add validation for backup request body (#4704) 2023-02-23 12:23:12 -07:00
Devonte W
aea5c474db
fix(resources/api): allow svg xml format (#4705) 2023-02-23 12:19:58 -07:00
Matthew Penner
582c50c6d4
Merge branch '1.0-develop' into develop 2023-02-06 10:22:50 -07:00
Matthew Penner
2a7833ca17
Update README.md 2023-02-06 10:22:21 -07:00
Alex
9b47403e00
egg(rust): add server.queryport option (#4681) 2023-02-04 14:42:04 -07:00
Matthew Penner
3bd8164415
Merge branch '1.0-develop' into develop 2023-01-27 13:09:22 -07:00
Matthew Penner
43f7c10617
Update CHANGELOG.md 2023-01-27 12:24:55 -07:00
Matthew Penner
c5be3ad04b
nix: update flake lock 2023-01-25 13:34:47 -07:00
Matthew Penner
d8b7747828
ui(server): lazy load server console to reduce main bundle size 2023-01-25 11:39:07 -07:00
Matthew Penner
7c67ff3711
yarn: upgrade dependencies 2023-01-25 11:36:42 -07:00
Matthew Penner
d09e61b4f4
Update Containerfile to node 18, install composer through rpms 2023-01-25 11:36:28 -07:00
Matthew Penner
4b82ca1042
ui(admin): fix users list 2023-01-25 11:14:39 -07:00
Matthew Penner
5063db7d95
Merge branch '1.0-develop' into develop 2023-01-25 10:47:17 -07:00
Matthew Penner
866b6df4b0
api(task): ensure sequence_id always starts at 1 2023-01-24 16:19:34 -07:00
Matthew Penner
2b14e46eec
api: fix sequence_id being ignored in server task API
Closes #4434
2023-01-24 15:57:24 -07:00
Matthew Penner
20f23a0b27
db: add uuid column to failed_jobs table
Refer to
<https://laravel.com/docs/8.x/upgrade#failed-jobs-table-batch-support>
for more information regarding this change.

Closes #4652
2023-01-24 14:02:41 -07:00
Matthew Penner
a27ea3d1bc
config(queue): default to redis driver
Updates the default `QUEUE_CONNECTION` value to be `redis`
instead of `sync`.  This can cause problems if users skip
the initial setup or select the prefilled options rather
than the recommended ones.

Closes #4660
2023-01-24 13:48:34 -07:00
Matthew Penner
0b237071f2
Update README.md, fix CI status badge 2023-01-17 15:26:08 -07:00
Matthew Penner
62238ad418
Merge branch '1.0-develop' into develop 2023-01-17 15:25:28 -07:00
Matthew Penner
fbdac5b63f
ui(server): fix reinstall_failed conflict state 2023-01-17 15:21:31 -07:00
Jelco
c74314d2ab
Fix file repository not catching 404 responses (#4637) 2023-01-17 15:12:22 -07:00
Matthew Penner
dd595437e6
Update README.md, fix CI status badge 2023-01-17 15:06:56 -07:00
Boy132
2ed7f1c912
Fix MAIL_FROM_ADDRESS in EmailSettingsCommand (#4648) 2023-01-17 15:01:53 -07:00
Matthew Penner
7665eea14d
app(server): rename oom_disabled to oom_killer and invert existing values 2023-01-17 12:11:31 -07:00
Matthew Penner
450fba00bc
ui(admin): fix oom killer setting toggle 2023-01-17 11:43:26 -07:00
Matthew Penner
f6cf4a1236
ui: add read-only styling to Input element 2023-01-13 11:59:11 -07:00
Matthew Penner
e88197c4b1
ui: fix DashboardRouter trailing slashes 2023-01-13 11:58:40 -07:00
Matthew Penner
b59e1da860
tests: fix remaining failures 2023-01-12 13:19:01 -07:00
Matthew Penner
f45eac623c
chore: run php-cs-fixer 2023-01-12 12:46:40 -07:00
Matthew Penner
3d7112b702
ui: fix eslint 2023-01-12 12:45:07 -07:00
Matthew Penner
7e1aa8d7e2
ui: fix tests 2023-01-12 12:44:49 -07:00
Matthew Penner
155d7bb876
chore: run prettier 2023-01-12 12:31:47 -07:00
Matthew Penner
9cdbbc3a00
ui(admin): fix server editing 2023-01-12 12:25:58 -07:00
Matthew Penner
216c464ac8
ui(admin): update New Nest button 2023-01-12 12:12:06 -07:00
Matthew Penner
bc7737840a
ui(editor): fix editor child styling 2023-01-12 12:08:11 -07:00
Matthew Penner
76b67cb889
ui: fix IPv6 formatting logic 2023-01-12 11:28:11 -07:00
Matthew Penner
42d8f2cb82
ui(server): fix file editor and file manager 2023-01-12 11:22:24 -07:00
Matthew Penner
27e3eec5fc
yarn: upgrade @codemirror/* 2023-01-12 11:21:32 -07:00
Matthew Penner
f68864db00
Merge branch '1.0-develop' into develop 2023-01-01 15:26:55 -07:00
Matthew Penner
a2fb319ff5
Update README.md sponsors 2023-01-01 15:26:38 -07:00
Matthew Penner
089860b721
ui(admin): update button components, fix Editor for eggs 2022-12-21 14:27:55 -07:00
Matthew Penner
4e56f6dbea
yarn: upgrade dependencies 2022-12-21 14:27:07 -07:00
Matthew Penner
5402584508
ui(admin): add "working" React admin ui 2022-12-15 19:06:14 -07:00
Matthew Penner
d1c7494933
app: fix DeployServerDatabaseService 2022-12-15 12:39:37 -07:00
Matthew Penner
926c8563d0
user: cleanup 2022-12-15 12:26:34 -07:00
Matthew Penner
7f669828c6
tests: more fixes, but stuff is still broken 2022-12-14 19:53:07 -07:00
Matthew Penner
10b2380e9e
Make sure to actually update other references as well 2022-12-14 19:15:19 -07:00
Matthew Penner
8fff0846a0
Attempt to fix Fractal object type being null 2022-12-14 19:13:00 -07:00
Matthew Penner
507a802dec
database-host: reverse node relationship 2022-12-14 18:53:31 -07:00
Matthew Penner
0c5416ee27
cli: fix up command override 2022-12-14 18:43:20 -07:00
Matthew Penner
160c3ddeff
composer: update dependencies 2022-12-14 18:41:39 -07:00
Matthew Penner
a24c594cbd
user: remove name_first and name_last from tests 2022-12-14 18:23:46 -07:00
Matthew Penner
6b11836a41
user: remove name_first and name_last 2022-12-14 18:17:27 -07:00
Matthew Penner
2f15d94957
database: fix migrations with postgres 2022-12-14 18:17:16 -07:00
Matthew Penner
f68c46b0a0
eggs: remove config_logs field 2022-12-14 18:10:12 -07:00
Matthew Penner
3670dc6d4b
phpstan 2022-12-14 18:08:50 -07:00
Matthew Penner
7ed2be50fd
php-cs-fixer and phpstan 2022-12-14 18:04:16 -07:00
Matthew Penner
363c4fd49f
php-cs-fixer 2022-12-14 17:06:28 -07:00
Matthew Penner
67bf3e342e
api(application): v2 backport 2022-12-14 17:05:46 -07:00
Matthew Penner
4cd0bee231
yeet 2022-12-14 14:36:07 -07:00
Matthew Penner
7fde336036
Merge branch '1.0-develop' into develop 2022-12-14 14:21:01 -07:00
Omar Kamel
e43da311fe
api(client): keep existing server description when empty (#4619) 2022-12-14 14:19:45 -07:00
Matthew Penner
5fbc7a89e4
nix&docker: simplify Caddyfile 2022-12-12 19:23:03 -07:00
Matthew Penner
4138fb7497
Merge branch '1.0-develop' into develop 2022-12-12 16:23:11 -07:00
Matthew Penner
ac53e7b061
Update CHANGELOG.md 2022-12-12 16:09:09 -07:00
Matthew Penner
8978da335e
app(telemetry): disable server_usage for eggs and nests 2022-12-12 16:07:33 -07:00
VibeGAMESNL
680bce6d94
api(client): fix decompress timeout (#4568) 2022-12-12 16:07:13 -07:00
Matthew Penner
428311e854
database: fix mail settings migration 2022-12-12 15:47:48 -07:00
Matthew Penner
6df31e1923
database: fix migration transaction failure? 2022-12-12 15:26:47 -07:00
Matthew Penner
c8c648f0e5
php-cs-fixer 2022-12-12 15:14:37 -07:00
Matthew Penner
0751eeec97
database: add migration for new mail config keys 2022-12-12 15:12:03 -07:00
Matthew Penner
24e1c56378
Update SECURITY.md 2022-12-12 14:35:24 -07:00
Matthew Penner
4626118d77
app: fix remaining email config keys 2022-12-12 14:31:49 -07:00
Matthew Penner
6377e3309a
config(queue): fix queue names 2022-12-12 14:29:19 -07:00
Matthew Penner
c14fc1ccb0
config(mail): fix SERVER_NAME; closes #4600 2022-12-12 14:26:07 -07:00
Matthew Penner
63a179d7f3
app: fix email config keys 2022-12-12 14:21:47 -07:00
Matthew Penner
c44842e517
chore: run prettier 2022-12-12 14:09:22 -07:00
Matthew Penner
e64e28839b
Merge branch '1.0-develop' into develop 2022-12-12 14:06:52 -07:00
Matthew Penner
3b062ed2d9
yarn: upgrade dependencies 2022-12-12 14:01:31 -07:00
Matthew Penner
3432cadd4a
ci(docker): fix version starting with v prefix 2022-12-05 15:43:10 -07:00
Matthew Penner
411017198e
Update CHANGELOG.md 2022-12-05 13:16:03 -07:00
Matthew Penner
e763c72d63
ci(docker): fix version in app.php 2022-12-05 12:39:07 -07:00
Matthew Penner
a2970cd784
ci: tweak docker and release workflows 2022-12-05 09:58:13 -07:00
Matthew Penner
ca4aa795be
ci(docker): fix latest tag 2022-12-04 18:37:45 -07:00
Matthew Penner
c802b49b7a
ci(docker): fix app version 2022-12-04 18:36:26 -07:00
Matthew Penner
7d93f1566c
ci: overhaul workflows 2022-12-04 17:40:17 -07:00
Matthew Penner
598c956e4e
ui(server): fix file uploads being canceled instead of completed 2022-12-04 16:36:53 -07:00
Matthew Penner
158facd534
eslint: fix prettier config 2022-12-04 16:32:15 -07:00
Matthew Penner
dd69652942
Fix No application encryption key has been specified error while trying to generate said key 2022-12-04 16:09:42 -07:00
Matthew Penner
8425076f8b
Merge branch '1.0-develop' into develop 2022-12-04 15:27:52 -07:00
Matthew Penner
73b27aea8e
Update CHANGELOG.md 2022-12-04 15:27:21 -07:00
Matthew Penner
ae27a8a65c
Merge branch '1.0-develop' into develop 2022-12-04 15:10:06 -07:00
Matthew Penner
fa7503816a
Add telemetry prompt in p:environment:setup command 2022-12-04 14:59:45 -07:00
Matthew Penner
250c557e23
telemetry: include more detailed server egg and nest usage 2022-12-01 12:09:27 -07:00
Matthew Penner
6272bb6710
api(remote): cleanup 2022-12-01 11:52:22 -07:00
Matthew Penner
3c278a8c51
api(remote): check if transfer is present before trying to update status 2022-12-01 11:51:26 -07:00
Matthew Penner
794248d4d7
routes: fix imports 2022-12-01 11:51:26 -07:00
Matthew Penner
209711c826
ui(server): disable file manager upload, due to library issues 2022-11-29 14:39:48 -07:00
Matthew Penner
ee863fa262
phpstan 2022-11-29 10:56:16 -07:00
Matthew Penner
3ea6d45cda
php-cs-fixer 2022-11-29 10:53:59 -07:00
Matthew Penner
16e34af773
nix: add panel and container packages 2022-11-29 10:48:14 -07:00
Matthew Penner
56839a14c5
Update Containerfile 2022-11-29 10:45:30 -07:00
Matthew Penner
fd356c7219
composer: update dependencies 2022-11-29 10:44:52 -07:00
Wunderharke
c8f7bdf9cb
egg(teamspeak): fix database support (#4513) 2022-11-28 12:04:56 -07:00
TaktischerSpeck
75f36839df
egg(teamspeak): port and argument updates (#4546) 2022-11-28 11:59:48 -07:00
Lance Pioch
a1a52754ad
chore: add phpstan static analysis minimum (#4511) 2022-11-28 09:56:03 -07:00
Matthew Penner
3f7e2a565f
Merge branch '1.0-develop' into develop 2022-11-28 09:33:33 -07:00
Charles Morgan
a4e547dc67
ui(server): fix console searchbar z-index (#4587) 2022-11-27 19:38:28 -07:00
Matthew Penner
f76155aa13
ci(docker): update build-push-action from v2 to v3 2022-11-27 17:02:10 -07:00
Matthew Penner
dae40ee02d
ci(docker): temporarily disable arm64 dev build 2022-11-27 15:57:54 -07:00
Matthew Penner
db4aa86fbc
docker: cleanup, install shadow-utils 2022-11-27 12:41:35 -07:00
Matthew Penner
490690f1d0
docker: overhaul container image 2022-11-27 12:34:31 -07:00
Matthew Penner
c475d601f3
ui: remove unused codemirror 5 editor 2022-11-27 11:53:46 -07:00
Lance Pioch
3bf5a71802
PostgreSQL Support (#4486)
Co-authored-by: Matthew Penner <matthew@pterodactyl.io>
2022-11-25 13:29:04 -07:00
Matthew Penner
21613fa602
React 18 and Vite (#4510) 2022-11-25 13:25:03 -07:00
Matthew Penner
1bb1b13f6d
Update CHANGELOG.md 2022-11-22 13:40:58 -07:00
Matthew Penner
5b36313c57
Update README.md 2022-11-22 13:39:57 -07:00
Matthew Penner
ee033d6d08
Telemetry (#4564) 2022-11-22 13:39:43 -07:00
Dane Everitt
df9a7f71f9
Support canceling file uploads (#4441)
Closes #4440
2022-11-21 13:58:55 -07:00
Lance Pioch
a4f6870518
server: track reinstall failures differently from initial install failures (#4531) 2022-11-21 13:53:54 -07:00
Matthew Penner
039ad4abf0
api(server): log activity when server description is changed 2022-11-21 13:43:19 -07:00
Devonte W
634c9353e3
fix(transformers): force object type for properties (#4544) 2022-11-21 13:28:46 -07:00
Matthew Penner
c3521e0221
api(server): fix undefined header 2022-11-21 13:20:50 -07:00
Matthew Penner
2f4a60c961
ui(admin): change MB suffixes to MiB
Closes #4542
2022-11-21 13:10:00 -07:00
Matthew Penner
c1584d9a5b
Update CHANGELOG.md 2022-11-14 20:31:03 -07:00
Matthew Penner
897ca48ded
github: re-enable blank issues 2022-11-14 18:28:02 -07:00
Matthew Penner
df2402b54f
Streaming Transfers (#4548) 2022-11-14 18:25:07 -07:00
Boy132
032e4f2e31
Apply node maintenance mode to servers (#4421) 2022-11-06 16:02:30 -07:00
Lance Pioch
4032481a4f
Update validation rules for remote activity logs (#4526) 2022-11-06 15:42:48 -07:00
Lance Pioch
9b218f2190
URL encode password in JDBC connection string (#4527) 2022-11-06 15:24:33 -07:00
Alex
c068f57e4e
fix(forge): validate only input and not length (#4528)
Only allows digits, dots and dashes in the input, which is what Forge versions consists of. Removes arbitrary char limit.
2022-11-06 15:15:12 -07:00
Matthew Penner
f8ec8b4d5a
Merge branch 'develop' into 1.0-develop 2022-10-31 12:10:04 -06:00
Matthew Penner
d466934103
Laravel Sail (#4508) 2022-10-31 11:38:56 -06:00
Matthew Penner
846ff7644f
Fix missing email sender 2022-10-31 11:02:34 -06:00
Matthew Penner
b7a65436fa
Merge branch '1.0-develop' into develop 2022-10-31 10:59:35 -06:00
Matthew Penner
1b78030291
Fix compatibility with old queue names 2022-10-31 10:58:32 -06:00
Quinten
e21aab2537
Update mumble egg (#4437) 2022-10-31 10:29:29 -06:00
Lance Pioch
16c2b606b4
Add ManifestDoesNotExistException and Solution (#4455)
Co-authored-by: Matthew Penner <matthew@pterodactyl.io>
2022-10-31 10:29:10 -06:00
Boy132
f2095e815e
Allow users to change the server description (#4420) 2022-10-31 10:20:53 -06:00
Matthew Penner
b1abae8106
Update README.md 2022-10-30 13:58:29 -06:00
Lance Pioch
548affba84
Fix linting (#4504) 2022-10-29 17:58:55 -06:00
Matthew Penner
5f57e63fe4
ci(lint): install composer dependencies 2022-10-26 10:45:43 -06:00
Matthew Penner
6f0bb43314
ci: cleanup, add dedicated lint workflow 2022-10-26 10:43:05 -06:00
Jelco
5c78b380c5
Fix InMemoryFilesystemAdapter (#4489) 2022-10-26 10:26:56 -06:00
Matthew Penner
d31ece1c75
nix: add flake with dev shell 2022-10-24 09:48:30 -06:00
Lance Pioch
e49ba65709
Fix config key names (#4464) 2022-10-23 18:51:20 -06:00
Matthew Penner
7266c66ebf
un-type getRulesForUpdate; fixes #4463 2022-10-23 18:14:50 -06:00
Lance Pioch
860b2d890b
Fix php artisan up (#4457) 2022-10-21 11:31:59 -06:00
Matthew Penner
5331fd2cdb
ci(docker): build local code checkout, add caching to dev build 2022-10-20 14:32:23 -06:00
Matthew Penner
4dd30fe2f0
composer: update lock 2022-10-19 22:47:53 -06:00
Dane Everitt
d1beb2e1ad
Fix file verification on upload; just block folders (#4442) 2022-10-16 17:24:49 -06:00
Matthew Penner
9c6822f62d
Update CHANGELOG.md 2022-10-16 12:34:36 -06:00
Matthew Penner
2828a4b1e0
fix AssetManifestService error when loading the panel 2022-10-14 11:00:10 -06:00
Matthew Penner
cbcf62086f
Upgrade to Laravel 9 (#4413)
Co-authored-by: DaneEveritt <dane@daneeveritt.com>
2022-10-14 10:59:20 -06:00
Matthew Penner
95e15d2c8a
Cleanup FQDN validation logic, fallback to old hostname check (#4409)
Co-authored-by: DaneEveritt <dane@daneeveritt.com>
2022-10-09 16:19:16 -06:00
Dane Everitt
c748fa9842
fix: exclude any permissions not defined internally when updating or creating subusers (#4416) 2022-10-09 16:14:16 -06:00
Cubxity
597821b3bb
fix: byte units (#4419) 2022-10-09 16:09:24 -06:00
Dane Everitt
e0e0689846
feat: bump account key limit to 25 (#4417)
Closes #4394
2022-10-08 15:14:03 -06:00
DaneEveritt
2e61a4db13
fix: eslint errors 2022-10-08 11:30:14 -07:00
Matthew Penner
ba10646e8a
Update CONTRIBUTING.md and SECURITY.md 2022-10-05 10:31:06 -06:00
Matthew Penner
ac8629d449
Update CHANGELOG.md 2022-10-04 20:49:03 -06:00
Devonte
9b531d5fd9
Include oom_disabled in application API request (#4262) 2022-10-04 20:12:46 -06:00
Aspect
d7b387be3e
Show UptimeDuration for starting servers (#4284) 2022-10-04 20:12:07 -06:00
Matthew Penner
7b91c38396
Lookup both A and AAAA records for node FQDNs (#4398)
Allows IPv6 addresses to be used, instead of IPv4 being required.

Closes <https://github.com/pterodactyl/panel/issues/4011>
2022-10-04 20:03:52 -06:00
Matthew Penner
815e1e4c4d
Ensure server is not in a conflicting state before initiating a transfer (#4403) 2022-10-04 19:57:24 -06:00
Matthew Penner
ff37c51eef
Use different clone logic for arrays (#4402)
Closes <https://github.com/pterodactyl/panel/issues/3985>
2022-10-04 19:48:08 -06:00
Matthew Penner
44598bf724
Support configuring storage class for S3 backup uploads (#4399)
Closes <https://github.com/pterodactyl/panel/issues/4072>
2022-10-04 19:39:25 -06:00
diamkil
6aede6b63d
Allow uploading multiple files via web UI (#4392) 2022-09-29 17:43:20 -06:00
Matthew Penner
16c110a489
Update FUNDING.yml 2022-09-26 11:23:48 -06:00
Matthew Penner
2dcc46ecd6
backups: support Cloudflare R2 by listing uploaded parts from Wings 2022-09-26 11:15:52 -06:00
Matthew Penner
0dc77aec25
Update README.md 2022-09-25 19:12:08 -06:00
Matthew Penner
9bcafd983f
admin: fix rendering of egg descriptions 2022-09-25 19:00:49 -06:00
Pascal Zarrad
1ca4b08b48
backups: add S3 part size configuration (#4382) 2022-09-25 14:38:49 -06:00
Matthew Penner
68e9100e57
admin(eggs): add force_outgoing_ip option (#4323)
Closes #3841
2022-09-25 13:24:54 -06:00
Boy132
b04a47a4a4
Handle "in:true,false" variable rules as checkbox (#4334) 2022-09-25 13:18:13 -06:00
Matthew Penner
8e1a21563e
server: add configuration for install notifications (#4331)
* server: track `installed_at`, only send install notification on first install
* server: add configuration for install notifications
2022-09-25 13:16:58 -06:00
SS
23124c9b08
docker: update README.md (#4388) 2022-09-25 13:11:45 -06:00
Harry W
a6b250913b
fix: page title for SSH keys (#4391) 2022-09-25 13:05:53 -06:00
DaneEveritt
e040fd1ebd
Fix display of database rows when password is not available
closes #4381
2022-09-17 11:50:40 -07:00
DaneEveritt
bf2456d0fc
Ensure eggs endpoint always returns an object, even when empty
closes #4296
2022-09-17 11:36:41 -07:00
Cam White (Jex)
b050174f90
Bump fork-ts-checker-webpack-plugin to 6.5.2 (#4357) 2022-09-05 14:01:03 -04:00
hz-ad
ab08afb2da
Updating sponsors (#4345) 2022-09-01 15:47:17 -04:00
DaneEveritt
be29fe1db2
Break activity log values ignoring word boundaries
Not my favorite approach, but it'll work. closes #4305
2022-08-07 15:00:43 -04:00
DaneEveritt
2da8042b0f
Fix clock() usage causing errors in prod environments 2022-07-24 20:43:14 -04:00
DaneEveritt
07f1ef4262
Update security versions 2022-07-24 19:45:49 -04:00
DaneEveritt
f614b443dd
Update CHANGELOG.md 2022-07-24 19:37:15 -04:00
DaneEveritt
03a6e26c4d
Improve create directory dialog 2022-07-24 19:23:45 -04:00
DaneEveritt
8d82aa2124
Improve design of drag & drop overlay 2022-07-24 18:59:20 -04:00
DaneEveritt
4458822c60
Cleanup file upload behavior 2022-07-24 18:50:47 -04:00
DaneEveritt
1cfa4100ad
Show an error if a user attempts to upload a folder 2022-07-24 18:22:50 -04:00
DaneEveritt
1d5d92f678
Use a different styling for file uploads 2022-07-24 18:03:45 -04:00
Boy132
12242848b0
File upload status (v2 backport) (#4219) 2022-07-24 17:18:32 -04:00
DaneEveritt
2eda1995b9
Send server name and description to wings to make available to replacers 2022-07-24 17:15:24 -04:00
DaneEveritt
abac317802
Make recaptcha domain configurable 2022-07-24 17:13:17 -04:00
DaneEveritt
f8c48214a5
Track file uploads on Wings, not the panel 2022-07-24 17:13:17 -04:00
Alex
6a11c32bb2
fix: do not style 2fa QR code (#4278)
Dark rounded background shadow around the QR code makes it more difficult or impossible to scan on some devices. Replaces it with a white shadow to make easier scanning.
2022-07-24 17:10:59 -04:00
Michael (Parker) Parker
eb503c5523
fix docker builds (#4249)
Updates php to 8.1
Resolves the issue when running docker-compose unconfigured redirects to https.
2022-07-16 08:48:40 -04:00
simonmicro
1250713299
Changed scroll down indicator icon (#4231)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2022-07-16 08:48:10 -04:00
Simon Stjernholm
5700dd6a8e
fixes loading overlay to console only (#4246)
Co-authored-by: DaneEveritt <dane@daneeveritt.com>
2022-07-16 08:30:00 -04:00
DaneEveritt
d4708e9e63
Always show IP address to admins 2022-07-10 14:56:19 -04:00
DaneEveritt
d6c30092ec
Utilize a unique ID for activity logs to improve rendering perf 2022-07-10 14:53:29 -04:00
DaneEveritt
e878015109
Correctly wrap content in pre tag so it doesn't overflow 2022-07-10 14:53:15 -04:00
DaneEveritt
edbbe520a7
Fix missing padding on overflowing dialogs 2022-07-10 14:52:57 -04:00
DaneEveritt
7558c0380e
Don't log SFTP logins, it just is noisy 2022-07-10 14:30:11 -04:00
DaneEveritt
8b59c1c1a8
Support new sftp event types 2022-07-10 13:47:19 -04:00
DaneEveritt
33ab762f5a
Add support for tracking more SFTP specific events 2022-07-09 19:30:38 -04:00
DaneEveritt
2e01891074
Account for natural event naming 2022-07-09 17:53:07 -04:00
DaneEveritt
1eee55b27c
Add endpoint needed for recieving and processing activity 2022-07-09 17:45:38 -04:00
DaneEveritt
9b8479e85d
Update README.md 2022-07-09 12:01:24 -04:00
DaneEveritt
26d7d7e0e0
Fix SWR key logic 2022-07-04 18:22:58 -04:00
DaneEveritt
d6b6ac6dab
Key activity log cache to the server instance, not the user instance. 2022-07-04 18:13:15 -04:00
DaneEveritt
4a8c3c4a34
Add activity tracking for console/power actions 2022-07-04 18:11:53 -04:00
DaneEveritt
dc90d8b505
Include the "user_uuid" claim on JWTs for easier Wings user tracking 2022-07-04 17:34:56 -04:00
DaneEveritt
74c3b00828
Update CHANGELOG.md 2022-07-03 19:51:12 -04:00
DaneEveritt
15aaa2b3c3
Fix display issues due to removal of quirks mode 2022-07-03 14:44:00 -04:00
DaneEveritt
0216e3fd5b
Don't log activity if the email wasn't actually changed 2022-07-03 14:29:01 -04:00
DaneEveritt
2d836156d2
Update totp disable modal; require password for enable operation 2022-07-03 14:27:37 -04:00
DaneEveritt
92926ca193
Cleanup logic powering totp enabling modal 2022-07-03 13:43:54 -04:00
DaneEveritt
a4feed24a8
Improve dialog logic, add "asDialog" helper 2022-07-03 13:29:23 -04:00
DaneEveritt
822949408f
Use new two-step configuration modal 2022-07-02 18:53:03 -04:00
DaneEveritt
870a964050
Fix checkboxes 2022-07-02 18:27:29 -04:00
DaneEveritt
e49e6ee802
Better dialog setting logic 2022-07-02 18:27:22 -04:00
DaneEveritt
7a6440988b
Support tooltip on disabled buttons, support click action 2022-07-02 17:24:49 -04:00
DaneEveritt
25d61525b3
Update new input styling 2022-07-02 17:24:24 -04:00
DaneEveritt
7c4028f8f1
Update dialog logic to support defining buttons/icon from anywhere 2022-07-02 17:24:12 -04:00
DaneEveritt
48af9bced1
Fix activity log rendering; closes #4208 2022-06-30 21:06:50 -04:00
DaneEveritt
0d0c595909
Show starting/stopping correctly in stats; closes #4209 2022-06-30 20:33:09 -04:00
DaneEveritt
3120e1d4a0
Fix console rendering on Safari; closes #4189 2022-06-30 20:30:01 -04:00
Boy132
003afb271b
fix: java version modal default value (#4216) 2022-06-30 20:23:40 -04:00
VinGal
cc06d1faa9
Fixes rounding when 0.001% or less on CPU usage. (#4207) 2022-06-30 20:23:27 -04:00
Arnaud Lier
ccea09c9d9
Enable standards mode (#4194) 2022-06-30 20:23:15 -04:00
DaneEveritt
4fa735da3f
Update CHANGELOG.md 2022-06-27 21:01:24 -04:00
DaneEveritt
20a7794a18
Fix incorrect type definitions 2022-06-27 20:54:58 -04:00
DaneEveritt
4aa163b76f
Hide IP addresses from activity logs not generated by the user themselves 2022-06-27 20:52:27 -04:00
DaneEveritt
b570769a34
Fix permission matching on routes; closes #4181 2022-06-27 20:41:49 -04:00
DaneEveritt
bd278b2688
Fix install warning display and make it reactive 2022-06-27 20:36:24 -04:00
Boy132
2dda151a49
fix: correct route for console (#4178)
fixes #4177
2022-06-27 20:21:12 -04:00
DaneEveritt
7886251cd8
Fix infinity display 2022-06-27 20:16:43 -04:00
DaneEveritt
050d4e7a36
Show the resource limits next to numbers 2022-06-27 20:14:55 -04:00
DaneEveritt
5f156e193a
Improve the graph display; hide the bottom bar when no data exists. 2022-06-27 19:59:36 -04:00
DaneEveritt
bf287c45d6
Logic improvements, move stat blocks to right side 2022-06-27 19:56:26 -04:00
DaneEveritt
ad6e9f076b
Fix copy to clipboard when clicking server address
closes #4187
2022-06-27 19:18:58 -04:00
DaneEveritt
72f545259f
Roll back changes to conversion unit (1000->1024)
closes #4183
2022-06-27 18:46:36 -04:00
Ziga Zajc
1b5d77dc17
Changed Mb to MB (#4171) 2022-06-27 18:30:46 -04:00
Boy132
ac997cd7a6
fix: use correct network stat (#4175) 2022-06-27 18:30:21 -04:00
Boy132
63cf6ee96e
fix: round cpu usage in chart (#4182)
fixes #4168
2022-06-27 18:30:00 -04:00
DaneEveritt
16725e656b
Bundle the new eslintrc config file 2022-06-26 21:18:53 -04:00
Argonaut Network
9bcf90db93
Fix grammatical error (#4138) 2022-06-26 21:17:02 -04:00
Torsten Widmann
8f2defc6f8
add new map to description (#4142) 2022-06-26 21:16:39 -04:00
Alex
3339a316ca
feat: use max percentage instead of xmx (#4146)
Replaces Xmx with a percentage-based argument, in this case leaving 5% overhead.

Resolves issue of container OOM/freezing when all memory is allocated to the java application or when users attempt to use unlimited memory of 0. That's because all the allocated memory is set to Xmx by default. Causes Wings resource overhead allocation to be unnecessary.

Expands Forge installer exit code to provide instructions regarding increasing Wings installer resource limits when using unlimited memory (0) as the default 1024MB is not enough to run the installer.

The percentage is set as a floating point, because of a JDK 8 bug with integers
2022-06-26 21:16:26 -04:00
DaneEveritt
c9ab0abba9
Use node 16 for all build actions 2022-06-26 21:09:40 -04:00
DaneEveritt
446562fcff
Update NodeFactory.php 2022-06-26 21:00:19 -04:00
DaneEveritt
80ae600fe1
Correctly update dependencies for release 2022-06-26 17:31:47 -04:00
DaneEveritt
13bdb66ff0
Revert "Package updates prior to release"
This reverts commit af2a84d379.
2022-06-26 17:19:12 -04:00
DaneEveritt
af2a84d379
Package updates prior to release 2022-06-26 17:11:55 -04:00
DaneEveritt
3f2bd78563
Generate a more unique username 2022-06-26 16:37:43 -04:00
DaneEveritt
43156e8d53
Improve error messaging for validation exceptions 2022-06-26 16:31:48 -04:00
DaneEveritt
271197e823
Fix cs-fix run 2022-06-26 16:21:07 -04:00
DaneEveritt
c166f1305b
Remove unused deps 2022-06-26 16:14:32 -04:00
DaneEveritt
d172d2829f
Update CHANGELOG.md 2022-06-26 15:42:11 -04:00
DaneEveritt
fc6c8f1d82
remove old eslint config 2022-06-26 15:30:30 -04:00
DaneEveritt
922d75f471
fix remaining eslint error 2022-06-26 15:30:05 -04:00
DaneEveritt
dc84af9937
Apply new eslint rules; default to prettier for styling 2022-06-26 15:13:52 -04:00
DaneEveritt
f22cce8881
Update eslint parsers for new typescript version 2022-06-26 14:38:58 -04:00
DaneEveritt
1eb3ea2ee4
Some code cleanup, add jest coverage and begin using it for utility functions 2022-06-26 14:34:09 -04:00
DaneEveritt
ca39830333
allow filtering servers by description; closes #4150 2022-06-26 13:26:12 -04:00
DaneEveritt
b3a57bd0ad
fix includes for client API keys on admin accounts; closes #4164 2022-06-26 13:23:22 -04:00
DaneEveritt
82d8713b5d
Fix allocation display when a description is present 2022-06-25 21:41:52 -04:00
DaneEveritt
47d6235ea0
Keep server address at the top 2022-06-25 21:31:10 -04:00
DaneEveritt
00338e431b
Automatically hide the kill modal when server stops 2022-06-25 21:29:41 -04:00
DaneEveritt
76f3b996fe
Auto resize values when they'd overflow the container 2022-06-25 21:27:18 -04:00
DaneEveritt
182507ff0e
Upgrade charts to ChartJS 3 and improve UI for them 2022-06-25 20:51:49 -04:00
Dane Everitt
980f828edd
Update README.md 2022-06-24 10:51:39 -04:00
DaneEveritt
54c619e6ba
Some mobile improvements for the UI; make console fill space better 2022-06-21 18:43:59 -04:00
DaneEveritt
faff263f17
First pass at new server console design 2022-06-20 17:26:47 -04:00
DaneEveritt
61018b5e67
Update more of the UI to use new design elements 2022-06-20 15:28:27 -04:00
DaneEveritt
2824db7352
Update file manager design a bit 2022-06-20 14:16:42 -04:00
DaneEveritt
8bd518048e
Fix excessive re-rendering due to route changesd 2022-06-20 13:19:40 -04:00
DaneEveritt
7b0e2ce99d
Button styling cleanup, prop consistency 2022-06-20 12:38:23 -04:00
DaneEveritt
7dd74ecc9d
Modal cleanup, begin transitioning towards the new dialog 2022-06-20 11:17:33 -04:00
DaneEveritt
3834aca3fe
Use nicer avatars when showing activity log 2022-06-19 13:46:15 -04:00
DaneEveritt
76472411e3
Some better activity translations 2022-06-18 16:36:19 -04:00
DaneEveritt
cf01490883
Support hiding activity from admin accounts not associated with the server 2022-06-18 15:48:22 -04:00
DaneEveritt
95de4c30fc
Abuse the translation engine to handle more of the formatting for us 2022-06-18 15:28:42 -04:00
DaneEveritt
b052d29a5f
Fix failing integration test 2022-06-18 14:25:24 -04:00
DaneEveritt
7224ca81de
Fix bug preventing the creation of API keys with CIDR ranges 2022-06-18 14:21:20 -04:00
DaneEveritt
d47a05881b
Show when an event was triggered via the API directly 2022-06-18 12:52:26 -04:00
DaneEveritt
4f3651b578
Fix typo with identifier 2022-06-18 12:16:54 -04:00
DaneEveritt
0520014c0f
Add support for tracking when an activity event is triggered from an API key 2022-06-18 12:07:44 -04:00
DaneEveritt
92c1c162af
Code cleanup for facades 2022-06-18 12:07:32 -04:00
DaneEveritt
6ffe5730da
Log when an API key is blocked due to IP restrictions 2022-06-18 12:04:51 -04:00
DaneEveritt
0be96cfd26
Update README.md 2022-06-16 20:36:15 -04:00
DaneEveritt
cd97936179
Improve mobile support 2022-06-12 15:40:14 -04:00
DaneEveritt
68a654f9e8
Selectively show the additional metadata if it isn't in the display string at all 2022-06-12 15:30:49 -04:00
DaneEveritt
88987fb6c7
Correctly pull button styles 2022-06-12 15:17:14 -04:00
DaneEveritt
2f1c8ae91d
Add basic server activity log view 2022-06-12 15:16:48 -04:00
DaneEveritt
0b4936ff1c
Break out rows for activity; show metadata icon 2022-06-12 15:08:26 -04:00
DaneEveritt
33823b65de
Fix dialog and tooltip design 2022-06-12 15:07:52 -04:00
DaneEveritt
064a942574
Little bit of language cleanup 2022-06-12 13:36:42 -04:00
DaneEveritt
b50e722948
Add account related routes to router file 2022-06-12 13:33:25 -04:00
DaneEveritt
7197d28815
Chunk out the different routers and clean up feature logic 2022-06-12 11:56:00 -04:00
DaneEveritt
04e97cc67e
Make it easier for plugins to extend the navigation and add routes 2022-06-12 11:36:55 -04:00
DaneEveritt
88a7bd7578
Make the delay less goofy when mousing over elements 2022-06-12 09:39:20 -04:00
DaneEveritt
f860fd2cfe
Improve usability of icon buttons in header with tooltip 2022-06-12 09:35:02 -04:00
DaneEveritt
9c957952fb
Improve mobile display of activity log 2022-06-12 09:09:01 -04:00
DaneEveritt
4d30cc9e7e
Add translation values to activity log output 2022-06-11 14:52:41 -04:00
DaneEveritt
06427f8d13
Don't make two API calls for activity log data 2022-06-11 14:52:33 -04:00
DaneEveritt
986c375052
Improve support for use of i18next; rely on browser caching to keep things simple 2022-06-11 14:04:09 -04:00
DaneEveritt
8e02966935
Use a normal HTML tag for this 2022-06-11 11:05:03 -04:00
DaneEveritt
e17c2ec262
Add base activity log strings 2022-06-11 11:03:40 -04:00
DaneEveritt
278d8b7bf6
Update CHANGELOG.md 2022-06-11 10:04:44 -04:00
DaneEveritt
0bfba306bf
Add filtering support for activity logs 2022-06-05 19:23:25 -04:00
DaneEveritt
c6e8b893c8
Add basic activity log view 2022-06-05 18:35:53 -04:00
DaneEveritt
d1da46c5aa
Fix incorrect API definitions 2022-06-05 18:28:08 -04:00
DaneEveritt
2a2fc42e37
Add support for tooltips 2022-06-05 18:27:54 -04:00
DaneEveritt
1a5465dc34
Update react, add some V2 components for V1 usage 2022-06-05 14:56:42 -04:00
DaneEveritt
921da09a63
Update to Tailwind 3; support normal tailwind usage without twin.macro 2022-06-05 14:34:29 -04:00
DaneEveritt
21ca91abd0
Allow SES region configuration; closes #4124 2022-06-05 13:32:36 -04:00
DaneEveritt
8771597560
Fix database deletion; closes #4114
Co-Authored-By: Dawid <minerpl03@gmail.com>
2022-06-05 13:28:46 -04:00
Harry W
c0a3dea6d8
Disable autocapitalization on console input (#4120) 2022-06-05 13:22:41 -04:00
Kevin Brekelmans
7743d00aee
Update README.md (#4104) 2022-05-30 18:18:10 -04:00
DaneEveritt
03a497fb8a
Use a post request to delete SSH keys, some hashes use slashes which cause 404 errors; closes #4100 2022-05-30 17:28:42 -04:00
DaneEveritt
5143faa4b1
Update changelog 2022-05-30 11:40:21 -04:00
DaneEveritt
4213775b5c
Fix mounting behavior to work correctly when adding to a server 2022-05-30 11:33:42 -04:00
DaneEveritt
dbc9846320
Fix cache busting when creating a new server 2022-05-30 11:09:51 -04:00
Boy132
025e1a21ae
fix validator import (#4094) 2022-05-30 10:24:59 -04:00
DaneEveritt
8cf1311b84
Update dependencies prior to release tag 2022-05-29 20:43:52 -04:00
DaneEveritt
e5fec9934d
Update CHANGELOG.md 2022-05-29 20:42:55 -04:00
DaneEveritt
9300e1116d
Fix failing tests 2022-05-29 20:39:51 -04:00
DaneEveritt
a5521ecb79
Add support for returning transforming activity logs on the front-end 2022-05-29 20:34:48 -04:00
DaneEveritt
e15985ea39
Add support for automatically pruning activity logs 2022-05-29 19:45:00 -04:00
DaneEveritt
9b7af02690
Add activity logging to most of the endpoints 2022-05-29 19:26:28 -04:00
DaneEveritt
287fd60891
Log activity when modifying account details 2022-05-29 18:48:35 -04:00
DaneEveritt
0b2c0db170
Remove last references to audit logs 2022-05-29 18:20:54 -04:00
DaneEveritt
0621d8475d
Return tests to passing now that we don't ignore a critical event... 2022-05-29 17:52:14 -04:00
DaneEveritt
09832cc558
Ensure we can properly create an activity log entry; always return soft-deleted models 2022-05-29 17:07:54 -04:00
DaneEveritt
f1c1699994
Fix tests with model events 2022-05-29 17:07:34 -04:00
DaneEveritt
2fc5a734f9
Update backup logic to use activity logs, not audit logs 2022-05-29 16:19:04 -04:00
DaneEveritt
cbecfff6da
Add activity logging for files 2022-05-29 13:56:39 -04:00
DaneEveritt
0999ad7ff0
Add activity logging for authentication events 2022-05-28 17:03:58 -04:00
DaneEveritt
5bb66a00d8
Add new activity logging code to replace audit log 2022-05-28 15:36:26 -04:00
DaneEveritt
c14c7b436e
Pass along new fields to Wings instance when endpoint is used; closes #4048 2022-05-28 13:45:23 -04:00
DaneEveritt
3fceb588fb
Fix router logic to account for logged out users; closes #4085
Middleware was removed from the `/` route to redirect users without authentication, so now we need to handle this on the front-end properly.
2022-05-28 13:32:35 -04:00
DaneEveritt
b051718afe
Fix up API handling logic for keys and set a prefix on all keys 2022-05-22 19:03:51 -04:00
DaneEveritt
8605d175d6
Ensure admin endpoints continue to work 2022-05-22 18:56:22 -04:00
DaneEveritt
3f99b00cf7
Fix display exception handling 2022-05-22 18:21:38 -04:00
DaneEveritt
dca53611ff
Ensure we don't cause a mess with the auth providers 2022-05-22 18:16:47 -04:00
DaneEveritt
3ae70efc14
Use existing method to handle the login 2022-05-22 17:26:32 -04:00
DaneEveritt
4d3362b24f
Perform a bit of code cleanup 2022-05-22 17:23:48 -04:00
DaneEveritt
be88e4e893
Ignore migrations, pass credentials 2022-05-22 17:01:39 -04:00
DaneEveritt
56f15c15a1
We can make this middleware significantly simpler 2022-05-22 16:54:07 -04:00
DaneEveritt
0fa33e0438
Mark a request as being stateful if a cookie for the session is provided at all
This accounts for poorly configured API clients that try to use cookies for authentication purposes. Treat everything with a session cookie as being a stateful request from the front-end.
2022-05-22 16:50:36 -04:00
DaneEveritt
33bafe9277
Simplify transformer logic 2022-05-22 16:23:22 -04:00
DaneEveritt
f7fc67344e
Ensure tokens are found in the database using the expected logic 2022-05-22 16:05:58 -04:00
DaneEveritt
e9c633fd03
Update transformers and controllers to no longer pull an API key attribute 2022-05-22 15:37:39 -04:00
DaneEveritt
bd37978a98
Initial pass at implementing Laravel Sanctum for authorization on the API 2022-05-22 14:57:06 -04:00
DaneEveritt
e313dff674
Massively simplify API binding logic
Changes the API internals to use normal Laravel binding which automatically supports nested-models and can determine their relationships. This removes a lot of confusingly complex internal logic and replaces it with standard Laravel code.

This also removes a deprecated "getModel" method and fully replaces it with a "parameter" method that does stricter type-checking.
2022-05-22 14:10:01 -04:00
DaneEveritt
f1235c7f88
Update CHANGELOG.md 2022-05-21 17:02:40 -04:00
DaneEveritt
05f41a2ca8
Don't trim strings on file manager endpoints; ref #4081 2022-05-21 16:58:06 -04:00
Alex
d0b6ae00dc
fix: update Paper API (#4080)
Paper api endpoints have been updated to api.papermc.io/v2 from the old papermc.io/api/v2
2022-05-21 15:50:07 -04:00
DaneEveritt
d4bf6bd46a
Add test coverage and fix permissions mistake 2022-05-15 17:30:57 -04:00
DaneEveritt
8483db755d
Fix SSH key factory 2022-05-15 16:47:58 -04:00
DaneEveritt
a9364061c1
Store keys in standard format; query with fingerprint not public key 2022-05-15 16:41:15 -04:00
DaneEveritt
b563f13d09
Trim the key provided to query correctly; don't increment throttles when keys aren't found 2022-05-15 16:23:17 -04:00
DaneEveritt
3d6a30c9fd
Oops, don't make this abstract 2022-05-15 16:06:00 -04:00
DaneEveritt
412ac5ef39
Have the panel handle all of the authorization for both public key and password based attempts 2022-05-15 16:00:08 -04:00
DaneEveritt
e856daee19
Reject requests for public key auth when the user has no keys 2022-05-15 15:47:06 -04:00
DaneEveritt
12927a3202
Update SFTP authentication endpoint to support returning user public keys 2022-05-15 15:37:58 -04:00
DaneEveritt
cca0010a00
Update egg import/update logic to all use the same pathwaus 2022-05-15 14:40:19 -04:00
DaneEveritt
6554164252
Add test coverage for the SSH key endpoints 2022-05-14 18:08:48 -04:00
DaneEveritt
97280a62a2
Add support for storing SSH keys on user accounts 2022-05-14 17:31:53 -04:00
DaneEveritt
5705d7dbdd
Run php-cs-fixer 2022-05-14 16:03:50 -04:00
DaneEveritt
65f27d41a2
Switch to more recent Laravel route definition methods 2022-05-14 15:51:05 -04:00
DaneEveritt
62b178ed02
Show network usage on the server console view 2022-05-13 23:00:59 -04:00
DaneEveritt
8791d681bc
Fix server image selection not... existing 2022-05-13 22:09:20 -04:00
DaneEveritt
3e1f70570b
Update CHANGELOG.md 2022-05-13 21:54:24 -04:00
DaneEveritt
97a7959096
Support outputting all of the nodes on the instance 2022-05-13 21:49:06 -04:00
DaneEveritt
3f47d7a12c
Allow returning the node configuration from the CLI; closes pterodactyl/panel#4047 2022-05-13 21:30:16 -04:00
DaneEveritt
100d4ee726
Remove more unnecessary translations 2022-05-12 17:53:29 -04:00
Alex
0e3e14aa93
fix: artisan translations (#4069) 2022-05-08 11:28:17 -04:00
DaneEveritt
44bb8b4abf
Fix bad config for PHP 8.1 2022-05-07 18:33:41 -04:00
DaneEveritt
a6df0afefd
Update CHANGELOG.md 2022-05-07 18:30:12 -04:00
DaneEveritt
6d5ca5a811
Update java version modal to only suggest allowed images 2022-05-07 18:18:14 -04:00
DaneEveritt
c8faf64059
Support naming docker images on eggs; closes #4052
Bumps PTDL_v1 export images to PTDL_v2, updates the Minecraft specific eggs to use named images.
2022-05-07 17:45:22 -04:00
DaneEveritt
53207abcb3
Add base model layout from V2 for frontend 2022-05-07 16:52:58 -04:00
DaneEveritt
634b80ed42
Add support for filtering allocations to determine if they're assigned or not; closes #3872 2022-05-07 16:16:11 -04:00
DaneEveritt
1ae98604a4
Mark the 2FA field as a one-time-password field for autocomplete; closes #4038 2022-05-07 15:25:50 -04:00
DaneEveritt
e88d24e0db
Don't allow allocations to be deleted by users if no limit is defined; closes #3703 2022-05-07 15:05:28 -04:00
DaneEveritt
c751ce7f44
Allow more values for remote field when creating a database; closes #3842 2022-05-07 14:17:10 -04:00
DaneEveritt
b07fdc100c
Don't run schedules when a server is suspended or installing; closes #4008 2022-05-04 20:41:53 -04:00
DaneEveritt
ab37ee8633
Remove dusk tests, they're not used 2022-05-04 20:41:32 -04:00
DaneEveritt
66da520e11
Simplify testing process for integration tests, don't require second connection 2022-05-04 20:41:04 -04:00
DaneEveritt
8c63eebf13
Fix fractal errors 2022-05-04 19:35:10 -04:00
DaneEveritt
530558b0f8
Update deprecated JSON response creation and unnecessary middleware 2022-05-04 19:23:01 -04:00
DaneEveritt
f5ad9b9e11
Replace debug bar with clockwork 2022-05-04 19:19:00 -04:00
DaneEveritt
4252014d18
Update includes definition to match updated package requirements 2022-05-04 19:11:42 -04:00
DaneEveritt
34ffaebd3e
Run cs-fix, ensure we only install dependency versions supporting 7.4+ 2022-05-04 19:01:29 -04:00
DaneEveritt
3e55a79439
Don't default to redis on the first runs, causes errors when trying to setup environment 2022-05-04 17:48:09 -04:00
DaneEveritt
21685d6fc6
Update composer dependencies 2022-05-04 17:46:15 -04:00
Jelco
af4616ccf2
Add cron cheatsheet (#3866) 2022-03-28 12:43:45 -07:00
Jim C K Flaten
2680fe4c8e
Feature/task order (#3807) 2022-03-28 12:31:35 -07:00
FabianS
82818414a3
Ability to create nodes with artisan (#3319) 2022-03-28 12:28:16 -07:00
Георгий Пронюк
281256e17c
Grant all necessary permissions to generated SQL users (#3800)
* grant all necessary permissions to users

* fix CREATE TEMPORARY TABLES

Co-authored-by: A248 <theanandbeh@gmail.com>

Co-authored-by: A248 <theanandbeh@gmail.com>
Co-authored-by: Matthew Penner <me@matthewp.io>
2022-03-28 12:22:37 -07:00
Mrxbox98
a9ebf5b883
Added build workflow (#3963) 2022-03-28 12:13:27 -07:00
Alex
695c2647c8
fix(paper): fetching older versions (#3998)
Limit the results to a single match to prevent results such as "true true true" since the current version check expects only a single match
2022-03-28 12:12:21 -07:00
root
14cc98f75f
Tempest Hosting added (#4007) 2022-03-28 10:25:40 -07:00
Dane Everitt
61d6fa3168
Update contribution guidelines to clarify what types of PRs will be accepted 2022-02-20 10:59:58 -05:00
Dane Everitt
a071676be4
Update webpack HMR for new dev environment 2022-02-12 13:18:08 -05:00
Dane Everitt
0bd182c2a7
Lower the default guzzle timeouts; ref pterodactyl/panel#3936 2022-02-05 12:33:54 -05:00
Alex
5120590e47
ref: remove google analytics (#3912) 2022-02-05 09:08:43 -08:00
Mrxbox98
0ff60d83eb
Fix incorrect alignment on 2FA boxes due to incorrect TW breakpoints (#3914) 2022-02-05 09:08:11 -08:00
Alex
5c229d60e3
feat(tf2): add GSLT variable (#3927)
Add GSLT variable similar to CS:GO.
2022-02-05 09:05:47 -08:00
Alex
edfd97e0b4
feat(pid_limit): expand list of errors for pid_limit feature (#3942)
Expands the list of errors for pid_limit egg feature to support Steam PID errors and re-organize the list to be prettier
2022-02-05 09:05:36 -08:00
Alex
05bdffcd61
ref: set redis as default option for env drivers setup (#3915)
Redis is the recommended value yet the default options are different, e.g cache being file.
2022-02-05 09:05:18 -08:00
Dane Everitt
8dee69e78f
Add fields for game and image details 2022-01-30 09:04:54 -08:00
Alex
7866c19007
feat(docker): automated certificate renewal with certbot (#3916)
* feat(docker): automated certificate renewal with certbot

Executes cron on the first day of every month at 23:00 to reduce the load on LE when everyone else is doing it at 00. Certificate that expires in less than 30 days will be renewed.

closes #3907
2022-01-28 08:32:33 -08:00
Dane Everitt
0a4ba6a7dc
Force https on URLs when behind proxy; closes #3623 2022-01-23 12:58:44 -05:00
Dane Everitt
60b82343b2
Update SECURITY.md 2022-01-19 18:10:51 -08:00
Dane Everitt
dfa329ddf2
[security] ensure session is only for that request when authenticating user API key
https://github.com/pterodactyl/panel/security/advisories/GHSA-7v3x-h7r2-34jv
2022-01-19 21:09:17 -05:00
Mrxbox98
21f74a835c
Fixed error (#3870) 2022-01-19 17:06:31 -08:00
Dane Everitt
ee870d45e8
Update CHANGELOG.md 2022-01-19 19:55:33 -05:00
Alex
0ff2f28ced
feat(egg): Add Steam out of disk space modal (#3891) 2022-01-18 13:00:10 -07:00
Mrxbox98
1f3217c3c5
fix(server/files): duplicate entry when making a nested folder (#3813) 2022-01-18 12:49:06 -07:00
Alex
5f308feb3f
feat(model/pid): lowercase error array element (#3892) 2022-01-18 12:34:44 -07:00
Alex
e881285ef1
ci(release): add ESLint config (#3747) 2022-01-17 20:17:13 -07:00
Wuzado
99ebd2e75c
Add the DB_PORT environmental variable to the example Docker Compose config (#3796) 2022-01-17 20:12:14 -07:00
Boy132
7d0d71baec
Checkbox & Dropdown for Startup Variables (#3769) 2022-01-17 20:08:53 -07:00
Paperboypaddy16
e7884e4f0b
Fixed link for docker-compose.yml under Setup (#3829) 2022-01-17 20:05:04 -07:00
Charles Morgan
aed9f85bce
Add PID Modal (#3845) 2022-01-17 20:02:10 -07:00
Matthew Penner
1eaf411cb4
node: lowercase fqdn in letsencrypt path (#3890) 2022-01-17 19:56:57 -07:00
Alex
28f7a809a5
fix: exception localization (#3850)
resolves #3849
2022-01-15 08:10:37 -08:00
Wuzado
49dd719117
fix(docker): handle cases where DB_PORT is not defined (#3808)
Co-authored-by: Alex <admin@softwarenoob.com>
2022-01-15 08:10:19 -08:00
Paul Vogel
04656f8da8
Fix anchor in link to docker docs (#3793)
The former version does not "scroll" to the section
2022-01-15 08:10:01 -08:00
Jelco
95ff5f88c3
update required versions (#3881) 2022-01-12 13:53:36 -08:00
Dane Everitt
f2e92d80ac
Adjust copyright in footer to be more consistent 2022-01-02 07:25:07 -08:00
Dane Everitt
a6a9b31278
Avoid having to update the license each year 2022-01-02 07:21:56 -08:00
Dane Everitt
4dc6121e5c
Update README.md 2022-01-02 07:19:16 -08:00
SirEpiclyAmazing
e771d36d41
Disallow crawlers (#3832) 2021-12-28 08:02:08 -05:00
Boy132
1d02365efe
Fix eslint warnings (#3814) 2021-12-19 09:50:18 -08:00
wingdings255
1564742606
Update egg-ark--survival-evolved.json (#3809) 2021-12-19 09:44:32 -08:00
Mrxbox98
66c56b0da8
CPU Graph change (#3804) 2021-12-12 10:19:06 -08:00
Mrxbox98
15619fb8e4
Fixes overlapping Two Factor Authentication Box (#3803) 2021-12-12 10:15:44 -08:00
Alex
4e6fe112b0
fix(forge): actually fix forge regex (#3801)
For whatever reason, stupid me rebased the wrong branch in previous PR #3783 and didn't notice it, which contained the old egg instead.

This one actually fixes the regex and includes more debugging steps for easier troubleshooting.

Easy to view diff: <https://www.diffchecker.com/3iJ9lVzH>
2021-12-12 10:14:25 -08:00
Mrxbox98
f04b87a37c
FireFox Font Fix (#3805) 2021-12-12 10:14:09 -08:00
hz-ad
928b060647
Include HostEZ in sponsors list (#3788)
Update to append HostEZ to the sponsors list
2021-12-06 11:00:29 -08:00
Alex
b8bf537737
cmd(setup): validate email input, closes #3175 (#3716) 2021-12-04 10:52:09 -08:00
Charles Morgan
0d5ff6afac
Add Pug / Jade to file editor, closes #3512 (#3514) 2021-12-04 10:51:52 -08:00
Alex
5cde059f21
docs(docker): display correct variable for certificates (#3723)
Docker image and compose file uses `LE_EMAIL` and not `LETSENCRYPT_EMAIL`

Co-authored-by: Matthew Penner <me@matthewp.io>
2021-12-04 10:51:15 -08:00
Alex
0db772a82b
eggs: update source install script (#3604)
Installing basic packages are unnecessary as they already exist in yolks installer image. This also gets rid of Debian 10 lib32gcc package not being found, since installer image is Debian 11.
2021-12-04 10:50:50 -08:00
Paul Vogel
dcbc1360a9
Improve test coverage for LocationController (#3779)
By adding tests for create, update, delete
2021-12-04 10:50:36 -08:00
Patrick R
622b939f00
Show ipv6 with correct in-url syntax (#3776) 2021-12-04 10:35:55 -08:00
Lukas Moucka
e8e2911a92
Change order of docker images in JavaVersionModalFeature (#3782)
This changes the order of the Docker images in JavaVersionModalFeature, and also sets the default state to Java 17. Previously it was Java 16, even though the first entry in the list was Java 8, that confused a lot of people
2021-12-04 10:35:39 -08:00
Boy132
96c3338e96
Add the MC 1.18 message to Java Version Modal (#3778) 2021-12-04 10:35:20 -08:00
Alex
49d5ef271d
ARM64 support for the Panel Docker image, closes #3580 (#3709)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2021-12-04 10:33:42 -08:00
Boy132
4cc8658334
GSL Token Modal Feature (#3746) 2021-12-04 10:29:24 -08:00
Yusta
a6e0e5dbda
Add app_url for mail sender (#3753)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2021-12-04 10:26:00 -08:00
Desjardins Jérôme
10aaf00e83
use DB_PORT for mysql database connection (#3762)
DB_PORT is the env variable defined for the mysql port into Panel Configuration.
2021-12-04 10:25:02 -08:00
Paul Vogel
b9d73afb63
Fix typo in messsage when deleting a database (#3777) 2021-12-04 10:24:06 -08:00
Alex
59d47e746b
fix: Forge version regex for 1.17+ JPMS (#3783)
For 1.17 JPMS arguments, fix regex to match`^1\.(17|18|19|20|21|22|23)` or latest instead of only dot . minor versions, which is something I didn't notice in a previous PR. This should future proof it.

Changes Java image display order defaulting to 17, which the 1.17+ requires for unix args.
2021-12-04 10:23:37 -08:00
Alex
01e7a45cc5
fix(eggs): Forge latest version fetching (#3770)
Fixes a typo in fetching the latest versions. It was overwritten to "recommended" by mistake.

Easy to read diff: <https://www.diffchecker.com/U04gJTRu>
2021-11-29 10:14:08 -08:00
Dane Everitt
30bb629bad
Update CHANGELOG.md 2021-11-16 20:36:53 -08:00
Dane Everitt
bf9cbe2c6d
Add consistent CSRF token verification to API endpoints; address security concern with non-CSRF protected endpoints 2021-11-16 20:02:18 -08:00
Matthew Penner
cc31a0a6d0
tests(integration): don't expect non-required fields 2021-11-15 11:29:22 -07:00
Alex
01871d8a6c
add Java 17 LTS image to Minecraft eggs (#3744)
* feat: add Java 17 LTS for Minecraft

* feat: add java 17 option to java modal
2021-11-15 08:15:27 -08:00
Dane Everitt
17c03e9a4d
Fix broken session management for application api 2021-11-03 21:33:21 -07:00
Dane Everitt
e8a8405899
Remove tests 2021-11-03 21:22:14 -07:00
Dane Everitt
60eff40a0c
Fix session management on client API requests; closes #3727
Versions of Pterodactyl prior to 1.6.3 used a different throttle pathway for
requests. That pathway found the current request user before continuing on to
other in-app middleware, thus the user was available downstream.

Changes introduced in 1.6.3 changed the throttler logic, therefore removing this
step. As a result, the client API could not always get the currently authenticated
user when cookies were used (aka, requests from the Panel UI, and not API directly).

This change corrects the logic to get the session setup correctly before falling
through to authenticating as a user using the API key. If a cookie is present and a
user is found as a result that session will be used. If an API key is provided it is
ignored when a cookie is also present.

In order to keep the API stateless any session created for an API request stemming
from an API key will have the associated session deleted at the end of the request,
and the 'Set-Cookies' header will be stripped from the response.
2021-11-03 20:51:39 -07:00
Alex
d0663dcbd4
fix: use POST for admin logout route (#3710)
Quick fix for logging out from the admin panel as the auth route was changed from GET to POST.
2021-10-30 13:27:59 -07:00
Alex
4dca4f0aa9
change display format of the container uptime (#3706)
* change display format of the container uptime

Display `day, hour, min` if days is more than 0, otherwise default to existing `hour, min, sec`. Removes pads to make it more clean in this new format.

* clean the return
2021-10-24 14:41:01 -07:00
Samuel Ryberg
c4ab318d5a
Update docker-compose.example.yml (#3707) 2021-10-24 10:21:58 -07:00
Alex
ef4410bac6
expose uptime to client resources API endpoint (#3705)
resolves #3704
2021-10-24 10:12:17 -07:00
Anders G. Jørgensen
72680fc954
Don't force enable-query (#3700)
But make sure the query.port is set correctly, if query is enabled.
2021-10-23 13:11:45 -07:00
Dane Everitt
d65e2978d0
Update CHANGELOG.md 2021-10-23 13:02:25 -07:00
Dane Everitt
45999ba4ee
(security) use POST for logout rather than GET
see https://github.com/pterodactyl/panel/security/advisories/GHSA-m49f-hcxp-6hm6
2021-10-23 13:00:21 -07:00
Dane Everitt
22a8b2b3a2
Use more standardized rate limiting in Laravel; apply limits to auth routes 2021-10-23 12:17:16 -07:00
Alex
f77932a617
cmd(upgrade): Attempt to gain users attention during upgrade (#3678)
* cmd(upgrade):  Attempt to gain users attention during upgrade

Changes color of the user and group to gain attention, common issue is having wrong user/group which breaks the panel. Outputs termination message when users spam enter skipping the upgrade wondering why it didn't upgrade.

Reminder to update wings, because users forget it.

* cmd(upgrade): Display wings upgrade documentation link
2021-10-10 11:08:22 -07:00
Alex
c12f1463b0
eggs(forge): Add support for 1.17+ Forge (#3676)
Support new 1.17+ Forge JPMS arguments that don't ship any executable jar. It will use unix_args.txt file for 1.17+ when one exists, otherwise defaults to using the jar file

Fix forge latest build version option to actually use latest instead of recommended
Set build version input rules to only accept valid values of the latest and recommended
Remove spaces from the version variables to avoid issues with curl. Forge site displays versions with spaces to end users
2021-10-10 10:50:01 -07:00
Alex
5b6de4df6f
eggs(rust): custom map url (#3625)
Introduces custom map URL variable. If none is provided, it will default to using normal map size and seed. Otherwise, it will use the custom map and remove map size/seed from the startup as required.
2021-10-09 10:31:47 -07:00
Waseem Hassan Shahid
8b236c6907
Fix SSL config docker (#3616)
* Don't copy default nginx config at build time

* Use http.d folder for nginx configs

* Add default config back

* Change the panel config name
2021-10-09 10:31:29 -07:00
Matthew Penner
4fa38b8e9c
Fix wings receiving wrong suspended status on sync (#3667)
Due to wings pulling the server configuration rather than the Panel pushing it,
wings gets the wrong status for a server if both the status update and sync request
are ran in a transaction due to the status not being persisted in the database.

Fixes #3639
2021-10-07 08:46:09 -07:00
Cyra
de0d5c9b8a
Updated CHS sponsor entry to use new domain (#3659)
Updated CHS sponsor entry to use new domain
Updated from captiolsolutions.cloud to chs.gg
2021-10-04 08:23:10 -07:00
Dane Everitt
81ba333270
If uptime is present in stats output, display it for the server; closes #3653 2021-10-03 12:59:44 -07:00
Dane Everitt
63e01f9aee
Update SECURITY.md 2021-10-02 08:21:04 -07:00
Dane Everitt
c57eb2c9e6
Update CHANGELOG.md 2021-09-21 21:36:29 -07:00
Dane Everitt
4a84c36009
Fix security vulnerability when authenticating a two-factor authentication token for a user
See associated security advisory for technical details on the content of this security fix.

GHSA ID: GHSA-5vfx-8w6m-h3v4
2021-09-21 21:30:08 -07:00
Dane Everitt
5fdb0a5909
Correctly expose OOM disable state for a server 2021-09-13 21:02:12 -07:00
Dane Everitt
f5a1ce13b8
Update CHANGELOG.md 2021-09-13 20:47:30 -07:00
Matthew Penner
bc25468802
server: fix build modification not being persisted (#3610) 2021-09-12 23:18:17 -06:00
Dane Everitt
dbb061d6f3
Update CHANGELOG.md 2021-09-12 11:26:37 -07:00
Dane Everitt
8f0eda21c5
Fix all screens on the panel unintentionally loading the root directory for a server 2021-09-11 14:17:20 -07:00
Dane Everitt
52588beeb0
Fix state management of overrides not properly resetting loader; closes #3429 2021-09-11 13:24:57 -07:00
Dane Everitt
7b429831ce
Fix missing user agent headers to store an empty string rather than null value 2021-09-11 13:00:53 -07:00
Boy132
5e5d7d6689
Update egg-garrys-mod.json (#3606)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2021-09-11 12:20:15 -07:00
Matthew Penner
4d7140bd3b
actions(tests): backport v2 workflow (#3558)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2021-09-11 12:20:04 -07:00
Dane Everitt
0b521c011f
Fix test workflow matrix for databases 2021-09-11 12:13:15 -07:00
Dane Everitt
db74b0024d
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-09-11 12:02:24 -07:00
Dane Everitt
fde0660e6c
Return tests to passing state 2021-09-11 12:02:15 -07:00
Alex
a775f3ccf2
egg(ark): Fix inverted OR operation (#3605) 2021-09-11 11:45:48 -07:00
Dane Everitt
e96ead4c4d
Update API calls to Wings to only pass the required details with the changes to the installer system 2021-08-29 14:09:43 -07:00
Dane Everitt
869bc22103
Update CHANGELOG.md 2021-08-29 13:42:49 -07:00
Dane Everitt
2d47f986ee
Replace calls to server patch with a manual sync method 2021-08-29 13:32:55 -07:00
Dane Everitt
d8d1eacb42
Don't require Wings API call to pass in order to update server details 2021-08-29 13:19:24 -07:00
Matthew Penner
7330a747b7
migrations: add foreign keys for mount relations (#3574) 2021-08-24 13:12:35 -06:00
Josh Miles
bd271e2e62
Consistency in Java version modal (#3569) 2021-08-24 12:42:58 -06:00
Alex
e1a667aaaf
Disable blank issues (#3566) 2021-08-24 11:35:30 -06:00
Omar Kamel
b67aceb685
Add environment variable for per_schedule_task_limit (#3557)
The environment variable `PTERODACTYL_PER_SCHEDULE_TASK_LIMIT` can be used to change the maximum number of tasks per schedule.
2021-08-20 11:07:05 -06:00
Matthew Penner
b4cae916ac
transfers: fix allocation array merging logic (#3551) 2021-08-18 12:58:41 -06:00
Alex
b94d69bbab
Introduce OOM Killer to Server Creation (#3548) 2021-08-18 12:32:45 -06:00
Cam White
5d41ac09fd
Grammatical fix on SetupTwoFactorModal (#3549) 2021-08-18 11:48:06 -06:00
Dane Everitt
ddf43bb4c5
Update README.md 2021-08-15 18:32:40 -07:00
Dane Everitt
2b3303c46b
Fix changing a user password to not incorrectly handle logging out old sessions; closes #3531 2021-08-15 17:37:12 -07:00
Dane Everitt
25d9ba4779
Run php-cs-fixer 2021-08-15 17:20:36 -07:00
Dane Everitt
d1199e59e6
Fix php-cs-fixer inspection in phpstorm 2021-08-15 17:15:05 -07:00
Dane Everitt
22f1341fea
reformat 2021-08-07 09:19:21 -07:00
Dane Everitt
75e0a862e7
Add another sanity check for websocket permissions 2021-08-07 09:16:29 -07:00
Dane Everitt
9bffa6a94c
Ignore files from V2 as well 2021-08-07 08:46:30 -07:00
Matthew Penner
10b357b71e
ui(server): fix used backup count (#3526)
* ui(server): fix used backup count

* ui(server): refactor backup count code
2021-08-04 20:34:00 -07:00
Matthew Penner
7e91a33a67
Update CHANGELOG.md (#3524) 2021-08-03 20:51:18 -07:00
Matthew Penner
49c24b9c4c
Merge pull request #3523 from parkervcp/fix_dockerfile
fix ghcr builds
2021-08-03 21:37:23 -06:00
Michael Parker
94fd987400 fix ghcr builds
Fix nginx conf file location
Fix php-fpm conf file location
2021-08-03 23:33:25 -04:00
Charles Morgan
0074c84001
Add javaversion to java eggs. (#3518)
Co-authored-by: Matthew Penner <me@matthewp.io>
2021-08-03 20:11:45 -07:00
Matthew Penner
81c788f524
cmd(upgrade): fix force and seed flags being ignored (#3519) 2021-08-03 19:48:34 -07:00
Matthew Penner
1c071b05aa
ui: fix spinner z-index (#3520) 2021-08-03 19:46:00 -07:00
Matthew Penner
970f281859
backups: default is_successful to false (#3522)
* backups: default is_successful to false
* backups: properly query backups
2021-08-03 19:45:25 -07:00
Dane Everitt
b19a1640f0
Update CHANGELOG.md 2021-08-02 20:48:16 -07:00
Dane Everitt
4960bc7eec
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-08-02 20:45:04 -07:00
Matthew Hugley
cfb5b8c244
Updated formatting for the docker compose file to fix a error. (#3421)
This fixes the error message "There is an error in the yaml syntax: YAMLSemanticError: Map keys must be unique; "<<" is repeated" which is received if trying to deploy the docker compose using portainer it will not even allow you to click the button because of the formatting error. This is a page showing a example of what I did "http://yaml.org/type/merge.html" Instead of 2 merge requests docker/portainer only allows 1 merge request in this situation so they had to be combined into 1 line instead of 2.
2021-08-02 20:44:55 -07:00
Mia
bda1ff50ab
[UI] Display the 2FA token, show spinner on load (#3367)
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2021-08-02 20:39:12 -07:00
Charles Morgan
924f00ac9a
Java Docker image updater feature (#3430)
Co-Authored-By: Lance Pioch <me@lance.sh>
2021-08-02 20:32:10 -07:00
Linux123123
9c64fb29a4
Fix ScheduleEdit page not working directly by url (#3477) 2021-08-02 20:07:39 -07:00
Triassic
e8746feb97
Fix a typo in DisableTwoFactorModal.tsx (#3507) 2021-08-02 20:07:26 -07:00
VibeGAMESNL
208a547a2a
Adding VibeGAMES as a sponsor (#3504) 2021-08-02 20:06:33 -07:00
Faye
a78404fdbe
Update SECURITY.md (#3483) 2021-08-02 20:05:27 -07:00
Alex
556deedcc1
fix: enable editing paper and spongeforge version variable input (#3509)
Changes the paper and spongeforge version variable to be editable by users on the client view. There is no reason to have it as read-only. Other eggs have this value as editable
2021-08-02 20:04:23 -07:00
Alex
ba18f7d3c6
Update Ark Survival Evolved Egg (#3513)
Updates Ark Survival Evolved egg to fix some common issues and requests.

RCON Password is required for RCON to function and has been changed from nullable to required.

The option to disable RCON is removed because RCON is required.

Added additional arguments variable to resolve users' issues inserting them in the wrong place due to the complicated startup parameters.

Removed deprecated userInteraction and logslocation from the egg.
2021-08-02 20:04:13 -07:00
Alex
2bbe58e8ec
fix: paper server jar input rule (#3494)
Changes Paper egg server jar variable input rule to match the other Minecraft eggs. Matches `a-zA-Z0-9_` and `.jar` at the end instead of hard-coded length value of 20.

Fixes #3492
2021-07-24 10:14:51 -07:00
Alex
e1d2a931b6
style(templates): Default title tag for issue templates (#3488) 2021-07-23 14:36:48 -07:00
Matthew Penner
1a79b4827c
backups: allow updating a failed backup (#3470) 2021-07-18 08:46:20 -07:00
Dane Everitt
4a4af7deb7
Update bug report and feature request templates 2021-07-17 10:26:06 -07:00
Foks
0b6236aa2a
Convert from Markdown to Issues Forms (#3457) 2021-07-17 10:04:27 -07:00
Charles Morgan
c54ce995a5
Remove userInteraction from 'config_startup' (#3465)
Removes UserInteraction from existing eggs in the panel, as its no longer supported.
2021-07-17 10:02:58 -07:00
Linux123123
2c2c35303a
Fix backup dropdown permissions (#3469) 2021-07-17 10:02:37 -07:00
ClumsyAdmin
57987c0f79
Update Allocation.php (#3468)
Max port typo
2021-07-17 10:02:15 -07:00
Charles Morgan
91ea0a4f41
Update core eggs to new docker yolk images (#3382) 2021-07-17 10:02:00 -07:00
Leystryku
298e985d74
Permission for referencing other tables (foreign keys) (#3419) 2021-07-17 10:01:37 -07:00
Matthew Penner
801cb8e487
config: add ssl/tls options for mysql and redis (#3464) 2021-07-17 10:01:23 -07:00
Dane Everitt
682ca6cecd
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-07-11 12:15:42 -07:00
Dane Everitt
d3e3b1db38
Test that a deleted backup makes an audit log entry 2021-07-11 12:15:39 -07:00
Alex
ca2269fea1
Fix z-index of the mass delete modal (#3463)
Fixes the order of mass confirmation modal to correctly be displayed prominently on top of all elements
2021-07-11 11:27:52 -07:00
Matthew Penner
d33522c857
composer: upgrade dependencies (#3427) 2021-07-11 10:27:15 -07:00
Matthew Penner
1260965dfd
ServerCreationService: send 'start_on_completion' option to wings (#3431) 2021-07-04 15:15:19 -07:00
iamkubi
cc05b0886b
Fix CPU tooltip on server create page (#3416)
CPU usage is based on threads, however the create server page incorrectly specifies physical cores in the help text.
Relocate a BlockIO blurb at the end of the CPU usage text which seems to be in the wrong place.
2021-06-19 12:10:02 -07:00
Dane Everitt
d049839ffc
Fix deleting a backup that is locked and failed; closes #3404 2021-06-13 10:26:47 -07:00
Fabian
725fc82657
fix eslint issues (#3410) 2021-06-12 10:46:10 -07:00
Alex
76fb8d26c1
patch: steamapps hotfix for steamcmd downloads (#3406)
* patch: steamapps hotfix for steamcmd downloads

* include new ark gen2 dlc map
2021-06-11 16:11:07 -07:00
Dane Everitt
aa3ea8b24b
Update CHANGELOG.md 2021-06-05 09:02:21 -07:00
Mark Ross
d45c67a6e1
Allow to find servers by short UUID (Application API) (#3340) 2021-06-05 08:43:57 -07:00
Alex
e33b1792b1
Show CPU limit next to CPU usage (#3307) 2021-06-05 08:40:48 -07:00
Jakob
647d2cbf92
add scroll down helper to console (#2951) 2021-06-05 08:39:36 -07:00
Lukas
75d254a6a4
Add support for mailgun API endpoint (#3364) 2021-06-05 08:38:47 -07:00
notil
b79d6e9e64
Minor UI fixes (#3366)
* Added same spacing as CPU graph to RAM graph
* Have the "New Database" button be on the right when on mobile
2021-06-05 08:38:24 -07:00
Charles Morgan
482293578a
Update eslint to latest verstions (#3380)
Updated Eslint to v7.27.0
Also updated all the related plugins to their latest versions.

Removed `eslint-plugin-standard`, no longer required with `eslint-config-standard` v16+   https://github.com/standard/standard/issues/1316
2021-06-05 08:37:44 -07:00
Stephen White
8459b11019
Allow database users to create/alter/drop routines (#3389)
Database users may wish to create/alter/drop stored procedures on their databases in order to use extra MySQL functionality.
2021-06-05 08:37:10 -07:00
Jelco
b3a1825b56
Fix server delete swal (#3391) 2021-06-05 08:36:59 -07:00
Alex
9656378783
Fix 401 error typo (#3393) 2021-06-03 13:35:51 -07:00
Dane Everitt
2fd16f441d
Fix component stack depth crashes due to looping setState 2021-05-29 10:58:24 -07:00
Matthew Penner
c5b6d0bf45
Fix query to avoid pruning actively running backups (#3379) 2021-05-27 15:33:43 -07:00
Dane Everitt
010ef8621b
[security]: remove external dependency for loading QR codes for 2FA 2021-05-16 12:45:04 -07:00
Dane Everitt
1f64086c67
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-05-16 12:35:52 -07:00
Dane Everitt
6b16b9bc2a
Cleanup logic for asModal to make it a little easier to use dynamically 2021-05-16 12:35:49 -07:00
Charles Morgan
3898e40fa4
Add list of files being deleted to delete modal (#3299)
Shows the first 15 file names being deleted. If more then 15, the first 15 will be shown then the last line will be ` + ## other(s)`
2021-05-16 11:28:52 -07:00
Alex
bd5472e2e6
Update voice server eggs (#3333)
* Remove numeric input rule from mumble

* Delete unnecessary file removal line
2021-05-16 11:27:55 -07:00
Charles Morgan
69ac2ca40b
Allow MAB div to be clicked through (#3359)
Allows users to interact with files that are blocked by the div that renders the MassActionbar
2021-05-16 09:49:21 -07:00
Antony
9c3c5f6f71
Fixed a very small minor issue (#3360) 2021-05-16 09:48:55 -07:00
Charles Morgan
76ac1998cf
Don't allow backups to be made via schedules if limit = 0 (#3323) 2021-05-16 09:47:36 -07:00
Dane Everitt
5a82dd6a18
Update to TypeScript 4 2021-05-08 10:37:18 -07:00
aussieserverhosts
0cd1362b05
Added Aussie Server Hosts to sponsors list (#3336) 2021-05-07 08:18:13 -07:00
Dane Everitt
5d5e4ca7b1
Add support for locking backups to prevent any accidental deletions 2021-05-03 21:26:09 -07:00
Dane Everitt
5f48712c28
Add test coverage for RunTaskJob 2021-05-01 12:24:42 -07:00
Dane Everitt
8ab3ad3f1a
Update CHANGELOG.md 2021-05-01 11:54:23 -07:00
Dane Everitt
7a85c31553
Add internal code support for stopping tasks if server is not running or continuing through on task error 2021-05-01 11:52:02 -07:00
Dane Everitt
84483d36ee
Fix use of onlyWhenOnline 2021-05-01 11:25:35 -07:00
Dane Everitt
ea057cb1cb
Update UI to support setting "Continue on Error" for tasks 2021-05-01 11:24:18 -07:00
Dane Everitt
92cd659db3
Add underlying data changes necessary for new task & schedule features 2021-05-01 10:44:40 -07:00
Dane Everitt
cf1ac04e39
Merge pull request #3279 from Boy132/patch-1
Add group input to upgrade command
2021-04-25 11:06:34 -07:00
Dane Everitt
fd8259f33d
Merge branch 'develop' into patch-1 2021-04-25 11:06:29 -07:00
Dane Everitt
4bd1fea52c
Merge pull request #3292 from JulienTant/develop
Make it possible to manually run disable schedule
2021-04-25 11:06:18 -07:00
Julien Tant
b10f6184e0 remove the test preventing disabled schedule to be manually executed 2021-04-24 18:30:48 -07:00
Julien Tant
f7f972b33d rename now variable & fix condition 2021-04-24 18:18:29 -07:00
Julien Tant
2cd64c0af4 Merge remote-tracking branch 'upstream/develop' into develop 2021-04-24 17:14:18 -07:00
Dane Everitt
d0c7e2c0e6
Update CHANGELOG.md 2021-04-24 16:45:54 -07:00
Dane Everitt
30344c1339
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-04-24 16:39:59 -07:00
Dane Everitt
6ef60633d3
Additional coverage to ensure values are wrapped as expected; ref #3287 2021-04-24 16:39:56 -07:00
Dane Everitt
257f7a293a
Merge branch 'develop' into patch-1 2021-04-24 16:13:20 -07:00
Julien Tant
552b9d3c33 Add possibility to run disabled cron 2021-04-24 15:06:21 -07:00
Dane Everitt
2fc288e53a
Merge pull request #3285 from Software-Noob/patch-4
Update forge download URL to match the new maven host
2021-04-22 08:22:33 -07:00
Alex
3858ca0807
fix download url 2021-04-22 00:11:45 +03:00
Dane Everitt
38a5f2dbbf
Ensure allocations are persisted across page navigation correctly; closes #2729 2021-04-20 20:48:40 -07:00
Dane Everitt
d2955b9361
Only request servers as an admin if actually an admin; closes #3242 2021-04-20 20:41:08 -07:00
Peter Marheine
db64f54010
Drop explicit transaction from store_node_tokens_as_encrypted_value (#3280)
Migrations are executed in transactions anyway, and creating a savepoint can cause
spurious failures on databases that don't support transactional DDL (like
MySQL and MariaDB) when it attempts to commit a savepoint that was silently
not created because there wasn't an active transaction after some DDL was
executed.

While a better solution might involve splitting this migration into several so each
one is only DDL or only data manipulation, I don't think that can be done very
easily while maintaining compatibility with existing deployments.

Fixes #3229.
2021-04-20 20:37:11 -07:00
Boy132
c56e699985
Separated user from group 2021-04-20 17:39:34 +02:00
Boy132
2f6351ec00
Small fix 2021-04-20 10:08:21 +02:00
Boy132
3ca835e661
Add group input to upgrade command 2021-04-20 10:06:19 +02:00
Charles Morgan
b0995f6458
Update ---bug-report.md (#3272)
Spelling correction, Removed code block as they're useless...
2021-04-18 10:47:12 -07:00
Charles Morgan
2d97b51628
Update issue template (#3271)
Daemon was replaced with Wings, template updated to reflect that, Also askes for logs as they can be helpful, and reduce the amount of times we have to ask and wait for a reply.
2021-04-17 15:57:37 -07:00
Alex
38be4c9e4b
More descriptive error for when backup limit is 0 (#3244) 2021-04-17 14:05:31 -07:00
aussieserverhosts
eb582f51f1
Added SERVER_NAME environment variable (#3110)
Added SERVER_NAME environment variable to stop laravel framework server name defaulting to localhost, causing mail relays such as Gmail to stop silently dropping emails due to sender name being localhost.
2021-04-17 12:18:13 -07:00
Dane Everitt
1e2f6495be
Merge pull request #3226 from KaiDevrim/patch-1
Change relative docker compose to absolute path docker-compose
2021-04-17 12:16:57 -07:00
Dane Everitt
2ea5fc2e84
Merge pull request #3220 from Software-Noob/patch-2
Increase Rust server name length
2021-04-17 12:16:42 -07:00
Dane Everitt
7af08b1a39
Merge pull request #3243 from wingdings255/patch-1
Update egg-ark--survival-evolved.json
2021-04-17 12:16:33 -07:00
Dane Everitt
af3fb14254
Merge pull request #3256 from pterodactyl/lancepioch-patch-1
Change to actual function names to support MariaDB
2021-04-17 12:16:03 -07:00
Dane Everitt
ea7b0a1a67
Merge branch 'develop' into lancepioch-patch-1 2021-04-17 12:12:10 -07:00
Dane Everitt
e2e62b2dae
Update tests.yml 2021-04-17 12:12:04 -07:00
Dane Everitt
a139fbfc8d
Merge branch 'develop' into lancepioch-patch-1 2021-04-17 12:10:55 -07:00
Dane Everitt
1ebcb2b7fb
Run tests on both MariaDB & MySQL 2021-04-17 12:10:40 -07:00
Dane Everitt
13919df603
Merge branch 'develop' into lancepioch-patch-1 2021-04-17 12:02:19 -07:00
Dane Everitt
f5ca391400
Get tests back in working order 2021-04-17 12:02:08 -07:00
Lance Pioch
77a3ca682f
Change to actual function names to support MariaDB 2021-04-08 17:34:25 -04:00
Dane Everitt
f973285e04
Guard against unexpected panic conditions from wings 2021-04-04 10:45:33 -07:00
Dane Everitt
18e5ce310a
Use updated response from wings 2021-04-04 10:25:54 -07:00
Dane Everitt
52308af74d
Normalize this code. 2021-04-04 09:45:20 -07:00
Dane Everitt
c71c1e57db
Update README.md 2021-04-03 11:18:16 -07:00
Dane Everitt
45680cab47
Don't use tagging, closes #3224 2021-04-03 10:53:41 -07:00
wingdings255
acc4395b53
Merge branch 'develop' into patch-1 2021-04-03 07:22:26 +00:00
Dane Everitt
a7b60c0f52
Merge pull request #3245 from harryfrommixmlhosting/patch-2 2021-04-02 18:18:30 -07:00
harryfrommixmlhosting
6034440061
Update README.md 2021-04-03 02:17:25 +01:00
Dane Everitt
da7e0705ba
Merge pull request #3225 from MineDoubleSpace/add-bisecthosting 2021-04-02 18:12:42 -07:00
Dane Everitt
5b84372843
Merge branch 'develop' into add-bisecthosting 2021-04-02 18:12:39 -07:00
wingdings255
95f26bd0c4
Update egg-ark--survival-evolved.json
Updated the list of available ark maps to include the new CrystalIsles map
2021-04-01 20:19:23 +00:00
Dane Everitt
fa471c1a69
Merge pull request #3230 from tari/docker-errexit
docker: set errexit in the entrypoint script
2021-03-29 08:21:27 -07:00
Peter Marheine
9e4286a548
docker: set errexit in the entrypoint script
Currently container startup will ignore any errors, which will tend
to leave things in a broken state if operations like migrations or
certificate provisioning fail. Prefer to terminate the container
rather than try to limp on.
2021-03-28 12:38:25 +11:00
Kai Devrim
58d31fdd4a
Change relative docker compose to absolute path docker-compose
The old version was relative and led to a 404 because the compose file is in /panel.
2021-03-26 21:27:18 -07:00
MineDoubleSpace
fe8136de22 add BisectHosting to readme 2021-03-27 16:41:14 +13:00
Dane Everitt
9a5486c0aa
Cleanup and improve build docs 2021-03-26 09:50:46 -07:00
Dane Everitt
a072b9c5be
Update license year, right on time 👹 2021-03-26 09:30:13 -07:00
Dane Everitt
b5f5185a9b
Update CHANGELOG.md 2021-03-26 09:18:54 -07:00
Dane Everitt
48ad8f538e
Always allow specifying a page size with the API; closes #3218 2021-03-26 09:03:51 -07:00
Alex
06fe47fc3c
increase short limit 2021-03-25 00:03:39 +02:00
Dane Everitt
9b46d59045
Cache resource lookup results for 20 seconds for each server 2021-03-21 12:29:18 -07:00
Dane Everitt
c7375f09d3
Maybe fix issue with docker logs? ref #3045 2021-03-21 12:11:40 -07:00
Dane Everitt
29b4b52397
Set the current page in the dashboard URL to allow easy refreshing; closes #2993 2021-03-21 12:07:24 -07:00
Dane Everitt
7676f7dd66
Allow modification of server build settings even when node is offline 2021-03-21 11:49:42 -07:00
Dane Everitt
28148f4845
Don't force enable bungeecord query port; closes #3175 2021-03-21 10:53:27 -07:00
Dane Everitt
aa0b7977bb
Fix error spam in logs due to missing cron month 2021-03-21 10:49:23 -07:00
Dane Everitt
8c7d785c9e
Ensure a created_at value is set on recovery tokens; closes #3163 2021-03-21 10:43:01 -07:00
Dane Everitt
983a337fd4
Merge branch 'develop' of github.com:pterodactyl/panel into develop 2021-03-21 10:33:17 -07:00
Dane Everitt
a7e1900529
Fix UI for mobile views when showing docker images; closes #3186 2021-03-21 10:33:09 -07:00
Dane Everitt
84e3153e71
Merge pull request #3179 from pterodactyl/fix/backup-restore
fix: backup restore delete all files
2021-03-21 10:22:10 -07:00
Dane Everitt
62c08d17fb
Merge pull request #3204 from iAtomPlaza/develop
typo
2021-03-21 09:56:45 -07:00
Dane Everitt
14c5db0c0c
Merge pull request #3201 from ssh-sysadmin/patch-1
Change ByteAnia's link to a tracker-enabled one.
2021-03-21 09:56:02 -07:00
Steve Coulter
0e3d2f20dd
typo 2021-03-20 17:03:30 -07:00
Samuel L
d34e374ce0
Change ByteAnia's link to a tracker-enabled one. 2021-03-20 03:40:20 -04:00
Dane Everitt
0b7151a306
Merge pull request #3200 from martmists-gh/develop
Add a message for users to apply different versions
2021-03-19 15:55:49 -07:00
Martmists
6a664bc479 Add a message for users to apply different versions 2021-03-19 23:45:44 +01:00
Dane Everitt
942136cb35
Merge pull request #3195 from pterodactyl/fix/console-copy
ui(server): fix keybinds not working in console
2021-03-18 08:22:09 -07:00
Matthew Penner
9057a4f9d8 ui(server): fix keybinds not working in console 2021-03-17 16:59:06 -06:00
Dane Everitt
1b3d1a4540
Merge pull request #3190 from Software-Noob/patch-1
Fix forge universal jar renaming
2021-03-15 12:57:26 -07:00
Alex
3358bea09f
Fix universal jar renaming 2021-03-15 18:07:30 +02:00
Matthew Penner
5653b03ddb cleanup BackupContextMenu.tsx 2021-03-12 15:40:45 -07:00
Matthew Penner
582521f419 fix: backup restore delete all files 2021-03-12 14:47:49 -07:00
Dane Everitt
c8c9c3d3cb
Merge pull request #3162 from Software-Noob/tar-patch
Fix artisan upgrade failing to download
2021-03-08 10:10:52 -08:00
Alex
76f507656c
remove file archive flag 2021-03-08 12:19:20 +02:00
Dane Everitt
9d500f1c49
Update CHANGELOG.md 2021-03-07 17:38:42 -08:00
Dane Everitt
1476104b30
Fix inability to download files from the panel; closes #3151
Co-Authored-By: xcgc <74693042+xcgc@users.noreply.github.com>
2021-03-07 09:45:27 -08:00
Dane Everitt
7e0efbdecd
Merge pull request #3148 from mammut53/develop
Fix displaying wrong backup number on pages
2021-03-06 19:15:26 -08:00
mammut53
8dca2140b3
Fix displaying wrong backup number on pages
By having multiplie pages the current number of backups broke
2021-03-07 01:57:02 +01:00
Dane Everitt
0baa74a517
Fix rust not seeding 2021-03-06 12:29:40 -08:00
Dane Everitt
ca6068fa6d
Update CHANGELOG.md 2021-03-06 10:49:08 -08:00
Dane Everitt
5fa06e5672
Merge pull request #3144 from Sabinno/develop
Fix grammar
2021-03-06 10:45:47 -08:00
Dane Everitt
37d48c9972
Merge pull request #3146 from xcgc/patch-1
Inform users when their server successfully installed. Fixes #3140
2021-03-06 10:45:23 -08:00
xcgc
397df3bf71
Update ServerInstallController.php 2021-03-06 15:52:24 +08:00
Sabinno
9ca0ee99e9
Fix spelling
Changed "other's", implying a single other person's server, to "others'", implying the servers of multiple people.
2021-03-05 12:39:47 -05:00
Dane Everitt
4192bcab4b
Update CHANGELOG.md 2021-03-03 21:17:20 -08:00
Dane Everitt
766a8f3fe8
Merge branch 'develop' of https://github.com/pterodactyl/panel into develop 2021-03-03 21:04:17 -08:00
Dane Everitt
9aa74a3a50
appease the eslint gods 2021-03-03 21:04:11 -08:00
Dane Everitt
94ad018e50
Merge pull request #3132 from ssh-sysadmin/develop
Add ByteAnia to Sponsors list
2021-03-03 21:03:03 -08:00
Dane Everitt
2edae052d8
Merge pull request #3138 from Software-Noob/patch-3
Fix ark rcon startup
2021-03-03 21:02:54 -08:00
Dane Everitt
1943c7a98b
Prevent catastrophic boot failure in wings when a server egg has bad data; closes #3055 2021-03-03 21:02:11 -08:00
Alex
0723e6e3c1
Fix ark rcon startup 2021-03-04 06:41:10 +02:00
Dane Everitt
19279644df
Show more user friendly error when allocation fails to parse; closes #3056 2021-03-03 20:19:00 -08:00
Dane Everitt
9a10078008
Delete Vagrantfile 2021-03-03 20:18:24 -08:00
Dane Everitt
68bc81f2f1
Try to handle terminal fit a bit better; closes #3121
I'm not sure how to fix this actually, but based on the light reading I did theoretically this should at least prevent it from trying to fit something that doesn't even exist?
2021-03-03 19:44:06 -08:00
Dane Everitt
bc87a9cf7d
Don't break the entire server UI for a broken console, ref #3121 2021-03-03 19:31:39 -08:00
Samuel L
d86bcb50af
Update README.md 2021-03-02 07:14:35 -05:00
Dane Everitt
f58db890df
Update SECURITY.md 2021-02-24 20:44:08 -08:00
Dane Everitt
7d0f299b30
Fix sftp port being signed int; closes #2992 2021-02-23 21:28:33 -08:00
Dane Everitt
1b2c4931ee
Add endpoint logic necessary to reset server states if they get stuck installing/restoring when wings restarts 2021-02-23 21:20:02 -08:00
Dane Everitt
3b60004392
Merge pull request #3114 from Software-Noob/patch-2 2021-02-23 06:46:38 -08:00
Dane Everitt
25fe9c10e0
Merge branch 'develop' into patch-2 2021-02-23 06:46:21 -08:00
Dane Everitt
7f981e9ade
Merge pull request #3119 from pterodactyl/revert-3116-patch-2
Revert "2021_02_23_161404_UpdateDaemonSftp.php"
2021-02-23 06:45:37 -08:00
Dane Everitt
717fbf30d2
Revert "2021_02_23_161404_UpdateDaemonSftp.php" 2021-02-23 06:45:21 -08:00
Dane Everitt
06108b560e
Merge pull request #3116 from VinGal0/patch-2
2021_02_23_161404_UpdateDaemonSftp.php
2021-02-22 21:14:53 -08:00
VinGal
5328cfd760
2021_02_23_161404_UpdateDaemonSftp.php
Migration File for DaemonSFTP
2021-02-23 01:13:46 +00:00
Dane Everitt
ef76f3cdca
Merge pull request #3112 from Software-Noob/patch-1
Change Rust RCON Password input rule
2021-02-22 11:30:48 -08:00
Alex
03a14338d0
update regex rule 2021-02-22 20:46:56 +02:00
Alex
e636f69113
Fix server.jar renaming 2021-02-22 17:09:46 +02:00
Alex
d0afb29ae8
Change input rule 2021-02-22 15:47:34 +02:00
Dane Everitt
42aae1d9f1
Fix search/copy on osx 2021-02-17 21:32:36 -08:00
Dane Everitt
b92712e990
Remove max height; fixes overflow issues with small browser font sizes; closes #2799 closes #3084 2021-02-17 21:26:40 -08:00
Dane Everitt
94ea9c37d0
Don't require auto-allocation settings if not enabled; closes #3085 2021-02-17 21:11:23 -08:00
Dane Everitt
245989967b
Merge branch 'dane/restore-backups' into develop 2021-02-17 20:59:40 -08:00
Dane Everitt
3171b8d559
Show correct server suspended image; closes #3092 2021-02-17 20:58:47 -08:00
Dane Everitt
6cee1084d6
Merge pull request #3087 from TekExplorer/update/vanilla-snapshot
Add Latest Snapshot to Vanilla Egg
2021-02-14 16:05:35 -08:00
Dane Everitt
fc6f3271a0
Merge pull request #3089 from WaffleThief123/develop
Adding CHS to readme as well as some typos
2021-02-11 14:37:16 -08:00
Cyra Westmere
d67cd5f221 Minor grammatical change to Spillhosting.no 2021-02-11 13:44:35 -08:00
Cyra Westmere
c9ebbf161e Rewrote CHS after talking to the team. 2021-02-11 13:36:53 -08:00
Cyra Westmere
deaeb3fa99 Fixed a typo on Line 10 "in isolated Docker container" -> "in isolated
Docker conatiners"
Fixed a typo in SpillHosting's Company: "which aims to cheap services" ->
"which aims for cheap services"
Added CHS to sponsors
2021-02-11 13:29:33 -08:00
Omar Kamel
d644387a33
remove unecessary bit 2021-02-10 17:07:43 -05:00
TekExplorer
48adca2c00 Add Latest Snapshot to Vanilla Egg 2021-02-10 20:53:17 +00:00
Dane Everitt
9af1b9c3ac
Merge pull request #3072 from pterodactyl/matthewpi/fix-server-installs
api(remote): fix inproper reading of boolean for installation status
2021-02-08 10:04:45 -08:00
Matthew Penner
352910f897 api(remote): fix inproper reading of boolean for installation status 2021-02-06 10:16:08 -07:00
Dane Everitt
00da092e45
Fix tests 2021-01-30 19:12:22 -08:00
Dane Everitt
2f08456ed9
Merge branch 'dane/restore-backups' into develop 2021-01-30 18:51:16 -08:00
Dane Everitt
c8ecbe6e79
Update logic to listen for a restoration completion event 2021-01-30 18:43:46 -08:00
Dane Everitt
f558bc880a
Correctly handle error; don't overwrite laravel method 2021-01-30 18:07:48 -08:00
Dane Everitt
32fb21d0b7
Update use of server error blocks 2021-01-30 18:01:32 -08:00
Dane Everitt
e30a765071
Simplify logic when a server is in an unsupported state 2021-01-30 13:28:31 -08:00
Dane Everitt
be26921fcc
Merge branch 'develop' into dane/restore-backups 2021-01-30 10:10:29 -08:00
Dane Everitt
8c2d1cdffc
Merge pull request #3050 from pterodactyl/fix/release-building
actions(release): copy .babel-plugin-macrosrc.js to release archive
2021-01-28 21:10:49 -08:00
Matthew Penner
6c2dcbce9c actions(release): copy .babel-plugin-macrosrc.js to release archive 2021-01-28 16:47:37 -07:00
Dane Everitt
5515871b2f
Turns out I hate that huge space formatting, disable that mess 2021-01-27 20:52:11 -08:00
Dane Everitt
0ae90eacaa
Don't try to store null values in the DB for variables; closes #3038 2021-01-27 20:45:26 -08:00
YinScape
8e7fcb484c
Update "not viable" message to be more informative (#2987) 2021-01-26 21:13:13 -08:00
Charles Morgan
b8db5bc8b0
Allow copy on click for SFTP information (#3027) 2021-01-26 21:10:30 -08:00
Dane Everitt
25f656116a
Merge pull request #3031 from Software-Noob/patch/rust_egg
Rust+ app support
2021-01-26 21:10:12 -08:00
Dane Everitt
b00def2537
Switch to JSON from TEXT when storing denylist items for an egg; closes #3034 2021-01-26 21:08:53 -08:00
Dane Everitt
0dd0f09238
Formatting cleanup for backups 2021-01-25 19:25:15 -08:00
Dane Everitt
0a2c89e9f4
Reeformat with new rules post merge 2021-01-25 19:20:51 -08:00
Dane Everitt
663143de0b
Merge branch 'develop' into dane/restore-backups 2021-01-25 19:16:40 -08:00
Softwarenoob
dc5cf9ced5 Rust+ app support 2021-01-25 08:03:24 +02:00
Dane Everitt
b7d1c45bcc
Merge pull request #3028 from zKoz210/patch-6
Fixed tests
2021-01-24 10:16:30 -08:00
Oreo Oreoniv
09078bc1d2
Fixed tests 2021-01-24 13:12:40 +03:00
Dane Everitt
d838ddb006
Merge branch 'dane/self-update' into develop 2021-01-23 16:33:41 -08:00
Dane Everitt
bf2291357f
Just stop people right there. 2021-01-23 16:32:43 -08:00
Dane Everitt
2a8d336336
Ensure slow commands have time to run 2021-01-23 16:29:18 -08:00
Dane Everitt
fd9245b2c5
Make sure we chown the files at the end of the process 2021-01-23 16:27:23 -08:00
Dane Everitt
db5c9b3675
Allow specification of a version 2021-01-23 16:12:13 -08:00
Dane Everitt
fb98b1892d
Add simple logic to download and unpack the archive 2021-01-23 16:07:49 -08:00
Dane Everitt
6f3ea462a7
Add command to execute all of the normal upgrade commands for the application 2021-01-23 15:52:57 -08:00
Dane Everitt
fa9431c54d
Slightly cleanup 2021-01-23 14:12:15 -08:00
Dane Everitt
07798b7366
Update file contents 2021-01-23 13:59:52 -08:00
Dane Everitt
b480a9e4e2
Make php-cs-fixer work in phpstorm 2021-01-23 13:44:35 -08:00
Dane Everitt
91cdf08489
Update .php_cs.dist 2021-01-23 13:37:07 -08:00
Dane Everitt
29e0bebc73
Allow composer to run in local environments even without DB 2021-01-23 13:27:20 -08:00
Dane Everitt
c449ca5155
Use more standardized phpcs 2021-01-23 12:33:34 -08:00
Dane Everitt
a043071e3c
Update to Laravel 8
Co-authored-by: Matthew Penner <me@matthewp.io>
2021-01-23 12:12:54 -08:00
Dane Everitt
028921b42a
Merge pull request #2985 from pterodactyl/fix/docker-build-version
Properly add the version to Docker builds
2021-01-20 21:33:51 -08:00
Dane Everitt
8df44b3280
Merge pull request #2997 from gOOvER/ts3-query-fix
Teamspeak 3 Egg - added queryport and use default query port
2021-01-20 21:33:29 -08:00
Dane Everitt
ef1989f38b
Merge branch 'develop' into ts3-query-fix 2021-01-20 20:12:53 -08:00
Dane Everitt
aab353d91e
Merge pull request #3011 from AreYouRlyScared/addcronmonth
Adds months for schedules
2021-01-20 20:10:26 -08:00
Dane Everitt
914ee65ded
Don't use a persisted setting when switching users; ref #3021 2021-01-20 20:07:52 -08:00
Dane Everitt
3053a896f4
Update CHANGELOG.md 2021-01-19 21:45:32 -08:00
Dane Everitt
63f945bc3a
Add test coverage to cehck the authorization state of client resources 2021-01-19 21:20:55 -08:00
Dane Everitt
e8dcd30e0c
[security] fix resources not properly returning an error when they don't match the server in the URL
Prior to this fix certain resources were accessible even when their assigned server was not the same as the server in the URL. This causes the resource server relationship to not match the server variable present on the request.

Due to this failed logic it was possible for users to access resources they should not have been able to access otherwise for some areas of the panel.
2021-01-19 21:19:17 -08:00
Dane Everitt
eecd550c48
Make debugging test failures easier 2021-01-19 20:11:00 -08:00
Dane Everitt
f24193801a
Add endpoint for triggering restoration completion 2021-01-18 21:14:49 -08:00
Dane Everitt
e700b4da78
Whoops, don't store the model until we've successfully completed the transaction internals 2021-01-18 20:14:38 -08:00
Dane Everitt
8d69a60e28
Only allow restoring valid backups, set the server correctly on the repository 2021-01-18 20:11:49 -08:00
Dane Everitt
575eab9072
Less obtuse error messaging, include the request ID in the output 2021-01-17 20:51:41 -08:00
Charles Morgan
f5a97d4399 Edit UI
Moves cron time display under title bar.
2021-01-17 23:18:00 -05:00
Dane Everitt
187df97590
Add UI for restoring backup checkpoint text 2021-01-17 18:25:13 -08:00
Dane Everitt
ddc4c8e54b
Fix route def 2021-01-17 17:57:34 -08:00
Dane Everitt
87371901c0
Add base logic to support sending a request to restore a backup for a server 2021-01-17 17:51:09 -08:00
Dane Everitt
805952ac38
Update typescript bindings with new status field 2021-01-17 16:13:49 -08:00
Dane Everitt
8db3a05498
;-; 2021-01-17 16:08:41 -08:00
Dane Everitt
b38b8f6465
Mark some fields as deprecated in the API 2021-01-17 16:02:11 -08:00
Dane Everitt
cb40b280a4
Fix single failing test 2021-01-17 15:55:46 -08:00
Dane Everitt
a75a347d65
Remove suspended & installing fields, replace with single status field 2021-01-17 15:51:56 -08:00
Dane Everitt
4c29be2e54
Adjust some naming real quick 2021-01-17 15:25:49 -08:00
Dane Everitt
bfc6f34c50
Audit when a backup is successful or fails 2021-01-17 15:22:02 -08:00
Dane Everitt
291c65275a
Update audit design 2021-01-17 11:52:44 -08:00
Dane Everitt
ccecaa6694
Add basic auditing for filesystem actions
Specifically skipping read actions since there isn't much to say there, and it generally wouldn't be very helpful (plus, likely to generate lots of logs).
2021-01-17 11:46:08 -08:00
Dane Everitt
b15679d3bb
Add base logic for audit logging 2021-01-17 10:49:36 -08:00
Charles Morgan
ffeedf17e4 Adds months for schedules
Adds month variable for schedules
2021-01-16 22:07:39 -05:00
Torsten Widmann
34f5625450 added queryport and use default 2021-01-12 15:45:49 +01:00
Dane Everitt
9684456480
Add a todo for later 2021-01-10 17:05:41 -08:00
Dane Everitt
239984f92c
Add internal support for file denylist on eggs; closes #569 2021-01-10 17:02:14 -08:00
Dane Everitt
ff21d83e2d
Add endpoint to get all nodes meeting memory & disk requirements for a server; closes #1012 2021-01-10 13:08:43 -08:00
Matthew Penner
d964e1dce1 Fix formatting of docker workflow 2021-01-07 17:03:29 -07:00
Matthew Penner
8f183e6101 Properly add the version to Docker builds 2021-01-07 16:51:37 -07:00
Dane Everitt
ef3f8586c5
Update CHANGELOG.md 2021-01-06 21:45:06 -08:00
Dane Everitt
77082fdd26
Merge pull request #2979 from zKoz210/patch-5
Remove aria-description
2021-01-06 19:41:45 -08:00
Oreo Oreoniv
4125248b1b
Remove aria-description 2021-01-05 13:54:41 +03:00
Dane Everitt
7666aee1c7
Merge pull request #2956 from pterodactyl/fix/files-urlencoding
fix urlencoding in the file manager
2021-01-03 17:19:42 -08:00
Dane Everitt
b352c04685
Merge pull request #2957 from pterodactyl/fix/password-reset-mail
URL encode mail address in password reset link
2021-01-03 17:15:50 -08:00
Dane Everitt
53d1b307b6
Merge pull request #2955 from TekExplorer/update/eggs/image-selection
Add image selection for minecraft java eggs for java 8 & 11
2021-01-03 17:12:53 -08:00
Omar Kamel
61a04df469
prioritize java 11 for paper egg 2021-01-03 19:30:25 -05:00
Omar Kamel
c72ae436a9
missed an array 2021-01-03 19:28:29 -05:00
Dane Everitt
7813f17046
Merge pull request #2964 from AreYouRlyScared/Fixes
Update browsers list, linting & Changed page title
2021-01-03 16:23:12 -08:00
Dane Everitt
e8c2b2b464
Merge pull request #2954 from pterodactyl/fix/file-manager-transitions
use children in routes instead of component prop
2021-01-03 16:09:26 -08:00
Charles Morgan
3d627a70ce Lint + lock update
Updates the browsers list
Remove unused import
Changed the title of the users page from `Subusers` to just `Users`
2021-01-02 21:32:03 -05:00
Jakob Schrettenbrunner
44c668e208 url encode email in password reset link 2021-01-02 03:30:27 +01:00
Jakob Schrettenbrunner
4fd2af028d fix urlencoding in the filemanager 2021-01-02 02:15:32 +01:00
TekExplorer
77ca03a2b0 oversight 2021-01-01 23:54:14 +00:00
TekExplorer
2af6dca75e add image selection for minecraft java eggs for java 8 and 11 2021-01-01 23:52:31 +00:00
Jakob Schrettenbrunner
8fb28fdf22 remove unused import 2021-01-01 23:14:29 +01:00
Jakob Schrettenbrunner
0f9b3a5722 use children in routes instead of component prop 2021-01-01 23:14:11 +01:00
Dane Everitt
5f284dad1d
Update CHANGELOG.md 2020-12-30 18:13:28 -08:00
Dane Everitt
32d99c98ec
Merge pull request #2934 from zKoz210/patch-3
Fix retry after header
2020-12-29 15:46:24 -08:00
Oreo Oreoniv
421d838e35
Fix retry after header 2020-12-29 19:11:47 +03:00
Dane Everitt
9f0708f86b
Merge pull request #2925 from pterodactyl/fix/router-hot-reload
Fix hot-reloading breaking react-router-dom
2020-12-28 11:02:45 -08:00
Matthew Penner
b19406bf22 Fix hot-reloading breaking react-router-dom 2020-12-28 11:10:01 -07:00
Dane Everitt
dbb6f69e00
Use proper newline, not literal \n 2020-12-27 16:47:51 -08:00
Dane Everitt
794cf9d9dd
Make backup throttling configurable 2020-12-27 16:41:53 -08:00
Dane Everitt
a7fef8b736
Correctly handle backups that fail without an upload_id attached to them 2020-12-27 11:56:28 -08:00
Dane Everitt
952715facc
Fix handling of upload IDs on backups 2020-12-27 11:34:55 -08:00
Dane Everitt
8e06628409
Update package.json 2020-12-27 11:20:00 -08:00
Dane Everitt
2463c3f492
Cleanup and update some dependencies 2020-12-27 11:18:33 -08:00
Dane Everitt
7f8ae7a8f9
Make this an actual circle 2020-12-27 10:56:07 -08:00
Dane Everitt
621d652854
Fix focusring on disabled inputs 2020-12-27 10:52:40 -08:00
Dane Everitt
d54a8713d1
Fix width of dropdown menus 2020-12-27 10:49:33 -08:00
Dane Everitt
b2328b50c6
Fix checkbox design in file manager 2020-12-27 10:44:56 -08:00
Dane Everitt
4719124fd7
Merge branch 'dane/tailwind-2' into develop 2020-12-26 12:10:33 -08:00
Dane Everitt
bb2d3e4120
Slight UI tweaking to make life easier on people 2020-12-26 11:53:36 -08:00
Dane Everitt
1ba0f4fb16
Merge pull request #2914 from pterodactyl/fix/s3-backups
Store S3 upload_id in the database for backups
2020-12-26 11:34:31 -08:00
Matthew Penner
951d92b143 Store S3 upload_id in the database for backups 2020-12-26 11:59:21 -07:00
Dane Everitt
22687bd078
Stop caching stupid things and causing builds to die 2020-12-26 10:41:25 -08:00
Dane Everitt
c75f89889a
Update to Tailwind V2 2020-12-26 09:50:09 -08:00
Dane Everitt
9b01734752
Require meta key to trigger search; change from "k" to "/"; closes #2785 2020-12-25 15:55:31 -08:00
Dane Everitt
0477e66bab
Add server ID and node name to debug block; closes #2852 2020-12-25 15:52:15 -08:00
Dane Everitt
9193db9d46
Reset docker images correctly when changing egg; closes #2895 2020-12-25 15:43:44 -08:00
Dane Everitt
87e9d5e82a
Throttle pulls 2020-12-25 15:09:02 -08:00
Dane Everitt
70afc51c9e
Merge pull request #2883 from pterodactyl/matthewpi/transfer-improvements
Add Transfer Logs
2020-12-24 10:37:30 -08:00
Dane Everitt
2d081e5170
Merge branch 'develop' into matthewpi/transfer-improvements 2020-12-24 10:27:44 -08:00
Dane Everitt
4f23d1ab4c
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-12-24 10:23:09 -08:00
Dane Everitt
45a3533f1e
Update WebsocketControllerTest.php 2020-12-24 10:23:04 -08:00
Dane Everitt
44575439d6
💣 2020-12-24 10:22:32 -08:00
Dane Everitt
d214b0b3a9
Merge pull request #2795 from parkervcp/update/paper
update paper egg
2020-12-24 10:20:35 -08:00
Dane Everitt
19c6d82e23
Updates for PR 2020-12-24 10:20:17 -08:00
Dane Everitt
158823603a
Merge branch 'develop' into update/paper 2020-12-24 10:19:19 -08:00
Dane Everitt
6c39288def
Clarify error messaging for transfers 2020-12-24 10:14:10 -08:00
Dane Everitt
a2548c14ac
Fix logic since this accepts arrays now 2020-12-24 10:12:01 -08:00
Dane Everitt
25e53d9f22
Merge branch 'matthewpi/transfer-improvements' of https://github.com/Pterodactyl/Panel into matthewpi/transfer-improvements 2020-12-24 10:10:41 -08:00
Dane Everitt
2ee08a1a3d
Update logic for server transfer controller 2020-12-24 10:10:40 -08:00
Dane Everitt
6c61577699
Simplify logic in websocket control 2020-12-24 09:20:23 -08:00
Dane Everitt
6fa24d4979
Merge branch 'develop' into matthewpi/transfer-improvements 2020-12-24 09:17:21 -08:00
Dane Everitt
f300577963
Nuke useless tests 2020-12-24 09:16:30 -08:00
Dane Everitt
9a57011071
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-12-24 09:15:05 -08:00
Dane Everitt
087c41d5ac
Add endpoint to pull a remote file down 2020-12-24 09:15:03 -08:00
Dane Everitt
9c4c080a41
Merge pull request #2885 from pterodactyl/schrej-patch-1
remove mailtrap.io from example env config
2020-12-24 09:13:39 -08:00
Dane Everitt
2f17e75395
Merge pull request #2879 from pterodactyl/fix/backups-failing-early
Allow changing the prune age for backups
2020-12-24 09:12:59 -08:00
Dane Everitt
e678537cd5
Merge pull request #2838 from AreYouRlyScared/fix2807
Properly copy database-password
2020-12-24 09:11:51 -08:00
Dane Everitt
1f0883e746
Merge pull request #2904 from pterodactyl/matthewpi/archiver-tweaks
Archiver tweaks
2020-12-24 08:59:54 -08:00
Dane Everitt
dc4ead766c
Merge pull request #2901 from vilhelmprytz/vilhelmprytz-update-sponge-egg
eggs: SpongeVanilla: update default version
2020-12-24 08:56:39 -08:00
Matthew Penner
4b9eab8950 Send ignored_files as a string to wings 2020-12-22 19:31:52 -07:00
Vilhelm Prytz
2e6bb4e7ba
eggs: SpongeVanilla: update default version
* replaced 1.11.2-6.1.0-BETA-21 with 1.12.2-7.3.0 since it is the stable and recommended build
2020-12-22 17:48:28 +01:00
Matthew Penner
bb559422dc Make ESLint happy, fix minor issue with file manager breadcrumb 2020-12-19 11:51:26 -07:00
Matthew Penner
17ca3659c5 Change 'backups.prune_age' default to 6 hours 2020-12-19 11:50:35 -07:00
Jakob
fd93a4cda1
remove mailtrap.io from example env config 2020-12-18 00:08:01 +01:00
Matthew Penner
d8f75fa0b7 Fix failed transfers locking a server into a unaccessible state 2020-12-17 11:14:58 -07:00
Matthew Penner
37cfa151b6 Use ServerTransferringException 2020-12-17 10:37:14 -07:00
Matthew Penner
e69d9b2c26 Update comment in AuthenticateServerAccess.php 2020-12-17 10:35:54 -07:00
Matthew Penner
fd848985ee Add ServerTransferringException, use is_null 2020-12-17 10:35:54 -07:00
Matthew Penner
5668a780e2 Hopefully the last small tweaks and fixes to transfer logs 2020-12-17 10:35:54 -07:00
Matthew Penner
8d297a0918 Release reserved allocations upon archive failure 2020-12-17 10:35:54 -07:00
Matthew Penner
01926e2896 Improve logic for logging into the websocket of the target node 2020-12-17 10:35:54 -07:00
Matthew Penner
5c5e2e24f1 📯 tRaNsFeR lOgS 📯 2020-12-17 10:35:54 -07:00
Matthew Penner
e6c4a68e4a Update logic for tracking a server's transfer state 2020-12-17 10:35:54 -07:00
Dane Everitt
5d03c0d2e5
Properly handle loading files with special characters 2020-12-16 21:38:46 -08:00
Dane Everitt
0084b48d86
quick migration changes for refresh(ish) support; ref #2875
This still fails in a 2017 migration, but I don't care.
2020-12-16 20:38:21 -08:00
Matthew Penner
e34d31a58c Allow changing the prune age for backups 2020-12-16 14:15:07 -07:00
Dane Everitt
5bbb36b3cf
Support updating docker image for a server from the frontend 2020-12-13 11:07:29 -08:00
Dane Everitt
1dacd703df
Fix egg importing from seeder 2020-12-13 10:34:51 -08:00
Dane Everitt
638ea2e815
Support creating/updating docker images on eggs 2020-12-13 10:13:32 -08:00
Dane Everitt
78c4ac80bc
Basic implemention of multiple selectable images for an egg
The admin side of this is quite ugly when creating/editing a server, but I'm not putting effort into that right now with React Admin soon™
2020-12-13 09:53:17 -08:00
Charles Morgan
9d6f4e00d7 Properly copy database-password 2020-12-09 00:42:56 -05:00
Dane Everitt
3e65a2d055
Pass one at unfucking the stupid file encoding issues 2020-12-08 21:24:17 -08:00
Dane Everitt
24417ac516
Slightly less obtuse way of handling this little checkbox 2020-12-08 20:34:31 -08:00
Dane Everitt
60f170e919
Merge pull request #2796 from acl1704/update/forge
Update Forge egg
2020-12-08 19:57:33 -08:00
Dane Everitt
24fcaba817
Merge pull request #2811 from TekExplorer/patch-2
Correct Typo in Bug Report template
2020-12-08 19:56:18 -08:00
Dane Everitt
a66ee9673b
Merge pull request #2797 from pterodactyl/matthewpi/breadcrumb-patch-1
Add mb-4 to File Manager Breadcrumb when editing a file
2020-12-08 19:56:05 -08:00
Dane Everitt
f31a1288af
Don't show file mode in the manager 2020-12-08 19:54:32 -08:00
Omar Kamel
6e7dd36a89
Correct Typo in Bug Report template
installating > installing
smh lol. I find the typo funny but also let's just fix that real quick.
fixes #2808
2020-12-08 22:25:07 -05:00
Dane Everitt
76b9fae4e9
Merge pull request #2801 from pterodactyl/issue/2800
Delete the oldest backup, not the newest backup
2020-12-08 14:57:04 -08:00
Matthew Penner
911d85c230 Delete the oldest backup, not the newest backup, closes #2800 2020-12-07 09:31:44 -07:00
Matthew Penner
2fafd4fbbf Add mb-4 to File Manager Breadcrumb when editing a file 2020-12-06 20:42:05 -07:00
Alex
854270e4e8 fix required version variable
fixes required FORGE_VERSION and renames minecraft version variable to avoid confusion
2020-12-06 17:55:41 -08:00
Michael Parker
159b977b35
update paper egg
Updates the paper egg for 1.17 support with java 11 by default
2020-12-06 20:53:00 -05:00
Dane Everitt
63eefaa695
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-12-06 15:44:31 -08:00
Dane Everitt
1fcffc7eb9
Update CHANGELOG.md 2020-12-06 15:44:26 -08:00
Dane Everitt
fcff9085b8
Merge pull request #2781 from pterodactyl/matthewpi/server-details-patch-1
Show installing status instead of offline when a server is installing
2020-12-06 15:27:03 -08:00
Dane Everitt
4a3c9040a7
Merge pull request #2792 from pterodactyl/matthewpi/backups-patch-1
Handle CompleteMultipartUpload and AbortMultipartUpload on the Panel
2020-12-06 15:26:44 -08:00
Dane Everitt
ef787bbd78
Update DeleteSubuserTest.php 2020-12-06 15:26:20 -08:00
Dane Everitt
3ad1e90bad
Merge branch 'develop' into matthewpi/backups-patch-1 2020-12-06 15:17:12 -08:00
Matthew Penner
00429c3911 Cleanup remote backup controllers 2020-12-06 15:19:54 -07:00
Dane Everitt
f9ea96f45d
Less strict type; closes #2681 2020-12-06 14:17:54 -08:00
Dane Everitt
d22456d9ca
Block API access when 2FA is required on account; closes #2791 2020-12-06 13:56:14 -08:00
Matthew Penner
1ce6d3bbba Maybe we should keep that backup rate-limit 2020-12-06 13:55:45 -07:00
Matthew Penner
a5cebd6bcf s3 backups: handle CompleteMultipartUpload and AbortMultipartUpload on the panel instead of in wings, add BACKUP_PRESIGNED_URL_LIFESPAN environment variable 2020-12-06 13:53:55 -07:00
Matthew Penner
ac8b7fec28
Merge branch 'develop' into matthewpi/server-details-patch-1 2020-12-06 13:30:56 -07:00
Dane Everitt
5d23d894ae
Update NodeUpdateServiceTest.php 2020-12-06 12:25:36 -08:00
Dane Everitt
79673ca440
Don't ever block storing node updates if wings returns an error; closes #2712 2020-12-06 12:23:58 -08:00
Dane Everitt
11054de5b3
Attempt revocation of JWT access when changing a server's owner
closes #2771
2020-12-06 12:16:12 -08:00
Dane Everitt
af360d49dd
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-12-06 12:01:43 -08:00
Dane Everitt
a8d9eccf9c
Support pagination of server backups, closes #2787 2020-12-06 12:01:42 -08:00
Dane Everitt
a06f8e0d21
Merge pull request #2763 from AreYouRlyScared/hidedelifown
Hide delete button on own subuser if for the subuser looking at the page
2020-12-06 11:30:40 -08:00
Dane Everitt
7b9a8c8441
Merge pull request #2768 from pterodactyl/feature/chmod-files
Chmod Files from the File Manager
2020-12-06 11:30:33 -08:00
Dane Everitt
360d93bf2a
Merge pull request #2777 from pterodactyl/matthewpi/file-manager-patch-1
Move file manager buttons beside the breadcrumb
2020-12-06 11:30:27 -08:00
Dane Everitt
21d8dd455e
Merge pull request #2782 from TrixterTheTux/develop
Fix not being able to retrieve server's variables
2020-12-06 11:30:14 -08:00
Dane Everitt
0ca13fc9d0
Merge branch 'develop' into hidedelifown 2020-12-06 11:27:00 -08:00
Dane Everitt
e2be4e5ebf
Merge branch 'develop' into feature/chmod-files 2020-12-06 11:26:58 -08:00
Dane Everitt
616a6b8ea3
Merge branch 'develop' into matthewpi/file-manager-patch-1 2020-12-06 11:26:56 -08:00
Dane Everitt
8241ea5f98
Merge branch 'develop' into matthewpi/server-details-patch-1 2020-12-06 11:26:54 -08:00
Dane Everitt
ef49d21b54
Merge branch 'develop' into develop 2020-12-06 11:26:45 -08:00
Dane Everitt
8a97b73a6c
Fix failing tests 2020-12-06 11:25:26 -08:00
Dane Everitt
ec7bb22866
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-12-06 10:53:38 -08:00
Dane Everitt
7657d01c5c
Update README.md 2020-12-06 10:53:36 -08:00
Dane Everitt
86c97433ca
Merge pull request #2789 from TekExplorer/patch-1
Correct JDBC typo
2020-12-06 10:46:20 -08:00
Omar Kamel
ce0e9b7ded
Correct JDBC typo
from `JBDC CONNECTION STRING` > `JDBC CONNECTION STRING`
2020-12-06 13:17:47 -05:00
Stepan Fedotov
e32c4d4f05
Documentate fix 2020-12-04 19:58:09 +02:00
Stepan Fedotov
7c2888641f
Fix application API's ServerVariableTransformer 2020-12-04 19:56:44 +02:00
Matthew Penner
f9a1bc6c9b Show installing status instead of offline when a server is installing 2020-12-04 09:48:47 -07:00
Matthew Penner
3e1dbbaedd Fix validation rules for ChmodFilesRequest.php, again.. 2020-12-04 09:24:06 -07:00
Matthew Penner
bd0b7127d2 Fix validation rules for ChmodFilesRequest.php 2020-12-04 09:24:06 -07:00
Matthew Penner
ed5613e207 Show file mode on file listing, add ability to change file mode 2020-12-04 09:24:06 -07:00
Matthew Penner
8611ebb2d6 Add /api/client/servers/{server}/files/chmod endpoint 2020-12-04 09:24:06 -07:00
Matthew Penner
de1f7ea906 Move file manager buttons beside the breadcrumb, other tweaks 2020-12-04 09:23:17 -07:00
Dane Everitt
77abfd01ec
Merge pull request #2780 from danny6167/patch-1
Allow 0 in first octet of database client IP address Fixes #2779
2020-12-04 08:20:06 -08:00
danny6167
b97ebcbe39
Allow 0 in first octet of database client IP address Fixes #2779
Allow user to enter database connection IP address that contains a a 0 in the first octet. Fixes #2779
2020-12-04 19:18:08 +08:00
Charles Morgan
76d671aa8a Update UserRow.tsx 2020-11-29 19:35:16 -05:00
Charles Morgan
947fdf72ed Update UserRow.tsx 2020-11-29 18:13:20 -05:00
Dane Everitt
2b5d5c9e55
Merge pull request #2718 from j00005h/patch-1
Update index.blade.php
2020-11-29 13:43:14 -08:00
Dane Everitt
9a1c9f3e46
Merge pull request #2691 from GravityCube/develop
Backup rotation for schedules.
2020-11-29 13:42:48 -08:00
Dane Everitt
7ebe04fb91
Don't allow blank passwords on the password change endpoint; closes #2750 2020-11-29 13:28:46 -08:00
Dane Everitt
16f49f8dc1
Close cleanup; only try to run power actions against non-suspended & installed servers; closes #2760 2020-11-29 12:50:22 -08:00
Dane Everitt
26d409c29c
Don't try to flip null values; closes #2753 2020-11-29 11:50:20 -08:00
Dane Everitt
e54612d533
Merge pull request #2731 from AreYouRlyScared/fix2710
Rename duplicated input id
2020-11-29 11:07:23 -08:00
Dane Everitt
d68d5982b1
Merge pull request #2737 from zKoz210/patch-1
Fixed an error when trying to install dependencies without a .env file
2020-11-29 11:03:36 -08:00
Dane Everitt
b9e72c0034
Merge pull request #2739 from m0uka/develop
Add clickable URLs in console
2020-11-29 11:01:01 -08:00
Dane Everitt
8283de253f
Merge pull request #2747 from booky10/develop
Changed "Mojang" to "Minecraft" in EulaModalFeature.tsx
2020-11-29 10:58:48 -08:00
Charles Morgan
ec99859590 Don't show delete button if its own user
Don't show the delete button if a sub-user is looking at sub-users, as they cannot delete themselves.
2020-11-28 14:48:35 -05:00
booky10
76958cc6e7
Changed "Mojang" to "Minecraft" in EulaModalFeature.tsx 2020-11-26 17:59:29 +01:00
m0uka
2a54ac4f52 Add clickable URLs in console 2020-11-24 22:04:44 +01:00
Oreo Oreoniv
99c14ca422
Fixed an error when trying to install dependencies without a .env file 2020-11-24 22:48:27 +03:00
Charles Morgan
bdad2621b2 Rename duplicated input id
Renames the field id so its unique and chrome dosen't complain <3

Closes https://github.com/pterodactyl/panel/issues/2710
2020-11-22 03:06:18 -05:00
GravityCube
8fbcbcec45
Merge branch 'develop' into develop 2020-11-20 21:26:49 -03:00
Josh Miles
4b1f320004
Update index.blade.php 2020-11-16 13:51:02 +00:00
Dane Everitt
1473bf9b8c
Merge pull request #2714 from TekExplorer/patch-1
entrypoint.sh; docker/ directory change.
2020-11-15 14:43:17 -08:00
Omar Kamel
d030fcce34
entrypoint.sh; docker directory change.
update entrypoint script to mirror the directory change for the docker folder
2020-11-15 14:22:25 -05:00
Dane Everitt
d79b3a9cd0
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-11-14 20:46:49 -08:00
Dane Everitt
aaaa05be93
Fix docker build 2020-11-14 20:46:37 -08:00
Dane Everitt
280bbce69f
Update docker.yml 2020-11-14 20:45:42 -08:00
Dane Everitt
043dc20427
Update docker.yml 2020-11-14 20:27:11 -08:00
Dane Everitt
509c4e577b
Update docker.yml 2020-11-14 20:15:46 -08:00
Dane Everitt
89e10fd7f2
Update CHANGELOG.md [docker skip] 2020-11-14 20:14:16 -08:00
Dane Everitt
d18b7abf6c
fixes [docker skip] 2020-11-14 20:06:58 -08:00
Dane Everitt
d31a228220
properly skip action [docker skip] 2020-11-14 20:04:55 -08:00
Dane Everitt
8065b7d9f5
use GitHub container registry [skip docker] 2020-11-14 20:03:32 -08:00
Dane Everitt
181e4fa282
Update docker.yml 2020-11-14 20:02:07 -08:00
Dane Everitt
e84008d19b
Merge branch 'dane/docker' into develop 2020-11-14 20:01:25 -08:00
Dane Everitt
4ef04aa604
Update actions 2020-11-14 20:01:02 -08:00
Dane Everitt
9ffb5d2995
Add support for automated docker builds 2020-11-14 19:56:43 -08:00
Dane Everitt
7df3c1d013
Tweaks 2020-11-14 13:58:51 -08:00
Dane Everitt
83707079e8
Fixes for docker compose formatting and missing storage dir 2020-11-14 13:26:43 -08:00
Dane Everitt
fe725397eb
Code cleanup and improvement 2020-11-14 13:10:11 -08:00
GravityCube
5eebc7221d
Merge branch 'develop' into develop 2020-11-13 01:11:18 -03:00
Gonzalo Chavez
ebc8d40db8 Backup Rotation - Variable name changed 2020-11-11 16:03:57 -03:00
Gonzalo Chavez
e6a4a17922 Backup Rotation - Comment change 2020-11-11 16:02:39 -03:00
Gonzalo Chavez
7b8322e9c9 Backup Rotation - Minor changes 2020-11-11 10:52:28 -03:00
Dane Everitt
3b4a096ddb
Merge pull request #2684 from mattmalec/develop
Fix API 500 error
2020-11-10 20:16:32 -08:00
Dane Everitt
0c8b7101c3
Merge pull request #2682 from AreYouRlyScared/minorfixes
Update database page layout to be more consistent with other pages, fixes text visibility issues
2020-11-10 20:15:26 -08:00
Dane Everitt
2f2d105a4f
Fix test cases 2020-11-10 20:13:55 -08:00
Dane Everitt
a07e6bd36f
Merge pull request #2687 from occanowey/fix/file_manager_404
Dont add trailing slash to file manager rows
2020-11-10 10:46:20 -08:00
Dane Everitt
9707da86e3
Merge pull request #2686 from occanowey/feature/command_history
Keep cursor at the end of the line when going through command history
2020-11-10 10:46:05 -08:00
Gonzalo Chavez
1eaf486eaa Backup Rotation - Minor Changes 2020-11-09 21:14:47 -03:00
Gonzalo Chavez
1f01c653f1 Backup rotation for schedules. 2020-11-09 20:35:57 -03:00
Griffin T
f65cdd2dfb Dont add trailing slash to file manager row NavLink 2020-11-09 16:22:52 +08:00
Griffin T
76e3bcaa42 Keep cursor at the end of line when going through history 2020-11-09 15:34:56 +08:00
Matt Malec
df64026449
Update AuthenticateIPAccess.php
Fix a 500 error when processing a request with an IP filter
2020-11-08 21:57:22 -05:00
Charles Morgan
4a234af7a3
Minor changes
Changes CopyOnClick to allow any.
Allows database information to be copied on click.
Changes layouts on database/backups to match the network tab.
Changes text to lighten it one level from 400 to 300 for easier visibility.
Moves database api endpoints to their own folder for some organization.
2020-11-08 21:09:22 -05:00
Dane Everitt
085fa8dcb5
Update CopyOnClick.tsx 2020-11-08 17:13:55 -08:00
Dane Everitt
842652a6b8
Update CopyOnClick.tsx 2020-11-08 17:13:33 -08:00
Dane Everitt
6795bae335
Fix server state not being updated correctly when adding/removing allocation; closes #2680 2020-11-08 17:12:07 -08:00
Dane Everitt
74e90e087f
Fix allocation permission 2020-11-08 17:07:26 -08:00
Dane Everitt
2d19c12a5a
Update CHANGELOG.md 2020-11-08 15:29:23 -08:00
Dane Everitt
e0a087f077
Attempt to save a transaction a few times when creating a server; closes #2674 2020-11-08 13:19:52 -08:00
Dane Everitt
7cf6b4bcfe
Only load GA when valid key is provided; closes #2678 2020-11-08 13:18:15 -08:00
Dane Everitt
de943eac4a
Merge pull request #2636 from AreYouRlyScared/copynetwork
Network info added to details + ClickToCopy
2020-11-08 11:48:45 -08:00
Dane Everitt
74b1776c00
Merge pull request #2646 from AreYouRlyScared/#2608
Add admin area link to view config
2020-11-08 11:48:22 -08:00
Dane Everitt
b602473436
Merge pull request #2657 from AreYouRlyScared/permissions
Add missing descriptions for permissions
2020-11-08 11:47:54 -08:00
Dane Everitt
802f88fc78
Merge branch 'develop' into permissions 2020-11-08 11:47:45 -08:00
Dane Everitt
ce425435d4
Merge pull request #2666 from Yomanz/patch-1
Use app key from environment
2020-11-08 11:47:26 -08:00
Charles Morgan
e340cf16bf
remove permission based view
recent changes that were made always show the primary allocation to the end users even if they don't have the read permission.
2020-11-07 17:25:05 -05:00
Dane Everitt
c20d53bb17
Always return the primary allocation for a server, even without the allocation permissions 2020-11-07 09:57:53 -08:00
Dane Everitt
f99ac0ecde
Fix some failing test cases 2020-11-06 22:33:39 -08:00
Dane Everitt
625fd92130
Fix URKL encoding hellscape; closes #2664 closes #2663 2020-11-06 20:47:03 -08:00
Daave
80574e991b
Remove quotes and fix indentation 2020-11-06 13:23:05 +00:00
Daave
9c33288902
Change entrypoint so it doesn't overwrite app key.
APP_KEY is overwritten by a generated one even if it's in the environment.
2020-11-06 13:21:09 +00:00
Dane Everitt
009f9c297d
Revoke JWT JTIs when modifying a subuser's permissions 2020-11-03 21:01:15 -08:00
Dane Everitt
c4df534722
Handle reconnect events for websocket errors 2020-11-03 20:33:05 -08:00
Dane Everitt
910a2d7a23
Back to checks all around 2020-11-03 19:07:52 -08:00
Charles Morgan
b2d2a931a9
Add missing descriptions for permissions 2020-11-03 16:11:59 -05:00
Dane Everitt
fb03c411ad
Get EULA hook modal into working order and start server when accepted 2020-11-02 21:06:47 -08:00
Dane Everitt
aba7df3afa
Basic concept for the EULA feature to demo how this will all work 2020-11-02 20:52:41 -08:00
Dane Everitt
505a9a6cbd
Update MC eggs to enable EULA feature flag 2020-11-02 20:24:24 -08:00
Dane Everitt
95d605c1e3
Fix validation schema 2020-11-02 20:24:11 -08:00
Dane Everitt
7618f306bd
Support functionality for per-egg features 2020-11-02 20:20:36 -08:00
Dane Everitt
7ec614ed2c
Reset modal spinner state when dismissed; closes #2647 2020-11-02 20:03:28 -08:00
Dane Everitt
027c705733
Correctly overlay spinner over all modal elements 2020-11-02 20:03:02 -08:00
Dane Everitt
b482632af4
Remove unnecessary calls to Wings to add/remove mounts 2020-11-02 19:58:14 -08:00
Dane Everitt
ebd81e9d1d
Properly pass along build information to Wings; closes #2552 2020-11-02 19:58:03 -08:00
Charles Morgan
274ed6c232
Update ServerDetailsBlock.tsx 2020-11-02 02:32:38 -05:00
Charles Morgan
40eee1220c
Update ServerDetailsBlock.tsx 2020-11-02 02:31:57 -05:00
Charles Morgan
c75a621c52
Only show allocation if user has permission
prevents just a blank scetion in the details box if a sub user dosn't have the permission of `allocation.read`

Also fixes the server router where it was set to `allocations` and not `allocation` making it not showup period even if the sub user had the correct permissions.
2020-11-02 00:49:07 -05:00
Charles Morgan
6d909a4a97
Add admin area link to view config 2020-11-02 00:14:02 -05:00
Dane Everitt
964a1436ce
Code cleanup for signed URL generation endpoint 2020-11-01 14:46:01 -08:00
Dane Everitt
6eff9d6211
Merge pull request #2634 from pterodactyl/issue/2599
Switch to s3 multipart uploads for backups
2020-11-01 14:34:03 -08:00
Matthew Penner
6af848ccea Tweaks to BackupRemoteUploadController.php 2020-11-01 15:27:43 -07:00
Matthew Penner
63ac81586d Tweaks to BackupRemoteUploadController.php 2020-11-01 15:27:43 -07:00
Matthew Penner
85af073438 Switch to s3 multipart uploads for backups 2020-11-01 15:27:43 -07:00
Dane Everitt
23d2352a9b
Don't ever return per_page as a string here... 2020-11-01 14:27:14 -08:00
Dane Everitt
4082503190
Show next schedule run time 2020-11-01 14:07:31 -08:00
Dane Everitt
b946b20193
Avoid pass-by-reference issues in config parsing leading to duplicated responses; ref #2511 2020-11-01 13:07:00 -08:00
Dane Everitt
63f8f53367
Fix server pagination when using search queries; closes #2593 2020-11-01 12:28:14 -08:00
Dane Everitt
48cde2e007
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-11-01 12:25:04 -08:00
Dane Everitt
61f501abc9
Fix file parser failing if multiple configuration values are present on same line; closes #2604 2020-11-01 12:25:02 -08:00
Dane Everitt
0132b51642
Merge pull request #2637 from AreYouRlyScared/fix2434
Fixes for PR#2434
2020-11-01 11:45:31 -08:00
Dane Everitt
8c8feffcb7
Encode all parts of the URI individually, closes #2620 2020-11-01 11:44:47 -08:00
Charles Morgan
6ac5741d8a
Update app.php 2020-11-01 03:19:28 -05:00
Charles Morgan
f029b7239e
re-remove console limiting options 2020-11-01 03:16:30 -05:00
Charles Morgan
fc0f8ee48e
Update ServerDetailsBlock.tsx 2020-11-01 02:55:29 -05:00
Charles Morgan
e80b125543
Add network info
Adds network info to the server details section, Also copied to clipboard when clicked.

Closes https://github.com/pterodactyl/panel/issues/2585
2020-11-01 02:50:35 -05:00
Dane Everitt
9ff691bfde
Merge pull request #2554 from AreYouRlyScared/subusers
Duplicate save/invite button at top
2020-10-31 22:30:52 -07:00
Dane Everitt
fda50bb6e1
Merge pull request #2434 from pressstartearly/develop
Added Autoallocation Button
2020-10-31 22:30:16 -07:00
Dane Everitt
49c29aae47
Logic fixes 2020-10-31 22:30:03 -07:00
Dane Everitt
6cb21fb920
Add test coverage for allocation auto-assignment service 2020-10-31 22:17:32 -07:00
Dane Everitt
d493685518
Add test coverage for allocation assignment endpoint 2020-10-31 21:57:27 -07:00
Dane Everitt
b2be067f38
Support deleting an allocation for a server 2020-10-31 21:22:44 -07:00
Dane Everitt
365f5e0806
server_id is irrelevant at this stage 2020-10-31 14:59:06 -07:00
Dane Everitt
c6bd7ff661
Improve logic handle auto-allocation of ports for a server 2020-10-31 14:58:15 -07:00
Charles Morgan
aad3019747
Merge branch 'develop' into subusers 2020-10-31 17:32:10 -04:00
Charles Morgan
0f09dfed92
Update EditSubuserModal.tsx 2020-10-31 17:29:41 -04:00
Dane Everitt
7638ffccde
Merge branch 'develop' into pr/2434 2020-10-31 14:12:13 -07:00
Dane Everitt
31ad238e8b
Thanks for that highlight phpstorm... 2020-10-31 14:11:53 -07:00
Dane Everitt
db7e4e749f
UI cleanup for add allocation button 2020-10-31 14:10:53 -07:00
Dane Everitt
abb043c1cc
Merge branch 'develop' into pr/2434 2020-10-31 13:55:56 -07:00
Dane Everitt
283cb08e33
Remove unused 2020-10-31 13:55:45 -07:00
Dane Everitt
665a4dd8a4
Merge branch 'develop' into develop 2020-10-31 13:47:12 -07:00
Dane Everitt
7fd49dd823
Merge pull request #2610 from occanowey/feature/command_history
Add console command history.
2020-10-31 13:46:24 -07:00
Dane Everitt
8aeab889f4
Merge pull request #2624 from pterodactyl/matthewpi/configs-patch-1
Add more environment variables for S3 filesystem options
2020-10-31 13:45:48 -07:00
Dane Everitt
e157b8baf2
Merge pull request #2627 from pterodactyl/matthewpi/admin-patch-1
Tweaks to admin area
2020-10-31 13:45:26 -07:00
Dane Everitt
c757abfdc2
Merge pull request #2633 from AreYouRlyScared/changes
Network view changes
2020-10-31 13:45:09 -07:00
Charles Morgan
394cd815d2
Network tab changes
Allows address feild to be copied to the clipboard when clicked
If alias is used changes it to hostname instead of ip address ( might just make it say address as that would cover both? )
Fixed overflow for allocations with a long alias
2020-10-31 16:16:41 -04:00
Dane Everitt
c948a217a4
Update tests.yml 2020-10-31 13:10:52 -07:00
Dane Everitt
84ed2f8668
Update tests.yml 2020-10-31 12:34:54 -07:00
Dane Everitt
992f98b6c1
Add notification for discord hook 2020-10-31 12:27:18 -07:00
Dane Everitt
8eaa44411f
Update ServerRow.tsx 2020-10-31 12:09:59 -07:00
Dane Everitt
87a8238c56
Correctly render suspended server in dashboard listing; closes #2613 2020-10-31 12:07:20 -07:00
Dane Everitt
ff64220741
Avoid N+1 location query for servers 2020-10-31 11:28:31 -07:00
Dane Everitt
c00e5b36a5
Return all servers for a node as a paginated response
Avoids crashing the PHP process and avoids a bad runaway N+1 query issue that previously existed.
2020-10-31 11:14:28 -07:00
Matthew Penner
d9ad4af6a7 admin: update description on Mounts index view 2020-10-30 11:02:55 -06:00
Matthew Penner
48013eddcc admin: update transfer server box on manage tab 2020-10-30 11:02:29 -06:00
Matthew Penner
fcdf154a12 Add more environment variables for S3 filesystem options 2020-10-29 19:39:55 -06:00
Griffin T
6e4261b3a7 Limit per server command history to 32. 2020-10-27 18:19:33 +08:00
Dane Everitt
73b795faba
Correctly reset a schedule if there is an exception during the run stage; closes #2550 2020-10-26 20:54:15 -07:00
Dane Everitt
bffec5b3dc
Don't abort the entire schedule running process if one schedule encounters an exception; closes #2609 2020-10-26 20:16:39 -07:00
Dane Everitt
200a78d77b
Don't allow null schedule names anymore; ref #2609 2020-10-26 19:57:08 -07:00
Griffin T
a4d3e7db1b Add console command history. 2020-10-26 20:30:30 +08:00
Michael (Parker) Parker
e8e2206a40
Fix install scripts (#2600) 2020-10-25 18:17:12 -07:00
Dane Everitt
ad4df56f7c
Update CHANGELOG.md 2020-10-25 18:12:22 -07:00
Dane Everitt
2bd2cdcd1c
Update README.md 2020-10-25 18:06:07 -07:00
Dane Everitt
0a6cf5ba25
lint; skip ci 2020-10-25 17:31:24 -07:00
Dane Everitt
092c942764
Fix server owner filtering; improve searching for servers; closes #2581 2020-10-25 17:29:57 -07:00
Dane Everitt
39dddba1d6
Refactor subuser modal and fix to be less of a code monstrosity; closes #2583 2020-10-25 15:47:50 -07:00
Dane Everitt
21d4402a55
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-10-25 15:07:13 -07:00
Dane Everitt
996fb5b46f
Set the DB timezone on each connection to match the APP_TIMEZONE value 2020-10-25 15:07:11 -07:00
Dane Everitt
8c6327fd32
Let MySQL do the time logic when looking for tasks 2020-10-25 15:06:54 -07:00
Michael (Parker) Parker
3ecf14d419
fix install scripts (#2587) 2020-10-25 13:16:18 -07:00
Anders G. Jørgensen
a271b59092
Change SameSite attribute on session cookies to "lax" (#2592) 2020-10-25 13:15:49 -07:00
Dane Everitt
cfaf41ce24
Merge pull request #2576 from AreYouRlyScared/patch-1
find != fund
2020-10-23 08:07:48 -07:00
Charles Morgan
404ad68e0d
find != fund 2020-10-23 03:37:35 -04:00
Dane Everitt
23872b844a
Fix unnecessary object structuring 2020-10-22 21:33:06 -07:00
Dane Everitt
7ed3c25d61
Merge pull request #2545 from wardpieters/develop
fix: duplicate 2FA error messages
2020-10-22 21:31:37 -07:00
Dane Everitt
fd3b11e9cc
Update CHANGELOG.md 2020-10-22 21:27:15 -07:00
Dane Everitt
903b5795db
Avoid breaking the entire UI when naughty characters are present in the file name or directory; closes #2575 2020-10-22 21:18:46 -07:00
Dane Everitt
65d04d0c05
Correctly handle schedule task deletion and avoid errors; closes #2534 2020-10-22 20:54:58 -07:00
Dane Everitt
e1fa6d4e55
Merge pull request #2573 from parkervcp/update_eggs
Update eggs
2020-10-21 16:49:12 -07:00
parkervcp
d522bc9150
update install scripts
change all install scripts to use debian:buster-slim

update mc install scripts
update steamcmd install scripts
update voice install scripts.
2020-10-21 19:33:45 -04:00
parkervcp
16422ebf7b
remove unused eggs 2020-10-21 19:33:45 -04:00
Dane Everitt
26de4493dd
Set notes to null when assigning allocation; ref #2553 2020-10-19 21:08:40 -07:00
Dane Everitt
1f5e0c0334
Update build modification service and cover logic with test cases
closes #2553
2020-10-19 21:07:07 -07:00
Dane Everitt
b3598b3b98
Update README.md 2020-10-19 15:27:06 -07:00
Charles Morgan
e0bc9ac50f
Duplicate save/invite button at top
Adds the Save / Invite User button at the top also
2020-10-18 04:31:54 -04:00
Ward Pieters
1c4ee31491
fix: duplicate enable 2FA error messages 2020-10-18 00:46:46 +02:00
Ward Pieters
f5dfe86eff
fix: duplicate disable 2FA error messages 2020-10-18 00:42:52 +02:00
Ward Pieters
f859d37b25
fix: duplicate 2FA error messages (https://github.com/pterodactyl/panel/issues/2455) 2020-10-18 00:02:46 +02:00
Dane Everitt
c370e08f65
[security] add login throttling to the 2FA verification endpoint 2020-10-17 14:46:10 -07:00
Dane Everitt
cbbe5b6fa9
Reset error messages between login screens; ref #2455 2020-10-17 14:45:33 -07:00
Dane Everitt
527ba1adc4
Fix recaptcha not resetting on login fail; closes #2397 2020-10-17 14:30:54 -07:00
Dane Everitt
9621f923f5
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-10-17 14:23:06 -07:00
Dane Everitt
5763493c6c
Allow setting the backup limit via the API; closes #2535 2020-10-17 14:23:00 -07:00
Dane Everitt
d7262664fd
Merge pull request #2544 from pterodactyl/matthewpi/mounts-patch-1
Deny certain paths when using server mounts
2020-10-17 13:56:19 -07:00
Dane Everitt
545d53e93d
Merge branch 'develop' into matthewpi/mounts-patch-1 2020-10-17 13:56:08 -07:00
Dane Everitt
35f24e7f22
Fix theme stuff 2020-10-17 13:54:34 -07:00
Dane Everitt
0260efc966
Fix some PHPstorm nightmare 2020-10-17 13:47:21 -07:00
Dane Everitt
b95e40f298
Merge pull request #2543 from pterodactyl/issue/2541
Fix white highlight hiding console text
2020-10-17 13:43:37 -07:00
Dane Everitt
820d8f7560
Better logic for using theme values 2020-10-17 13:43:22 -07:00
Matthew Penner
8ba291afb2 Fix Mount.php validation rules 2020-10-17 14:43:07 -06:00
Matthew Penner
66b9169458 Cleanup code in MountController.php, again. 2020-10-17 14:42:08 -06:00
Matthew Penner
050075b835 Cleanup code in MountController.php 2020-10-17 14:37:35 -06:00
Matthew Penner
f7520b721b Deny /etc/pterodactyl as a source path for mounts 2020-10-17 14:29:29 -06:00
Matthew Penner
c52c5d6736 Deny certain paths for mounts 2020-10-17 14:28:02 -06:00
Matthew Penner
ebe3375897 Fix white highlight hiding console text (fixes #2541) 2020-10-17 14:25:44 -06:00
Dane Everitt
b02a49f42e
Get everything on the same version 2020-10-17 12:23:25 -07:00
Dane Everitt
b8377b840f
Update README.md 2020-10-17 12:11:14 -07:00
Dane Everitt
839e277763
Fix exception when passing location IDs to creation service; closes #2529 2020-10-17 11:52:21 -07:00
Dane Everitt
f54151e0f6
Merge pull request #2525 from Spirit55555/patch-2
Remove target="blank" from /admin link
2020-10-17 10:38:14 -07:00
Dane Everitt
6aeb467155
Merge pull request #2540 from HavilaQQ/user-delete-fix
Fix artisan p:user:delete not working
2020-10-17 10:35:48 -07:00
Nobody
10548c9d8f Update message and update query 2020-10-17 18:26:34 +01:00
Dane Everitt
e3fe46882f
Merge pull request #2539 from pterodactyl/schrej-patch-1
use emoji directly instead of :names:
2020-10-17 10:26:08 -07:00
Jakob
652e93871d
use emoji directly instead of :names: 2020-10-17 19:25:09 +02:00
Dane Everitt
aa879d0f62
Merge pull request #2538 from pterodactyl/schrej-patch-1
replace installation help issue template with link to discord
2020-10-17 10:20:18 -07:00
Jakob
18911d8fe4
remove installation help issue template 2020-10-17 19:19:42 +02:00
Jakob
eabc17eab3
add conact links to discord to issue creation page 2020-10-17 19:19:03 +02:00
Anders G. Jørgensen
7ad26fc456
Remove target="blank" from /admin link
This should be changed to make it consistent with the admin panel, where the link back to the user panel does not open in a new tab.
2020-10-16 15:49:35 +02:00
Dane Everitt
cd3572730b
Add test coverage to ensure filters don't unexpectedly get broken 2020-10-15 21:52:26 -07:00
Dane Everitt
40d44598da
Add test coverage for change to endpoint 2020-10-15 21:32:49 -07:00
Dane Everitt
a4abb2543b
lint 2020-10-15 21:28:43 -07:00
Dane Everitt
f52f13600f
Fix text wrap on long server names in search bar 2020-10-15 21:23:31 -07:00
Dane Everitt
f30dab053b
Support much better server querying from frontend
Search all servers if making a query as an admin, allow searching by a more complex set of data, fix unfocus on search field when loading indicator was rendered
2020-10-15 21:21:38 -07:00
Dane Everitt
9726a0de46
Autofocus search when opening; closes #2522 2020-10-15 20:09:13 -07:00
Dane Everitt
5eda27933f
Merge pull request #2512 from AreYouRlyScared/xtermstuff
Upgrade Xterm to v4.9, Add Search
2020-10-15 19:56:29 -07:00
Dane Everitt
2685295110
Merge branch 'develop' into xtermstuff 2020-10-15 19:56:09 -07:00
Charles Morgan
8f2e90d1e8
Update Console.tsx 2020-10-15 16:41:11 -04:00
Dane Everitt
14099c164b
Add test coverage for schedule service 2020-10-14 21:17:57 -07:00
Dane Everitt
e7c64bc60e
Add test coverage for schedule execution 2020-10-14 21:06:27 -07:00
Dane Everitt
c1ee0ac4f8
Add support for executing a scheduled task right now 2020-10-14 20:38:59 -07:00
Dane Everitt
f33d0b1d72
Update schedule view UI 2020-10-14 20:13:36 -07:00
Charles Morgan
28844bf62c
Merge branch 'develop' into xtermstuff 2020-10-14 11:42:01 -04:00
Charles Morgan
807707c07e
Update Console.tsx 2020-10-14 11:38:59 -04:00
Dane Everitt
33a43de723
Merge pull request #2515 from AreYouRlyScared/subuserfix
Update UsersContainer.tsx
2020-10-14 08:22:08 -07:00
Charles Morgan
cdb881efaf
Fix naming 2020-10-14 09:54:06 -04:00
Charles Morgan
c53b14acef
Close search bar on esacpe
Allows the searchbar to be closed when a user clicks escape, just like in the browser.
2020-10-14 07:23:02 -04:00
Charles Morgan
471cadda77
Update UsersContainer.tsx
Closes #2514
2020-10-14 04:54:17 -04:00
Charles Morgan
9dc0c3e2c3
Upgrade Xterm to v4.9, Add Search
Changes:
Added ` xterm-addon-search ` v0.7.0
Added ` xterm-addon-search-bar ` v0.2.0
Updated ` webpack ` v4.43.0 -> v4.44.2
Updated ` xterm `  v3.14.4 -> v4.9.0
Updated ` xterm-addon-fit `  v0.1.0 -> v0.7.0
Updated ` xterm-addon-attach ` v0.1.0 -> v0.4.0

With the added packages above, when a user does Ctrl + F a search box will apear within the console for them to search whats in the console.

This was requested in discord to allow the lines in the console to be searchable.
2020-10-14 02:34:53 -04:00
Caleb
ea778e9345
Merge branch 'develop' into develop 2020-10-13 15:35:38 -04:00
Caleb
b725e45ed1
Merge pull request #4 from pterodactyl/release/v1.0.1
Release/v1.0.1
2020-10-13 15:28:25 -04:00
Dane Everitt
110b2568d5
Update changelog 2020-10-12 21:12:31 -07:00
Pterodactyl CI
59305f14dd bump version for release 2020-10-13 04:04:58 +00:00
Dane Everitt
6274c451af
COrrectly set the breadcrumbs when using browser back; closes #2485 2020-10-12 21:02:51 -07:00
Dane Everitt
7a0ac1d5c2
Revert "Merge pull request #2482 from AreYouRlyScared/fix-2386"
This reverts commit a967dbc6fc, reversing
changes made to 289de72aca.
2020-10-12 20:59:11 -07:00
Dane Everitt
49ddd63dbd
Do not allow running the up or seed commands if migrations have not been run 2020-10-12 20:51:35 -07:00
Dane Everitt
d5f2242c89
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-10-12 20:15:22 -07:00
Dane Everitt
ef586bf752
Up the default API throttle for the client API to avoid issues with large numbers of servers 2020-10-12 20:15:12 -07:00
Dane Everitt
a967dbc6fc
Merge pull request #2482 from AreYouRlyScared/fix-2386
Remove trailing slash if one is present
2020-10-12 20:14:05 -07:00
Dane Everitt
289de72aca
Merge pull request #2497 from pterodactyl/fix/server-mounts
Fix server mounts
2020-10-12 20:13:35 -07:00
Dane Everitt
1ad8b3f37d
Do not mark a server as "not installed" when updating it's startup arguments 2020-10-12 20:12:34 -07:00
Dane Everitt
2eccfcc1e3
Nuke existing server_transfers tables; done trying to be nice to plugin devs 2020-10-12 18:42:03 -07:00
Matthew Penner
3ef3c2a461 Remove commented code 2020-10-12 11:12:23 -06:00
Matthew Penner
abd60ee6f8 Fix 500 error when mounting a mount and fix the actual mount being deleted instead of the relation 2020-10-12 11:11:40 -06:00
Dane Everitt
d795668fc2
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-10-11 16:19:58 -07:00
Dane Everitt
d4db80b5c9
Update CHANGELOG.md 2020-10-11 16:19:56 -07:00
Charles Morgan
f7fd63dff9
Remove trailing slash if one is present
Closes https://github.com/pterodactyl/panel/issues/2386
2020-10-11 18:38:09 -04:00
Dane Everitt
9112de4bfb
Merge pull request #2481 from AreYouRlyScared/fix-2435
Yeh Yeh.... Remove validation rules
2020-10-11 15:36:18 -07:00
Charles Morgan
4b8a275a78
Update AdvancedSettingsFormRequest.php 2020-10-11 18:33:25 -04:00
Dane Everitt
08dcb85e5d
Merge pull request #2480 from AreYouRlyScared/fix-2435
Remove unused settings from admin side
2020-10-11 15:24:31 -07:00
Charles Morgan
5c105822b6
Remove unused settings
Closes https://github.com/pterodactyl/panel/issues/2435
2020-10-11 18:21:01 -04:00
Dane Everitt
18fce37565
Fix subuser permissions not migrating correctly from 0.7; closes #2309 2020-10-11 15:13:17 -07:00
Dane Everitt
1e08f7d2d2
Merge pull request #2454 from zKoz210/patch-1
Fixed phantom shadow when opening modal window
2020-10-11 12:36:49 -07:00
Dane Everitt
2041bc078a
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-10-11 12:36:02 -07:00
Dane Everitt
ebe3f6a32a
Fix unit tests 2020-10-11 12:35:54 -07:00
Dane Everitt
2f5e080074
Remove unnecessary break-all 2020-10-11 12:34:48 -07:00
Dane Everitt
c6d6221711
Correctly fix the UI for API keys 2020-10-11 12:29:00 -07:00
Dane Everitt
d8e3e0a5f7
Merge branch 'develop' into pr/2454 2020-10-11 12:15:53 -07:00
Dane Everitt
78a3f933d1
Merge pull request #2476 from AreYouRlyScared/fix
Fix missing semi, Fixed task row overflow
2020-10-11 12:07:06 -07:00
Dane Everitt
bb9c0c968a
Merge pull request #2466 from LeJeanbono/rename_cpu_thread
Rename CPU Threads for CPU Pinning
2020-10-11 12:06:54 -07:00
Dane Everitt
8697185900
Fix up database creation and handling code for servers; ref #2447 2020-10-11 11:59:46 -07:00
Charles Morgan
c8b00f0ccf
Fix missing semi, Fixed task tow overflow
Was suppsoe to be correct in https://github.com/pterodactyl/panel/pull/2352 but seems to be picky. Should now correctly show a multiline text box and not a long skinny text box when the text overflows.

Also, fixed a missing semicolon. 👍
2020-10-11 04:35:26 -04:00
Dane Everitt
a4d7170fac
Don't allow creation of a database with an identical name for the same server; closes #2447 2020-10-10 18:17:04 -07:00
Dane Everitt
7b0f998f0b
Return the correct server & subuser counts for user listing; closes #2469 2020-10-10 18:06:42 -07:00
Dane Everitt
1f7fe093ae
Correctly validate description for API keys to match model expectations; closes #2457 2020-10-10 17:15:30 -07:00
Dane Everitt
1f28fb94e2
Ensure the UUID is set correctly; closes #2450 2020-10-10 17:11:27 -07:00
Dane Everitt
a9e4587125
Ensure debug is false in tests to avoid accidentally masking exception responses wrongly 2020-10-10 16:51:44 -07:00
Dane Everitt
69f27ed807
Update and test variable validator logic 2020-10-10 16:46:56 -07:00
Dane Everitt
d8228f2da8
Allow passing empty values through for variables, covers with test, closes #2433 2020-10-10 16:45:24 -07:00
Dane Everitt
bf6e1ce966
Document what is being tested a little better so it isn't just a wall of code 2020-10-09 22:12:45 -07:00
Dane Everitt
c2db163731
Update node finding service logic to be single query; add test coverage 2020-10-09 22:01:25 -07:00
Dane Everitt
3decbd1f46
Temporarily disable flaky tests on Github 2020-10-09 21:14:06 -07:00
Dane Everitt
192a578a03
Add basic test coverage for server creation functionality 2020-10-09 21:08:27 -07:00
Dane Everitt
b2970e3117
Fastest way to passing tests is deleting the failing ones. 👍 2020-10-09 20:21:10 -07:00
Oreo Oreoniv
1e3f3fb053
Fixed incorrect button appearance 2020-10-09 12:15:23 +03:00
Dane Everitt
c59a2c436b
Don't waste time on a service better suited to an integration test 2020-10-08 22:34:52 -07:00
Dane Everitt
2560163655
Modify how deletion service works (actually fixes #2085); cover changes with test 2020-10-08 21:08:55 -07:00
Dane Everitt
7a643beee0
Add test coverage for startup modification 2020-10-08 20:38:21 -07:00
Dane Everitt
d087bebc93
Add some additional test coverage and clean up modification service and suspension service 2020-10-07 21:56:44 -07:00
LeJeanbono
0b559f8acb Rename CPU Threads for CPU Pinning 2020-10-06 23:09:16 +02:00
Dane Everitt
83efb2d7b6
More fixes for broken unit tests 2020-10-05 21:54:29 -07:00
Dane Everitt
b9eb87deaa
Fix node and schedule unit tests 2020-10-05 21:31:39 -07:00
Dane Everitt
0c2bd416ee
Fix unit tests for eggs 2020-10-05 21:29:35 -07:00
Dane Everitt
0f4f2235a3
More Laravel-esq job processing 2020-10-05 20:46:41 -07:00
Oreo Oreoniv
ec313a7362
Fixed description for API keys 2020-10-05 12:36:03 +03:00
Oreo Oreoniv
62e111657c
Fixed a bug with an incorrect size modal 2020-10-05 11:53:11 +03:00
Oreo Oreoniv
0fa503f923
Fixed phantom shadow when opening modal window 2020-10-05 11:36:47 +03:00
Dane Everitt
e1e079bc12
Update README.md 2020-10-03 21:49:26 -07:00
Dane Everitt
2d01c7b988
Reset is_processing state of a schedule when toggling active/inactive; closes #2425 2020-10-03 19:47:52 -07:00
Dane Everitt
57457f0e9c
Oops, also include the server status 2020-10-03 19:37:36 -07:00
Dane Everitt
6b52a36b31
Significantly reduce the number of re-renders on the console page when stats are flowing 2020-10-03 19:36:26 -07:00
Dane Everitt
5fc4444f5a
Refit terminal when screen is resized; closes #2365 2020-10-03 19:21:11 -07:00
Dane Everitt
2d56cacbab
Don't trigger a 500 error with bad data; closes #2442
This whole chunk of code needs some cleanup but I'll defer that for the new admin area in the future
2020-10-03 19:05:04 -07:00
Dane Everitt
d1c30607cf
UI updates for server rows to show current status 2020-10-03 16:36:31 -07:00
Dane Everitt
2a42ef5c62
Mobile responsiveness fixes 2020-10-03 16:25:39 -07:00
Dane Everitt
47d59ca20f
Fix mobile UI for allocation rows 2020-10-03 15:48:31 -07:00
Dane Everitt
4ff5de7e1b
decode before encoding URLs, closes #2440 2020-10-03 12:51:41 -07:00
Dane Everitt
99c9682f67
Fix errors with mounts; closes #2374 2020-10-03 12:42:27 -07:00
Dane Everitt
b4a9a7205d
speeling is hard 2020-10-03 12:14:39 -07:00
Dane Everitt
fb482abb9c
Also cache bust 2020-10-03 11:37:11 -07:00
Stepan Fedotov
62856556b9
Apply security fixes from #2441 to 1.0 2020-10-03 11:34:36 -07:00
Charles Morgan
3473e1dfbf
Remove console logging (#2415)
Remove console logging, as its not an error being logged i see no reason for this to be printed when the startup page is viewed.
2020-10-03 11:23:16 -07:00
Oreo Oreoniv
10eeae0927
Fix text overflows through out the front end (#2406) 2020-10-03 11:22:37 -07:00
Oreo Oreoniv
6893f9bfcd
Fixes for mobile responsiveness on the console page (#2411) 2020-10-03 11:21:09 -07:00
Dane Everitt
1616cf1318
Always show errors from HTTP exceptions correctly to the user; closes #2439 2020-10-03 11:18:14 -07:00
Caleb
4770af453b Removed loggin and reverted changes to webpack 2020-09-29 14:42:02 -04:00
Caleb
0017ab5397 Delete .env.bkup 2020-09-29 12:04:16 -04:00
Caleb
24cad5587b Update .gitignore 2020-09-29 12:03:14 -04:00
Caleb
fb33824e10 Added admin controls.
Removed the note in the server settings that stated that the allocations feature is currently not implemented.

Properly check to make sure that there are allocations available in range before trying to create it.
2020-09-29 12:00:59 -04:00
Caleb
d80660f047 Added admin configuration
This is not working just yet but the fields have been added to the admin control area.
2020-09-28 16:14:14 -04:00
Caleb
da30977364 Merge branch 'develop' of https://github.com/pressstartearly/panel into develop 2020-09-28 11:51:09 -04:00
Caleb
8f8bd0be83 Added Automatic Allocations
Known issues:
- Port range to auto create is hard coded
- React interface is still a WIP.
2020-09-28 11:50:34 -04:00
Dane Everitt
f31a6d3967
Fix parameter bindings for client API routes; closes pterodactyl/panel#2359 2020-09-27 10:39:18 -07:00
Dane Everitt
1db7e4db66
Request stats from wings when loading the console; closes pterodactyl/panel#2414 2020-09-27 09:45:37 -07:00
Dane Everitt
ff50940fa6
Fix keyboard save shortcut when saving a new file; closes #2427 2020-09-27 09:30:24 -07:00
Dane Everitt
da0b527715
Do not re-render rows excessively 2020-09-27 09:30:05 -07:00
Dane Everitt
3e899ffc51
Handle JWT expirations a little better 2020-09-27 09:22:09 -07:00
Dane Everitt
47697e07cf
Add test coverage for creating a subuser 2020-09-26 17:25:14 -07:00
Dane Everitt
cc6f98c0fd
Replace all instances of 255 as a max length with 191; ref #2421 2020-09-26 16:29:26 -07:00
Dane Everitt
4f21fa85f8
finish fixing folder names when lots of slashes exist; closes #2377 2020-09-25 20:44:40 -07:00
Dane Everitt
fe849789a2
Dont display server usage as red if unlimited; closes #2417 2020-09-25 20:32:10 -07:00
Dane Everitt
bcbd2c4996
Add new sponsor 2020-09-24 21:24:01 -07:00
Dane Everitt
3340ee7fd8
Fix bad encoding when handling files; closes #2399 2020-09-24 20:27:02 -07:00
Dane Everitt
711efe34bb
Truncate auto-generated usernames to 64 characters 2020-09-24 19:37:39 -07:00
Dane Everitt
c0fc9125ed
Fix database naming conventions; closes #2404 2020-09-24 19:31:42 -07:00
Dane Everitt
6a4914df3b
Properly validate schedule names; closes #2405 2020-09-24 19:25:34 -07:00
Dane Everitt
48a104667f
Fix re-rendering mess on allocation page 2020-09-24 19:20:19 -07:00
Caleb
e1a01fd595 changed package.json to be ignored 2020-09-24 14:43:22 -04:00
Dane Everitt
cbedd4539c
Performance cleanup; check main box when all children are checked; closes #2379 2020-09-22 21:41:35 -07:00
Dane Everitt
2182a15494
Don't return variables to users that they should not be able to see; closes #2388 2020-09-22 21:12:00 -07:00
Dane Everitt
7968258004
appease TS 2020-09-22 20:52:37 -07:00
Dane Everitt
4bfc91a30e
Fix mutation of directory name with slashes in it; closes #2377 2020-09-22 20:50:44 -07:00
Dane Everitt
36eb04893d
Not used, make things less confusing 2020-09-22 20:42:48 -07:00
Dane Everitt
7f9b21e486
Correctly show number of servers a user belongs to; closes #2375 2020-09-22 20:13:54 -07:00
Dane Everitt
1b0a6252f1
Fix undefined index error; closes #2378; closes #2391 2020-09-22 19:58:30 -07:00
Dane Everitt
d4363cb36f
Merge pull request #2362 from AreYouRlyScared/fixes
Remove unused imports
2020-09-22 19:46:25 -07:00
Charles Morgan
c928214a83
Fix overflows through out the front end (#2382)
* Fix overflows through out the front end

Fixed Server row overflow for servers name and description
Fixed Sub-user overflow for users with oddly long emails....
Fixed Server new overflow on console view.

See Attached images.

* Remove conflicting server name limits
2020-09-22 19:37:41 -07:00
Dane Everitt
c75ed20b26
Merge pull request #2396 from pterodactyl/fix-2361
Fix empty array in node config YAML
2020-09-22 19:36:41 -07:00
Anand Capur
dda13f80c7
Fix empty array in node config YAML 2020-09-22 16:09:28 -07:00
Charles Morgan
f6bec474f4
Remove unused imports 2020-09-18 03:43:33 -04:00
Dane Everitt
0908830003
Fix error when loading nodes 2020-09-17 20:44:33 -07:00
Dane Everitt
c9883b5caf
Include resource total allocations; closes #1518 2020-09-17 20:44:24 -07:00
Dane Everitt
f420cd1354
Merge pull request #2352 from Sir3lit/bugfixes
Fix schedule layout
2020-09-17 14:27:20 -07:00
Charles Morgan
1b59c8dffe
Update Schedule.php 2020-09-17 17:16:36 -04:00
Charles Morgan
98ed96d08a
Merge branch 'bugfixes' of https://github.com/Sir3lit/panel into bugfixes 2020-09-17 00:07:30 -04:00
Charles Morgan
d1a325312d
Update ScheduleTaskRow.tsx 2020-09-17 00:07:20 -04:00
Charles Morgan
857d311135
Merge branch 'develop' into bugfixes 2020-09-17 00:04:16 -04:00
Charles Morgan
607184e578
Schedule Fixes
Limiting Schedule name 75>255
Moved Payload to bottom of new task window
Closes #2346
2020-09-17 00:01:48 -04:00
Dane Everitt
cca537d650
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-09-16 20:28:53 -07:00
Dane Everitt
95b27a8d56
Remove unused views 2020-09-16 20:28:38 -07:00
Dane Everitt
1e4b50fa61
Remove socketio connections from server listing; closes #1942 2020-09-16 20:28:32 -07:00
Dane Everitt
7f9f81a859
Merge pull request #2335 from ZeProf2Code/patch-2
fix: only show download button if it's a file
2020-09-16 20:23:39 -07:00
Dane Everitt
28dbd0f02a
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-09-16 20:20:51 -07:00
Dane Everitt
353f2487a0
Correctly send backup ignored files from textarea; closes #2349
For some reason Formik can't handle the css macro on these fields? Concerning, but not wasting time this close to release to dig into it more.
2020-09-16 20:20:48 -07:00
Caleb
edeaa69dff
Merge pull request #3 from pterodactyl/develop
Pull from upstream
2020-09-16 11:23:13 -04:00
Dane Everitt
dffc392c09
Merge pull request #2340 from kodehat/develop
Add Redis UNIX socket support besides to TCP
2020-09-16 08:11:53 -07:00
kodehat
d5f411d733
Add Redis UNIX socket support besides to TCP 2020-09-16 08:49:35 +02:00
Dane Everitt
3af9e92603
Codemirror cleanup 2020-09-15 20:53:23 -07:00
Dane Everitt
80e08572d6
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-09-15 19:27:11 -07:00
Dane Everitt
2d669a3059
Fix backups table not being removed correctly; closes #2343 2020-09-15 19:27:02 -07:00
Dane Everitt
0be5878e9e
Merge pull request #2338 from pterodactyl/feature/codemirror
Replace Ace Editor with CodeMirror
2020-09-15 19:17:00 -07:00
Matthew Penner
9d7f4f954e Replace Ace editor with CodeMirror 2020-09-13 17:17:40 -06:00
Dane Everitt
79f616f791
Fix authentication lockout when doing multiple SFTP uploads; closes #2221 2020-09-13 13:54:41 -07:00
Dane Everitt
7b57d65edf
Cleanup allocation repository 2020-09-13 12:47:05 -07:00
Dane Everitt
9410a54c98
Removed unused interface functions 2020-09-13 12:37:59 -07:00
Dane Everitt
8b4bd3945d
Fix user search in admin area; closes #2100 2020-09-13 12:35:48 -07:00
Dane Everitt
88300e5448
Support searching servers in admin area using name; closes #2100 2020-09-13 12:26:15 -07:00
Dane Everitt
d8c338df3e
Update all remaining code pathways to use new search tooling 2020-09-13 12:21:44 -07:00
Dane Everitt
12fe3f1a4e
Fix failing integration tests 2020-09-13 12:02:39 -07:00
Dane Everitt
f31dd4706c
Fix location controller searches 2020-09-13 11:59:52 -07:00
Dane Everitt
a66623d8e1
Fix user search via the API; ref #2100 2020-09-13 11:55:39 -07:00
Dane Everitt
703f55271d
Remove all references to daemon keys from the codebase 2020-09-13 11:38:42 -07:00
Dane Everitt
4dddcaebb0
Start ripping out old search functionality for models 2020-09-13 11:29:47 -07:00
Dane Everitt
3c7ffaaadb
Remove all references of packs from the Panel 2020-09-13 11:13:37 -07:00
Dane Everitt
f1978683cc
More mobile cleanup 2020-09-13 10:49:57 -07:00
Dane Everitt
47283700a8
File manager cleanup for mobile devices 2020-09-13 10:33:12 -07:00
Dane Everitt
6ec2ae9df8
Fix casting 2020-09-13 10:04:30 -07:00
Rihan
9a4c0d8ba7
Make interface mobile responsive (#2273) 2020-09-13 10:02:25 -07:00
Dane Everitt
9a21584c42
Cleanup mount code; automatically include the mount in the configuration 2020-09-13 09:59:54 -07:00
Arnaud Lier
34117017ec
fix: only show download button if it's a file 2020-09-13 09:35:35 +02:00
Dane Everitt
8c6c271916
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-09-11 23:18:02 -07:00
Dane Everitt
74767ed6a2
Disable buttons when not fully connected to instance 2020-09-11 23:18:01 -07:00
Dane Everitt
f711c1c046
Merge pull request #2328 from Sourack/develop
Update daemon_off_config_updated message core.json is now config.yml
2020-09-11 20:18:50 -07:00
Dane Everitt
83f9bebba9
Merge pull request #2327 from ZeProf2Code/patch-1
fix: remove ./ before wings for auto-configuration
2020-09-11 20:17:49 -07:00
Sourack
09071a43dc Update daemon_off_config_updated message core.json is now config.yml
This error message isn't updated for wings 1.0 .
2020-09-11 21:50:43 -04:00
Arnaud Lier
8da56df641
fix: remove ./ before wings for auto-configuration
on the docs, you're downloading it to /usr/local/bin so it's easier like this
2020-09-12 02:29:52 +02:00
Dane Everitt
1c00c3b234
Merge pull request #2323 from Sir3lit/patch-1
Arrange cron times in proper order to match
2020-09-10 20:20:51 -07:00
Dane Everitt
d946cba2f3
Merge pull request #2321 from Sir3lit/movetitles
Move page titles to PageContentBlocks
2020-09-10 20:20:35 -07:00
Dane Everitt
1077504c02
Rely on the test connection to the MySQL instance rather than trying to validate the host manually; closes #2311; closes #2282 2020-09-10 20:09:07 -07:00
Charles Morgan
735aae6df7
Arrange cron times in proper order to match
Moves the rendering of the time boxes to proper locations to match the view on the main schedules page and to match cron syntax
2020-09-10 01:02:44 -04:00
Dane Everitt
d86d0fedb4
Don't re-render entire file list when opening modals 2020-09-09 21:32:43 -07:00
Dane Everitt
deb61623b2
Don't try to upload dropped text 2020-09-09 21:22:13 -07:00
Dane Everitt
98d7b32036
Use fixed spinner overlay for uploads 2020-09-09 21:08:34 -07:00
Dane Everitt
6d922a7563
Show normal upload box when using upload button; closes #2294 2020-09-09 21:07:57 -07:00
Dane Everitt
6139b4e479
Fix chrome dismissing modals when dragging out of it; closes #2295 2020-09-09 20:55:23 -07:00
Dane Everitt
b4599a2561
Name changes for sponsor 2020-09-09 19:00:11 -07:00
Charles Morgan
861911ca49
Move page titles to PageContentBlocks 2020-09-07 23:26:18 -04:00
Dane Everitt
ed83ab8fe9
Clear error when navigating through file manager; closes #2314 2020-09-07 15:03:26 -07:00
Dane Everitt
631885d60c
Handle a plugin not properly namespacing itself and causing migration errors; ref #2291 2020-09-01 20:24:25 -07:00
Dane Everitt
b707147b73
Better handling of values that may need to be wrapped in quotes within the environment file, closes #2304 2020-09-01 19:45:24 -07:00
Dane Everitt
6ac12fc156
Disable integrity hashes by default, allow enabling with environment
Cloudflare auto-minifies our minified code even more (wat), which leads to issues with the resource hash, and then nothing loads. This is less likely to lead to support requests now.
2020-09-01 19:37:05 -07:00
Dane Everitt
de9ec1eba6
Confirmation when deleting files via dropdown menu; closes #2293 2020-08-31 21:05:52 -07:00
Dane Everitt
981edb0d64
Require specific permission for reading the actual contents of a file; ref #2288 2020-08-31 19:36:30 -07:00
Dane Everitt
d87438621f
Don't allow opening of files we know cannot be edited; closes #2286 2020-08-30 10:25:48 -07:00
Dane Everitt
906cfce81c
Don't return a 403 when returning resources for a suspended server; closes #2279 2020-08-30 09:54:59 -07:00
Dane Everitt
6a442c1fd3
Don't send along egg information unecessarily 2020-08-30 09:40:19 -07:00
Dane Everitt
4ee19b6847
Tweak UI for dashboard 2020-08-29 18:20:12 -07:00
Dane Everitt
cd9494251b
Update README.md 2020-08-29 16:09:51 -07:00
Dane Everitt
0f6a307bc9
Update README.md 2020-08-29 16:08:22 -07:00
Dane Everitt
e576eb27bf
Update README.md 2020-08-29 15:48:57 -07:00
Caleb
f54d4f965c
Merge pull request #2 from pterodactyl/develop
Update From Upstream
2020-08-29 08:57:06 -04:00
Dane Everitt
d735909124
Update README.md 2020-08-28 08:23:44 -07:00
Dane Everitt
90ba76c237
Return integration tests to passing state 2020-08-27 21:22:05 -07:00
Dane Everitt
1e19e02398
Fix integration tests to properly account for the rule position in the API 2020-08-27 21:19:01 -07:00
Dane Everitt
f293c73977
Return the broken rule in the validation error response 2020-08-27 21:15:23 -07:00
Dane Everitt
1967e3f7fd
Better backup storage 2020-08-27 19:59:01 -07:00
Dane Everitt
4b919cabd2
Correctly validation API calls to mark a backup as completed
Also block modifying a backup that is already marked as completed via the endpoint
2020-08-27 19:35:22 -07:00
Dane Everitt
e863683582
Treat validation errors the same as a normal error; match the output exactly 2020-08-27 19:26:52 -07:00
Dane Everitt
8c98264eed
Remove last calls to useServer 2020-08-25 22:09:54 -07:00
Dane Everitt
6bc51adad7
Merge branch 'develop' into dane/fix-performance-snafu 2020-08-25 22:02:45 -07:00
Dane Everitt
ac1559de5e
Revert "Less obtuse mounting code"
This reverts commit 9d95c5ab32.
2020-08-25 21:54:41 -07:00
Dane Everitt
1598dac6f8
Remove more references to useServer 2020-08-25 21:39:00 -07:00
Dane Everitt
c4418640eb
Start cleaning up the mess of useServer; make startup page update in real time 2020-08-25 21:25:31 -07:00
Dane Everitt
0e0b58ba5e
Update wrapper.blade.php 2020-08-25 21:00:43 -07:00
Dane Everitt
179885b546
Add endpoint to return startup variables; send back modified startup when a variable is edited 2020-08-25 19:22:17 -07:00
Dane Everitt
d58fd72bf5
Correctly pass along startup variables for a server; closes #2255 2020-08-25 19:11:25 -07:00
Dane Everitt
9d95c5ab32
Less obtuse mounting code 2020-08-25 19:01:08 -07:00
Dane Everitt
96fef94578
Don't try to use the contents of the file as the file name when using the save shortcut... closes #2266 2020-08-25 18:47:26 -07:00
Dane Everitt
9e60cf9f53
Show server status 2020-08-24 21:17:15 -07:00
Dane Everitt
7e3ac2399b
Merge pull request #2262 from Rems19/develop
Fix default values not applied in server creation
2020-08-24 19:08:49 -07:00
Dane Everitt
5b1456b58f
Merge pull request #2263 from pterodactyl/fix/2253
Fix #2253
2020-08-24 19:08:36 -07:00
Matthew Penner
773c42e4f2 Fix #2253 2020-08-24 11:26:05 -06:00
Rémi Labergère
74cf92b2e1
Fix default values not applied in server creation 2020-08-24 18:50:25 +02:00
Dane Everitt
1e58e108ba
Update last location using wrong column name 2020-08-23 20:23:42 -07:00
Dane Everitt
034a310702
Use checksum more broadly, not specifically SHA256 2020-08-23 18:06:47 -07:00
Dane Everitt
4cd44d2025
Hide checkbox when editing/creating files 2020-08-23 16:03:54 -07:00
Dane Everitt
55cd7d4d39
Allow editing files up to 4MB 2020-08-23 15:55:26 -07:00
Dane Everitt
89b18cbcac
Fix pages not rendering 2020-08-23 15:55:10 -07:00
Dane Everitt
5173f1f7e8
Don't allow editing read only values; closes #2252 2020-08-23 14:56:05 -07:00
Dane Everitt
92929c45d5
Fix query bug returning _all_ variables; closes #2250 2020-08-23 08:45:39 -07:00
Dane Everitt
f21aca20b2
Mutate the store after uploading 2020-08-22 22:36:53 -07:00
Dane Everitt
b4c64d3dc0
Better handling of file uploads 2020-08-22 22:35:53 -07:00
Dane Everitt
f561089cad
Fix the unholy hell that is drag events 2020-08-22 22:10:16 -07:00
Dane Everitt
56475d89bb
Fix rendering when trying to access server from state 2020-08-22 19:05:43 -07:00
Dane Everitt
813a671571
Hide startup line from API response if user doesn't have startup permissions 2020-08-22 19:01:42 -07:00
Dane Everitt
9ae3c17913
Don't even render components if the user doesn't have permission 2020-08-22 19:01:29 -07:00
Dane Everitt
54f9c5f187
Merge branch 'develop' into feature/file-uploads 2020-08-22 18:33:09 -07:00
Dane Everitt
91cdbd6c2e
Support modifying startup variables for servers 2020-08-22 18:13:59 -07:00
Dane Everitt
1b69d82daa
Don't return things a user shouldn't be able to see via the API includes 2020-08-22 16:54:12 -07:00
Dane Everitt
9b16f5883c
Refactor to a single transformer file 2020-08-22 15:46:13 -07:00
Dane Everitt
cae604e79d
Include egg variables in the output from the API 2020-08-22 15:43:28 -07:00
Dane Everitt
3a2c60ce31
Store bytes as unsigned bigint; closes #2245 2020-08-22 13:26:03 -07:00
Dane Everitt
63bdc1b6eb
Merge pull request #2249 from JanDevDE/patch-2
Fix schedules in Dockerfile
2020-08-21 13:02:26 -07:00
Jan
b5713ff7b7
Fix schedules in Dockerfile
The wrong directory to run PHP in, so schedules will not run
2020-08-21 15:10:17 +02:00
Dane Everitt
1e735cf0e8
Support failed backup display on the frontend; use SWR for backup pages 2020-08-20 21:44:33 -07:00
Dane Everitt
e3178ba6f0
backend: support is_successful state for backups rather than deleting it when failing
This allows the UI to correctly show failed backups to the user and require them to manually delete those backups, rather than them mysteriously disappearing.

We can also hook into this later to send a notification to the user when the backup fails.
2020-08-20 21:07:53 -07:00
Dane Everitt
6066fa40f4
Prune server backups from the DB after 30 minutes if they still have not completed 2020-08-20 20:48:08 -07:00
Dane Everitt
f144ba8394
Don't enter d i s c o m o d e when first opening the page; closes #2190
This was caused by the location.key being undefined when the page first renders (for some reason), and therefore the fade component just kept re-rendering since it wasn't using a unique key.
2020-08-19 21:30:45 -07:00
Dane Everitt
13ace83f42
Move the file selector out of the editor itself; closes #2147 2020-08-19 21:11:29 -07:00
Dane Everitt
540cc82e3d
Don't resolve database hosts; closes #2237 2020-08-19 20:38:51 -07:00
Dane Everitt
61e9771333
Code cleanup for subuser API endpoints; closes #2247 2020-08-19 20:21:12 -07:00
Dane Everitt
57bb652d81
Whoops, don't always show this modal 2020-08-18 20:16:13 -07:00
Dane Everitt
e873c597bb
Allow passing props through to determine modal options 2020-08-17 22:04:24 -07:00
Dane Everitt
c28cba92e2
Make modals programatically controllable via a HOC
This allows entire components to be unmounted when the modal is hidden without affecting the fade in/out of the modal itself.

This also makes it easier to programatically dismiss a modal without having to copy the visibility all over the place, and makes working with props much simpler in those modal components
2020-08-17 21:35:11 -07:00
Dane Everitt
d41b86f0ea
Correctly pass along allowed IPs for client API keys, closes #2244 2020-08-17 19:48:51 -07:00
Dane Everitt
a6cc53793d
Update README.md 2020-08-17 19:05:01 -07:00
Dane Everitt
1ced8da735
Update README.md 2020-08-17 19:04:23 -07:00
Caleb
d3a544ac5d
Merge pull request #1 from pterodactyl/develop
Upstream Update
2020-08-16 12:00:54 -04:00
Dane Everitt
800b475ec5
Respond with the actual error from wings if available; closes #2224 2020-08-13 21:21:08 -07:00
Dane Everitt
231ff0386c
Fix kill button not showing up when restarting 2020-08-13 20:47:16 -07:00
Dane Everitt
c0f7c9bbf3
Update README.md 2020-08-13 20:29:46 -07:00
Dane Everitt
9026808ad7
The first of our lovely sponsors 2020-08-12 21:25:14 -07:00
Dane Everitt
14c587eabe
Correctly inject new directory into file manager 2020-08-06 20:33:17 -07:00
Dane Everitt
95e8492c5d
What the heck are these abysmal timeouts; closes #2223 2020-08-06 20:25:35 -07:00
Dane Everitt
d1a28051f9
Support userInteraction and user_interaction because who needs this to be maintainable in the future... 2020-08-04 20:39:18 -07:00
Dane Everitt
c91c02f6a8
Fix for struct in Go 2020-08-04 20:38:24 -07:00
Dane Everitt
164d6ef2e4
Return egg "done" checks as an array rather than a string 2020-08-04 20:34:44 -07:00
Dane Everitt
26704a2d5f
Clear reinstall messages when mounting; closes #2213 2020-08-03 20:58:15 -07:00
Dane Everitt
941da821e1
Merge pull request #2205 from Sir3lit/pagetitles2
Page Titles v2 - Using React Helmet
2020-08-01 21:27:23 -07:00
Dane Everitt
9387be3b0d
Fix permissions on subuser rows 2020-08-01 21:25:28 -07:00
Charles Morgan
658c2b12ae
Merge branch 'develop' into pagetitles2 2020-08-01 23:14:27 -05:00
Charles Morgan
a1f1e4294d
conflict fix 2020-08-02 00:11:49 -04:00
Dane Everitt
b52fc0b4d9
Fix recaptcha handling during login & password reset flows; closes #2064 2020-08-01 21:08:35 -07:00
Charles Morgan
d3316f61d7
Titles on index / account pages
Also changed to use  `const { ..., name: serverName } = useServer();` where feasible
2020-08-01 23:49:00 -04:00
Charles Morgan
27f201f27e
Merge branch 'develop' into pagetitles2 2020-08-01 22:10:58 -05:00
Dane Everitt
dd381f65a9
Don't try to be fancy, just pain 2020-08-01 20:06:17 -07:00
Charles Morgan
d604a4a5f2
Merge branch 'develop' into pagetitles2 2020-08-01 22:03:07 -05:00
Dane Everitt
a966613890
Fix task edit modal not filling the payload correctly 2020-08-01 19:52:13 -07:00
Dane Everitt
c58348735d
Avoid double-click double-submit issues in modals; closes #2199 2020-08-01 19:49:38 -07:00
Dane Everitt
0c7f118f45
add withFlash() context HOC 2020-08-01 19:44:50 -07:00
Dane Everitt
b92c97060b
Use a key that doesn't change to avoid re-render issues; closes #2203 2020-08-01 18:48:58 -07:00
Dane Everitt
21a4ce8043
Merge pull request #2034 from dblitt/patch-1
Fix outdated AdminLTE link in README.md
2020-08-01 16:55:50 -07:00
Dane Everitt
81f395bf5a
Merge pull request #2174 from vilhelmprytz/remove-unused-import
Remove unused import
2020-08-01 16:55:35 -07:00
Dane Everitt
b5d97c00df
Merge pull request #2184 from Sir3lit/scrollbar
Re-add scroll bar style, fix missed tw conversion
2020-08-01 16:55:23 -07:00
Dane Everitt
0d089acf3d
Merge pull request #2191 from Sir3lit/googleanalytics2
Add Google Analytics Support
2020-08-01 16:55:06 -07:00
Dane Everitt
0fa90dd6bd
Add listener for install start/end 2020-07-29 22:02:00 -07:00
Dane Everitt
874d928a50
Correctly handle response from daemon for server stats; #2183 2020-07-29 20:34:06 -07:00
Dane Everitt
4c558a8662
Fix date display for scheduled tasks; closes #2195 2020-07-29 20:23:46 -07:00
Charles Morgan
6d79ad23a5
Attempt 2?
80% sure this isn't how to use react-helmet.... but it works....
2020-07-26 23:32:24 -04:00
Charles Morgan
cb4f8efbe6
Add Google Analytics
Added Google Analytics to latest dev branch
2020-07-26 21:05:54 -04:00
Dane Everitt
4a27e56e08
Fix test 2020-07-26 10:55:30 -07:00
Dane Everitt
f0ac0725b6
[Security] Don't return all servers on the system when not a root admin and admin level servers are requested
Cleaned up the API endpoint by simplifying the logic and adds test case to cover this bug.

If you ever need to list _all_ of the servers on the system you should be using the application API endpoint for the servers most likely.
2020-07-26 10:43:46 -07:00
Charles Morgan
1fe254efc6
Re-add scroll bar style, fix missed tw conversion
Fixed backup message still using old method of "className" changed to use css={ts}
readded scrollbar styling from PR#2118
2020-07-22 01:54:49 -04:00
Dane Everitt
24db6d9128
Update FUNDING.yml 2020-07-19 14:35:47 -07:00
Dane Everitt
ff9f893dc3
Code cleanup for file manager 2020-07-18 10:45:41 -07:00
Dane Everitt
d644758986
Always return the status code from the daemon if possible 2020-07-18 10:23:28 -07:00
Dane Everitt
c2b1e7e6ab
Use archive icon 2020-07-16 22:21:06 -07:00
Dane Everitt
3b80597899
Merge pull request #2178 from pterodactyl/feature/decompress
Fix empty request body to wings when decompressing a file
2020-07-15 18:46:44 -07:00
Matthew Penner
df385cef3a Add additional mimetypes to check if a file is an archive 2020-07-15 13:09:45 -06:00
Matthew Penner
b6e31096f0 Fix empty request body to wings when decompressing a file 2020-07-15 12:29:52 -06:00
Dane Everitt
1a6669aa5c
Add endpoint support for decompressing files 2020-07-14 21:16:49 -07:00
Dane Everitt
78c76d6df4
Ensure errors from daemon are wrapped correctly 2020-07-14 21:16:38 -07:00
Dane Everitt
6c0d308348
Paginate servers on frontend; closes #2106 2020-07-14 20:48:41 -07:00
Vilhelm Prytz
6df54b7149
Remove unused import
importing SpinnerOverlay is redundant since it is not used
2020-07-14 00:52:35 +02:00
Dane Everitt
03abc1764d
Merge pull request #2173 from pterodactyl/release-automation-fix-archive-1
add .env.example to panel.tar.gz in automated release
2020-07-13 11:39:03 -07:00
Jakob
a8e701daa7
add .env.example to panel.tar.gz in automated release 2020-07-13 19:56:35 +02:00
Matthew Penner
67ba3baff0 Fix lint warnings 2020-07-12 16:47:00 -06:00
Matthew Penner
1d2acbd5b4 Get basic file upload functionality working 2020-07-12 16:42:32 -06:00
Matthew Penner
3ebb6eadbf Add upload button and drag&drop modal 2020-07-12 15:20:37 -06:00
Dane Everitt
17c57d37bc
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-07-12 11:57:50 -07:00
Dane Everitt
90ab185dce
Delete global.d.ts 2020-07-12 11:57:48 -07:00
Dane Everitt
cf366be06c
Merge pull request #2171 from pterodactyl/fix/2165
Fix table search bar not rendering properly across browsers
2020-07-12 11:16:19 -07:00
Dane Everitt
01faa86c73
swr for servers on dash; fix whatever is going on with the spinner 2020-07-12 11:15:54 -07:00
Matthew Penner
f26226e465 Fix table search bar not rendering properly across browsers 2020-07-12 12:15:01 -06:00
Dane Everitt
4082f9e585
Merge pull request #2170 from DarthShmev/patch-4
Update DisableTwoFactorModal.tsx - Fix lint errors
2020-07-12 10:52:43 -07:00
DarthShmev
3dbb297645
Update DisableTwoFactorModal.tsx - Fix lint errors
Whoops! Trailing space after `<Button` on line 60.
2020-07-12 13:51:54 -04:00
Dane Everitt
be1888f8eb
Merge pull request #2168 from DarthShmev/patch-2
Fix Two Factor Authentication Buttons colour and sizing. Closes #2167
2020-07-12 10:44:51 -07:00
Dane Everitt
474df81bf4
Merge pull request #2169 from DarthShmev/patch-3
Update ServerRow.tsx - Fix yarn compile errors.
2020-07-12 10:44:26 -07:00
Dane Everitt
85dcfd4cf5
Always tscheck, ignore eslint in prod 2020-07-12 10:43:37 -07:00
DarthShmev
156391ef6d
Update ServerRow.tsx - Fix yarn compile errors.
"Unlimited" -> 'Unlimited'
Removed extra blank line
2020-07-12 13:41:41 -04:00
DarthShmev
c59698d055
Update colour of disable two factor confirmation button 2020-07-12 01:14:08 -04:00
DarthShmev
3b16a4c5ab
Adjust size of close button for SetupTwoFactorModal 2020-07-12 00:59:34 -04:00
Dane Everitt
0d35ab95fd
Merge pull request #1915 from pterodactyl/feature/server-mounts
Add configurable server mounts
2020-07-11 17:19:25 -07:00
Dane Everitt
831673755a
Merge pull request #2105 from pterodactyl/fix/2071
Fix improper byte conversions
2020-07-11 17:18:45 -07:00
Dane Everitt
45a85938df
Merge pull request #2164 from pterodactyl/fix/2163
Fix 2FA codes missing prepended 0s
2020-07-11 17:18:24 -07:00
Dane Everitt
3df4d433f0
Support checking all 2020-07-11 17:09:54 -07:00
Dane Everitt
cb3288500a
Fix render performance and avoid re-rendering rows constantly 2020-07-11 16:57:30 -07:00
Dane Everitt
325626e46d
Only render the modal when needed 2020-07-11 16:49:46 -07:00
Dane Everitt
80ecd58b30
Mass actions for moving files, mostly working? 2020-07-11 16:47:13 -07:00
Dane Everitt
121f163b81
Handle new file rename/move API 2020-07-11 16:20:42 -07:00
Dane Everitt
2653321fc2
Support renaming multiple files at once 2020-07-11 16:00:30 -07:00
Dane Everitt
43f8ec23b8
Show a message when the spinner is displayed 2020-07-11 15:45:28 -07:00
Dane Everitt
93cab68cc3
Handle mass actions for file deletion 2020-07-11 15:37:59 -07:00
Dane Everitt
82bc9e617b
Add support for compressing items in the file manager 2020-07-11 13:38:49 -07:00
Dane Everitt
cb9eb918b2
Fix dropdown hiding under buttons 2020-07-11 13:19:28 -07:00
Matthew Penner
fbaabc2633
Merge branch 'develop' into fix/2163 2020-07-11 13:12:49 -06:00
Matthew Penner
984deab894 Remove debug log in LoginCheckpointContainer.tsx 2020-07-11 13:10:01 -06:00
Matthew Penner
55a3e76d99 Fix 2FA codes missing prepended 0s 2020-07-11 13:07:54 -06:00
Matthew Penner
295f09ca43
Merge branch 'develop' into feature/server-mounts 2020-07-11 12:29:30 -06:00
Matthew Penner
a9bb692112
Merge branch 'develop' into fix/2071 2020-07-11 12:29:04 -06:00
Dane Everitt
34a46a388f
Update DropdownMenu.tsx 2020-07-11 11:19:38 -07:00
Dane Everitt
c63382532e
Update DropdownMenu.tsx 2020-07-11 11:19:27 -07:00
Dane Everitt
117c1b1778
Support right click to use file context menu 2020-07-11 11:12:59 -07:00
Dane Everitt
6188b9287c
Remove unused code 2020-07-10 23:09:37 -07:00
Dane Everitt
fa9800fa88
Fix some SWR funkiness 2020-07-10 22:53:52 -07:00
Dane Everitt
5da9824fb7
Continue with file manager code cleanup 2020-07-10 22:38:07 -07:00
Dane Everitt
2692e98cd8
Massive speed improvements to filemanager 2020-07-10 22:10:51 -07:00
Dane Everitt
fdec3cea80
Fix nested directories being created incorrectly 2020-07-10 22:10:41 -07:00
Dane Everitt
a430ebb89e
Add test coverage for allocation routes 2020-07-10 21:17:28 -07:00
Dane Everitt
d040b3a242
Merge pull request #2161 from DarthShmev/patch-1
Remove colon from port field on allocations page. Closes #2160
2020-07-10 20:20:20 -07:00
DarthShmev
f2cb41c074
Remove colon from port field on allocations page. Closes #2160 2020-07-10 11:37:55 -04:00
Dane Everitt
4122486468
Fix failing tests (which caught a bug in the new client query) 2020-07-09 21:32:31 -07:00
Dane Everitt
82d7fa1c53
Support setting notes on allocations; closes #561 2020-07-09 21:00:03 -07:00
Dane Everitt
2278927fb6
Update allocations to support ids; protect endpoints; support notes 2020-07-09 20:36:08 -07:00
Dane Everitt
9c3b9a0fae
Fix error handling and simplify showing http errors 2020-07-09 20:00:05 -07:00
Dane Everitt
fc9054312d
Support modifying the primary allocation for a server 2020-07-09 19:56:46 -07:00
Dane Everitt
bfb28f949d
[Breaking] Return server allocations automatically as a relation object 2020-07-09 19:17:24 -07:00
Dane Everitt
5c18fd1f0c
Show allocated ports on settings page 2020-07-08 21:42:37 -07:00
Dane Everitt
7b5139b2b1
[Breaking] Return all server allocations in API response 2020-07-08 21:04:45 -07:00
Dane Everitt
d3c749ac56
Code cleanup & fix frontend searching servers; closes #2100 2020-07-06 21:25:00 -07:00
Dane Everitt
f0e18ba6f7
Code cleanup 2020-07-06 20:05:42 -07:00
Dane Everitt
a2201aaa38
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-07-05 13:56:06 -07:00
Dane Everitt
28992c5e43
Speed up animations throughout the panel 2020-07-05 13:56:04 -07:00
Dane Everitt
fd3385a8d9
Merge pull request #2152 from DarthShmev/patch-1
Fix AuthenticateServerAccess middleware spelling issue.
2020-07-05 12:53:00 -07:00
DarthShmev
06ece0e624
Fix AuthenticateServerAccess middleware spelling issue. 2020-07-05 15:48:02 -04:00
Dane Everitt
30b6ca8807
Merge pull request #2151 from schrej/ci/releases
add release automation
2020-07-05 10:47:14 -07:00
Dane Everitt
cbdede75a7
Fix suspense spinner to make it indistinguishable from other loading 2020-07-04 22:38:34 -07:00
Dane Everitt
db7f3e5fc0
Fix console and charting 2020-07-04 22:36:28 -07:00
Dane Everitt
becad7b3c7
Cut out all of the unused ace editor modes; significantly reduces bundle size 2020-07-04 22:16:06 -07:00
Dane Everitt
e9f553dede
Reduce chart bundle size 2020-07-04 21:57:35 -07:00
Dane Everitt
cbea4078fb
Remove lodash deps to reduce bundle size more 2020-07-04 21:46:49 -07:00
Dane Everitt
0403fa9517
Build fixes 2020-07-04 20:54:33 -07:00
Dane Everitt
7f5ee04978
Remove a hilarious number of unused dependencies 2020-07-04 19:01:49 -07:00
Dane Everitt
732594a164
Remove unused imports 2020-07-04 18:46:09 -07:00
Dane Everitt
c419d15907
eslint cleanup 2020-07-04 18:30:50 -07:00
Dane Everitt
922383e232
Cleanup unused code and simplify webpack 2020-07-04 18:19:46 -07:00
Jakob Schrettenbrunner
2d48781f8e disable ci on master and release branches 2020-07-05 03:13:53 +02:00
Jakob Schrettenbrunner
f24a741cbb add release automation 2020-07-05 03:09:38 +02:00
Dane Everitt
43fbefbdb6
Fix up file manager 2020-07-04 17:57:24 -07:00
Dane Everitt
7e8a5f1271
Update database screens 2020-07-04 17:15:49 -07:00
Dane Everitt
a288374027
Update schedule page 2020-07-04 17:00:19 -07:00
Dane Everitt
f3586056f4
Update users screens 2020-07-04 16:26:07 -07:00
Dane Everitt
d27bda1c74
Get settings page in working order 2020-07-04 15:58:14 -07:00
Dane Everitt
1e163aa792
Get server console page rendering (mostly) correctly 2020-07-04 15:40:41 -07:00
Dane Everitt
43ff67238c
Fix search modal 2020-07-04 15:19:46 -07:00
Dane Everitt
82cf070c06
Fix styling on 2fa codes modal 2020-07-04 15:05:44 -07:00
Dane Everitt
1c97dd4e24
Correctly center the spinner in buttons 2020-07-04 14:34:43 -07:00
Matthew Penner
e4d141fa6f
Merge branch 'develop' into fix/2071 2020-07-04 15:22:25 -06:00
Dane Everitt
8c20158e58
Fix login form 2020-07-04 14:21:28 -07:00
Matthew Penner
29876e023b
Merge branch 'develop' into feature/server-mounts 2020-07-04 15:20:01 -06:00
Dane Everitt
02f83c58f5
Fix unhappy typescript 2020-07-04 13:31:00 -07:00
Dane Everitt
5473edc006
Get spinners back in working order 2020-07-04 12:39:55 -07:00
Dane Everitt
d260200947
Make the modal work again 2020-07-04 10:15:06 -07:00
Dane Everitt
ebe588718c
Fix route transitioning 2020-07-04 09:46:26 -07:00
Dane Everitt
bcf0a0586d
Support textareas and cleanup API page 2020-07-04 09:28:03 -07:00
Dane Everitt
baf35be8e8
Update fields to have a custom component 2020-07-04 09:13:41 -07:00
Dane Everitt
e8755ac598
Kind of get account stuff working; IDE is throwing a fit right now 2020-07-03 15:37:26 -07:00
Dane Everitt
7cea5e630c
Temporary hack to get fonts working 2020-07-03 14:51:40 -07:00
Dane Everitt
d93e804a31
Get server listing design working mostly correct 2020-07-03 14:50:37 -07:00
Dane Everitt
94e3acb9c4
Get compilation back to working 2020-07-03 14:19:05 -07:00
Dane Everitt
2193916fe4
Get basic compiling working with new CSS setup 2020-07-03 13:55:33 -07:00
Dane Everitt
7b75e7a648
Support using recovery tokens during the login process to bypass 2fa; closes #479 2020-07-02 23:01:02 -07:00
Dane Everitt
795e045950
Display generated recovery tokens when enabling two factor 2020-07-02 22:23:25 -07:00
Dane Everitt
c522935403
Fix logic when generating recovery codes and update migration 2020-07-02 22:11:07 -07:00
Dane Everitt
a998b463e3
Generate recovery tokens when enabling 2FA on an account 2020-07-02 21:55:25 -07:00
Dane Everitt
7ee509d8c2
urlencode company name; closes #1690 2020-07-02 21:14:53 -07:00
Dane Everitt
e95a532da9
Make rate limit configurable; closes #1695 2020-07-02 21:11:16 -07:00
Dane Everitt
fde8465f35
Show a better error when JSON data cannot be parsed in the request 2020-06-30 20:05:11 -07:00
Dane Everitt
655a751ef3
Prefix command with sudo 2020-06-29 20:34:58 -07:00
Dane Everitt
2ed3763d21
cs fix 2020-06-28 15:43:44 -07:00
Dane Everitt
6143b656a3
Don't make tests fail just because of a style issue 2020-06-28 15:41:46 -07:00
Dane Everitt
d0a4d477eb
Testing improvements; always run the integration & unit tests even if failure occurred 2020-06-28 15:40:02 -07:00
Dane Everitt
d6b765ed16
Run unit tests as well as integration tests 2020-06-28 15:31:06 -07:00
Dane Everitt
6b1b478cb9
Fix envrionment configuration 2020-06-28 15:26:09 -07:00
Dane Everitt
ce138d07a9
Test fixes 2020-06-28 15:22:39 -07:00
Dane Everitt
faca237049
First pass at getting integration tests running on Github actions 2020-06-28 15:17:36 -07:00
Dane Everitt
b7f5011abd
Update FUNDING.yml 2020-06-28 15:09:17 -07:00
Dane Everitt
d7ab0a356f
Add funding information 2020-06-28 15:04:54 -07:00
Dane Everitt
28c5729e48
Add test coverage for creating tasks 2020-06-28 14:41:22 -07:00
Dane Everitt
b9a451b528
Add test coverage for schedules 2020-06-28 13:50:07 -07:00
Dane Everitt
63bc4080d5
Add test coverage for reinstall & server renaming 2020-06-28 10:40:41 -07:00
Dane Everitt
4cb4dfecc8
Add test coverage for generating JWTs to connect to websocket 2020-06-28 10:16:15 -07:00
Dane Everitt
7546d54b4e
Add test coverage for resource utilization 2020-06-27 12:32:27 -07:00
Dane Everitt
6312b627a3
Add test coverage for power toggling 2020-06-27 12:23:40 -07:00
Dane Everitt
8cfdb3acce
Add test cases for sending a command to a server 2020-06-27 12:04:41 -07:00
Dane Everitt
4cb95d8063
Add test coverage for 2fa 2020-06-27 11:06:35 -07:00
Dane Everitt
fc261fe20c
Add test cases for client servers endpoint 2020-06-27 10:35:02 -07:00
Dane Everitt
4a677aebae
Fix the subtest to actually make enough keys for this to be useful 2020-06-25 22:39:45 -07:00
Dane Everitt
a81f6882f7
Add test coverage for API key generation and deletion 2020-06-25 22:36:58 -07:00
Dane Everitt
7a5f7b99a7
Add integration test covering account endpoint 2020-06-25 22:12:09 -07:00
Dane Everitt
8fb21a5048
Fix error while updating user 2020-06-25 21:42:21 -07:00
Dane Everitt
f0e3f0e474
Make quick iteration testing easier 2020-06-25 21:21:05 -07:00
Dane Everitt
da39d9177e
Fix seed imports 2020-06-25 21:16:59 -07:00
Dane Everitt
b55767426f
Update some server service tests 2020-06-24 22:18:48 -07:00
Dane Everitt
83a59cdf4f
Fix node update tests 2020-06-24 21:54:56 -07:00
Dane Everitt
a5d9faf6b2
Get database unit tests back into passing shape 2020-06-24 20:47:52 -07:00
Dane Everitt
756a21ff04
Remove unused code 2020-06-24 20:38:13 -07:00
Dane Everitt
34916e7caf
Fix job task runner test 2020-06-23 22:10:54 -07:00
Dane Everitt
536180ed0c
Return Http test cases to a passing state 2020-06-23 21:59:37 -07:00
Dane Everitt
eaae74fe33
Fix immediately obvious deprecation notices while running command tests 2020-06-23 21:33:56 -07:00
Dane Everitt
86bc9da893
Add back some dev deps 2020-06-23 21:25:44 -07:00
Dane Everitt
c3aa257a2b
Update dependencies to latest versions 2020-06-23 21:24:37 -07:00
Dane Everitt
ba0c78d2ab
Revert "Add missing testing dependencies"
This reverts commit 6ed35ad83c.
2020-06-23 21:00:00 -07:00
Dane Everitt
066ed5cdda
Don't prevent deletion if a DB host is unreachable and it is a force delete; closes #2085 2020-06-23 20:26:48 -07:00
Dane Everitt
4a0627d182
Don't trigger a 500 error due to unchecked data being inserted; closes #2087
This also clears up allowed values for the disk input and normalizes the messaging between edit and create screens.
2020-06-23 20:24:09 -07:00
Dane Everitt
497f73d820
Only show limit warnings when necessary and relevant 2020-06-23 20:13:58 -07:00
Dane Everitt
b78aa180ea
Prevent creating a new database via the application API if server is at its limit; closes #2129 2020-06-23 20:07:37 -07:00
Dane Everitt
910a48ee8a
Merge pull request #2128 from galeapatrik/develop
Fix #terminal css line formatting
2020-06-23 19:28:24 -07:00
Dane Everitt
1b54112129
Merge pull request #2118 from Sir3lit/stylingchanges
Add scrollbar styling + change syntax background color
2020-06-23 19:27:59 -07:00
Dane Everitt
173b75d44d
Merge pull request #2089 from Sir3lit/changedatabases
Database page edits, Shows message x of x databases when limit > 0, removes create button once limit is reached.
2020-06-23 19:27:00 -07:00
Dane Everitt
24852b8982
Merge pull request #2088 from Sir3lit/changebackup
Backup page edits, Shows client x of x backups when limit > 0. Removes create button if limit is reached or limit is 0
2020-06-23 19:26:43 -07:00
Dane Everitt
3d99b50e15
Merge pull request #2031 from Sir3lit/showunlimited
Show "unlimited" not 0
2020-06-23 19:24:32 -07:00
Dane Everitt
9efac27020
Merge pull request #2063 from Sir3lit/adminoverview
Show Unlimited instead of 0MB for disk space on about page ( Admin Side )
2020-06-23 19:24:10 -07:00
Dane Everitt
76beab0db0
Merge pull request #2131 from vilhelmprytz/update-mumble-egg
Update default value for "MUMBLE_VERSION" to latest version
2020-06-23 19:23:48 -07:00
Dane Everitt
16e14621c8
Better error messaging when server is suspended 2020-06-22 20:22:52 -07:00
Vilhelm Prytz
b5b02207d3
Update default value for MUMBLE_VERSION to latest version 2020-06-22 11:59:18 +02:00
Dane Everitt
693b9eab0c
Fix handling of backup tasks; closes #2067 2020-06-18 21:00:04 -07:00
galeapatrik
89844e0a0d Fix terminal css line formatting 2020-06-17 21:32:33 +02:00
Charles Morgan
ad0fd4bf72
Change syntax background
Matches the background of file editor, keeps lighter border to say defiend.
2020-06-14 03:47:37 -04:00
Charles Morgan
03f37e1fb9
Add global scrollbar styling
Addeding styling to the scroll bar so its not "out of place" from everything else. Open to changes to the style. Anything is better then what it was.

Maybe remove the hover color?
2020-06-14 03:45:56 -04:00
Dane Everitt
364b645b81
Actually link the save action; closes #2092 2020-06-13 10:07:16 -07:00
Dane Everitt
be91913f23
Return a null resource if an allocation has no server; closes #2117 2020-06-13 09:56:40 -07:00
Dane Everitt
b30d7429f3
Decode the filename when rendering it to the screen; closes #2101 2020-06-13 09:49:32 -07:00
Matthew Penner
e903d4cc2a Use 1024 instead of 1000 for byte conversions, rename gloabl.d.ts to global.d.ts 2020-06-10 14:00:43 -06:00
Dane Everitt
050fe307f0
Merge pull request #2098 from pterodactyl/fix-2094
Fix Validable class in Models/ServerTransfer
2020-06-09 20:15:33 -07:00
Matthew Penner
0bec5b8581 Merge branch 'develop' into feature/server-mounts 2020-06-06 11:41:18 -06:00
Matthew Penner
3338c49831 Fix Validable class on ServerTransfer.php 2020-06-06 11:37:43 -06:00
Charles Morgan
5e68290267
Apply same logic to databases
Same logic as PR #2088

Shows using x of x databases.
Once limit is reached the create button is removed
2020-06-02 23:40:40 -04:00
Charles Morgan
2c326dcbe7
Fix condition
Fix condition for using message
2020-06-02 23:30:43 -04:00
Charles Morgan
e3ac933591
Add using x of x when limit > 0
Added a using x of x so the end user knows how many they have and are using.
2020-06-02 23:27:10 -04:00
Charles Morgan
48869d2eda
Remove create backup button if limit = 0, display message none can be created
Removes the create button if the limit is 0, just like it does with the database page
Also once limit is reached the create button is removed from view.
2020-06-02 23:14:16 -04:00
Charles Morgan
4d3563b8e1
Merge branch 'develop' into showunlimited 2020-06-02 11:18:00 -05:00
Dane Everitt
0795f8763d
Fix admins being unable to select permissions for subusers; closes #2055 2020-05-31 11:14:31 -07:00
Dane Everitt
1f943d957a
Merge pull request #2071 from Sir3lit/serverviewchanges
Change to BytesToHuman on server view for limits, to match index page. Changes to CPU/Memory Graph
2020-05-28 19:04:19 -07:00
Charles Morgan
3b42f110fb
Show BytestoHuman value, not server limit, change graph
Changes server view to use bytestohuman to show 10 GB like it does on the main index.

Removed animation duration so the graph dosn't look likes it glitching when a new value is pushed, also made it a little more curved.
2020-05-27 00:00:50 -04:00
Dane Everitt
a26f527f44
Merge pull request #2048 from Sir3lit/fixmaxconn
Save maxconnection value to DB
2020-05-25 15:11:27 -07:00
Dane Everitt
fece67ff50
Create SECURITY.md 2020-05-25 15:08:47 -07:00
Dane Everitt
2d8573a363
Merge pull request #2065 from parkervcp/update/forge_egg
update forge egg
2020-05-24 15:40:50 -07:00
Michael Parker
8bef5078de update forge egg
Updates the forge egg to use the json api from forge to get versions instead of the old way of scraping the site and getting invalid jar files.

Also updates to validate download links.

Allows for setting a specific forge version
2020-05-24 12:23:53 -04:00
Charles Morgan
6c60305617
Show Unlimited instead of 0, admin view
Guess i missed this one when i set everything to show unlimited when its 0 / -1.

Shows Unlimited disk space instead of 0 on admin about page.
2020-05-24 00:57:30 -04:00
Matthew Penner
f255399171 Fix StyleCI issues 2020-05-21 15:16:16 -06:00
Matthew Penner
65393914c3 Send mounts when wings fetches server information, fix issue with mount fields not being updated 2020-05-21 15:14:09 -06:00
Matthew Penner
e601b35f2f Fix even more StyleCI issues 2020-05-21 14:27:23 -06:00
Matthew Penner
0eb29dac9c Add mount_server table, fix wrong field type on other many to many tables, add routes for mounting and unmounting mounts on a server, finish server admin mounts page 2020-05-21 14:23:12 -06:00
Matthew Penner
a0900b8b94 Fix StyleCI issues 2020-05-21 13:22:32 -06:00
Matthew Penner
fa902cc074 Add mounts page to server admin view 2020-05-21 13:19:59 -06:00
Matthew Penner
34f718a8b1 Finish mount admin view page, add unique index to migration 2020-05-20 20:50:56 -06:00
Matthew Penner
0db7debb46 Add mount update and deletion services, add MountController@update and MountController@delete 2020-05-20 19:35:30 -06:00
Matthew Penner
77150b2551 Add increment id to mount, add basic mount view page 2020-05-20 19:17:35 -06:00
Matthew Penner
976b669059 Make StyleCI happy 2020-05-20 18:57:30 -06:00
Matthew Penner
a4af8ec977 Add the ability to create mounts 2020-05-20 18:55:59 -06:00
Matthew Penner
a750362e5a Move MountController.php 2020-05-20 18:45:00 -06:00
Matthew Penner
00d1b5861a Properly setup Mount model, add database migration, get mount admin page added 2020-05-20 18:07:56 -06:00
Matthew Penner
59a150148a feature/server-mounts initial commit 2020-05-20 17:29:03 -06:00
Charles Morgan
4ab32498d4
Save request to DB
Fixes #2047
2020-05-19 04:14:36 -04:00
Charles Morgan
917a1e8a87
Update ServerConsole.tsx 2020-05-18 13:33:02 -04:00
Dane Everitt
5dbcddc862
Decode URL fragments correctly before sending to the daemon; ref #2040 ref #2038 2020-05-17 15:07:32 -07:00
Dane Everitt
57f7aa1638
Remove unused routes; closes #2039 2020-05-17 14:20:43 -07:00
Charles Morgan
3df0febd0c
Less Lines = Better
Same logic, just more compact and react like
2020-05-17 00:34:25 -04:00
Daniel Blittschau
826258787b
Fix outdated AdminLTE link in README.md 2020-05-16 16:46:07 -05:00
Charles Morgan
564933fcb1
Show "unlimited" not 0
Shows unlimited for resources if they're set to "0"
Im sure we could also just remove the "of {limit}" part if its unlimited? Dane Advise

Im sure there is a 100x better way of doing this? Dane please advise.
2020-05-16 03:16:06 -04:00
Dane Everitt
6e588b37d3
Merge pull request #2018 from Sir3lit/morecss
CSS Changes
2020-05-12 19:34:23 -07:00
Charles Morgan
46285fefd7
CSS Changes
More CSS Changes....

Server overview page now looks more..... fluid
Boxes have their correct color top colors back, When admin side was changed to dark theme all by the yellow was changed to a single color, this is reverted.
Node overview page uses blue over gray box for total servers.
Lightened the text color on the side bar
Removed delete button for allocations that are assigned.
Changes Node configuration box to not hurt eyes
2020-05-10 18:09:01 -04:00
Dane Everitt
086abb2a55
Actually delete the backup in the DB 2020-05-09 20:01:45 -07:00
Dane Everitt
225ef2917a
Support downloading and deleting S3 backups 2020-05-09 19:43:58 -07:00
Dane Everitt
d4e037db9c
Don't abort deleting a backup if the daemon cannot find it 2020-05-09 19:19:45 -07:00
Dane Everitt
52966ede89
Clean this code up, just use the updated model's FQDN; references #1931 2020-05-09 16:26:37 -07:00
Dane Everitt
33a7762152
Fix connection issues when changing node FQDN; closes #1931 2020-05-09 16:25:22 -07:00
Dane Everitt
86dbb141f4
Make this helper text more correct 2020-05-09 15:45:38 -07:00
Dane Everitt
3b2e2c63c6
Only show relevant configuration; update default path to be what the daemon expects 2020-05-09 15:44:13 -07:00
Dane Everitt
a342df8c13
Merge pull request #2010 from Sir3lit/patch1
Remove timezone from config
2020-05-09 15:40:27 -07:00
Dane Everitt
b94781e40e
Merge pull request #2008 from Sir3lit/emailfix
Fix Subuser welcome email
2020-05-09 14:47:47 -07:00
Dane Everitt
8cb401760f
Merge pull request #2012 from devfrey/develop
Add return type hints and missing test dependencies
2020-05-09 14:19:26 -07:00
devfrey
6ed35ad83c Add missing testing dependencies 2020-05-09 18:09:50 +02:00
devfrey
2fecba2500 Fix tests by adding required return type hints 2020-05-09 18:00:52 +02:00
Charles Morgan
c3da5f0c0c
Update Node.php
No longer needed in wings config.
2020-05-09 01:03:36 -04:00
Dane Everitt
6967b76ae6
Remove any confusing legacy sizing files; everything in the panel is true MB (1000) not MiB 2020-05-08 21:13:39 -07:00
Charles Morgan
5eed8b1fe9
Fix Subuser welcome email
When calling `route('server.index')` it appends `/api/servers`

Not sure if this is a proper solution or not, but it fixes the issue.
2020-05-08 19:31:20 -04:00
Dane Everitt
2d95204e9a
Pass a value for skipping scripts correctly; closes #1991 2020-05-07 20:46:49 -07:00
Dane Everitt
49dee28eb8
Support using pipe characters within egg validation rules; closes #1960 2020-05-07 20:40:19 -07:00
Dane Everitt
69eb33fb89
closes #1787 2020-05-07 20:24:28 -07:00
Dane Everitt
c6d8bed095
close #1801 2020-05-07 20:20:20 -07:00
Dane Everitt
41845ffdad
Backups cannot be nullable 2020-05-04 19:06:20 -07:00
Dane Everitt
c4e9c0a4ba
Better S3 backup generation support 2020-05-03 20:49:09 -07:00
Dane Everitt
3e04540c38
Merge pull request #1990 from zKoz210/patch-4
fixed typo, close #1986
2020-05-02 19:04:34 -07:00
Oreo Oreoniv
2dbfe232f1
fixed typo, close #1986 2020-05-03 00:38:26 +03:00
Dane Everitt
ff1a1cd5fc
Use logical disk names... 2020-04-26 16:45:51 -07:00
Dane Everitt
53b451e8bf
Remove unused code 2020-04-26 16:20:51 -07:00
Dane Everitt
b774622faa
Add base support for AWS/Wings backup adapters 2020-04-26 16:07:36 -07:00
Dane Everitt
194688389d
Unused 2020-04-26 14:33:14 -07:00
Dane Everitt
6056b6f45d
Show console when an admin is viewing an installing server 2020-04-26 13:21:39 -07:00
Dane Everitt
446dc8b33d
Block creation of backups if it would put the server over it's limit 2020-04-26 12:21:14 -07:00
Dane Everitt
f1c3762f4d
Add base support for definining the number of backups that can be created for a server 2020-04-26 12:12:29 -07:00
Dane Everitt
bed51b5871
Don't flash progress indicators when it is a failed request. 2020-04-26 11:19:40 -07:00
Dane Everitt
d6bf2e0ce9
Merge pull request #1978 from Sir3lit/patch-4
Update 2020_04_22_055500_add_max_connections_column.php
2020-04-26 10:34:22 -07:00
Charles Morgan
941692a060
Update 2020_04_22_055500_add_max_connections_column.php
Fix migration, not sure how I messed that up....... but 👌
2020-04-26 11:00:38 -04:00
Dane Everitt
e2e82b9bf3
Little bit better UI for suspended 2020-04-25 17:59:46 -07:00
Dane Everitt
c4f4f1f5c8
Don't show an error in the listing if the server is still installing or suspended 2020-04-25 17:58:09 -07:00
Dane Everitt
f45c03a449
Support filtering to own/all servers if user is an admin 2020-04-25 17:52:32 -07:00
Dane Everitt
67c6be9f6f
Make switches not reliant on Formik 2020-04-25 17:37:03 -07:00
Dane Everitt
a10191a120
How'd you get in there 2020-04-25 13:03:37 -07:00
Dane Everitt
9eb31a16d9
Fix 2FA handling; closes #1962 2020-04-25 13:01:16 -07:00
Dane Everitt
2cf1c7f712
Fix handling of SFTP authorization; closes #1972 2020-04-25 11:48:49 -07:00
Dane Everitt
72ecac5236
Merge pull request #1963 from Sir3lit/maxconn
Add Max Concurrent Connections for database users
2020-04-25 11:01:01 -07:00
Charles Morgan
56a0989176 Remove from end user
Removed max connections from the end user view.
2020-04-24 10:17:31 -04:00
Dane Everitt
0385d2a05c
Merge pull request #1939 from Sir3lit/optionaldesc
Allow description fields to be optional
2020-04-23 20:37:02 -07:00
Dane Everitt
0ccfdd722c
Merge pull request #1924 from Sir3lit/adminchanges
Update Admin Overview for server
2020-04-23 20:36:43 -07:00
Dane Everitt
6c8711a227
Merge pull request #1946 from Sir3lit/cssfixes
Update Admin CSS /  CSS changes
2020-04-23 20:36:13 -07:00
Dane Everitt
d97bd2ec7b
Merge pull request #1953 from parkervcp/update/docker-compose
update docker-compose file
2020-04-23 20:35:58 -07:00
Charles Morgan
e3303f7a60 Change validation rule
Change validation rule to
2020-04-23 14:59:47 -04:00
Charles Morgan
82dd7dc8e3 Allow Null = 0
Allow Value to be nullable, will autofill 0 if value is null or 0, to facilitate "unlimited" connections.
2020-04-23 10:45:44 -04:00
AreYouScared
0ecfb40f5e Add variable to API endpoint
Allow API to retrun max_connections for frontend database page
2020-04-22 06:17:26 -04:00
AreYouScared
f0e4764a11 Add Max Concurrent Connections for database users
Closes #1849

Allows database users to be limited to a number of concurrent connections to prevent one user from connecting hundreds of time and bottlenecking the MySQL server.
2020-04-22 06:00:04 -04:00
Dane Everitt
2c3a9228ec
Merge pull request #1954 from DefinitelyNotJosh/patch-2
Update ReinstallServerBox.tsx
2020-04-20 11:22:05 -07:00
Josh Miles
f3e693efb8
Update ReinstallServerBox.tsx
Added space.
2020-04-20 10:47:48 +01:00
Dane Everitt
0d57e591cb
Pteroignore details 2020-04-19 20:04:39 -07:00
Dane Everitt
973591d86e
Add basic support for backups via the scheduled tasks system 2020-04-19 19:43:41 -07:00
Michael Parker
2721fd3eb5 update docker-compose file
Adds restarting for the containers.
2020-04-19 22:28:11 -04:00
Dane Everitt
7a3263f57b
Fix start server tasking; closes #1928 2020-04-19 12:15:10 -07:00
Dane Everitt
a1c3730861
Update frontend to only allow selection of valid permissions for subusers 2020-04-19 11:58:26 -07:00
AreYouScared
c54cbe6638 Update Admin CSS / Few css fixes
Changed `code` color to be a little lighter, more contrast / easier to read (From #999 to #c3c3c3)
Added Readonly style, was white box with grey letters. Changes to Dark grey box and white letters.
Changed cursor for disabled / read-only to `not-allowed` instead of `text`
Closes #1918 -> Dropdown text was grey with a grey background.
Added Green and Yellow Text colors
Added Text-Danger
Changed Link color, to be a tad lighter
Added well/well-sm/well-lg to pterodactyl.css
Changed well to match the dark theme.
Hovering over Start / Restart show respective colors Green / Blue
2020-04-19 08:30:52 -04:00
Dane Everitt
00b0d30c60
Fix handling for backups; correctly send along ignored files & directories 2020-04-18 23:26:59 -07:00
Dane Everitt
b6a0cca0f9
Merge pull request #1940 from Sir3lit/patch-3
Update .travis.yml
2020-04-18 10:43:46 -07:00
AreYouScared
e428de5649
Update .travis.yml
Remove discord webhook as its no longer used.
Use Php 7.4, maybe it won't always fail :P
2020-04-17 22:18:44 -04:00
AreYouScared
d55af822e3 Typo
Removed un-neede |
2020-04-17 20:55:01 -04:00
AreYouScared
21491e3aaa Allow descrition field to be optional
Allows for Nest, Node, Location and Egg description fields to be blank / nullable.
Removed "required" wording next to them aswell
2020-04-17 20:52:40 -04:00
Dane Everitt
90e2d0d72a
Fix positioning of the loading bar when logging in 2020-04-17 14:44:18 -07:00
Dane Everitt
c43bf39cfd
Fix login screen 404 2020-04-17 14:43:03 -07:00
Dane Everitt
d426887769
Adjust language for error message 2020-04-17 13:12:40 -07:00
Dane Everitt
5252f3f9d3
Show error message when attempting to connect to a websocket 2020-04-17 12:41:47 -07:00
Dane Everitt
41a94c66e4
Show an error box if we couldn't fetch details about the instance 2020-04-17 12:03:16 -07:00
Dane Everitt
004a5692cf
Nicer errors when managing files 2020-04-17 11:45:20 -07:00
Dane Everitt
88374de38c
Display a nicer error message when a file cannot be opened 2020-04-17 11:27:52 -07:00
Dane Everitt
e6a61fbe9b
Update views to support a more logical container 2020-04-17 11:17:01 -07:00
Dane Everitt
e044e8db1c
Show a nicer error message when server is installing 2020-04-17 11:07:32 -07:00
Dane Everitt
1aa3e0fb63
Set bar completed when a request fails 2020-04-17 10:26:36 -07:00
Dane Everitt
81f7734df2
Update endpoints for managing backups 2020-04-17 10:21:51 -07:00
Dane Everitt
0a20c6b857
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-04-17 10:21:20 -07:00
Dane Everitt
e969344f3b
Fix display of navbar links to admins, closes #1920 2020-04-17 10:21:15 -07:00
Dane Everitt
b16d152574
Merge pull request #1934 from Sir3lit/uuidfix
Fixed UUID on node creation
2020-04-17 09:41:00 -07:00
AreYouScared
93a62ac637 Fixed UUID on node creation
Fixed nodes not getting a UUID during creation causing a 500

Closes https://github.com/pterodactyl/panel/issues/1930
2020-04-16 20:47:53 -04:00
Dane Everitt
b95ec0ca41
Merge pull request #1925 from Sir3lit/patch-1
Update ServerConsole.tsx
2020-04-13 20:38:39 -07:00
AreYouScared
4fee35e7e8
Update ServerConsole.tsx
Added spaces to be properly spaced apart from current usage
2020-04-13 18:40:04 -04:00
AreYouScared
0cad2b9362 Update Admin Overview for server
Changes CPU Threads show Not Set instead of n/a
Changes 0% -> Unlimited, when cpu is set to 0(unlimited)
Changes 0MB -> Unlimited, when memory is set to 0(unlimited)
Changes 0MB Swap -> Not Set
Changes -1 Swap -> Unlimited
Changes Name -> Server Name
Changes Service -> Current Egg
2020-04-13 18:11:45 -04:00
Dane Everitt
4193c5f664
Return the wings version from the CDN 2020-04-12 18:14:59 -07:00
Dane Everitt
b0f518ee40
Merge pull request #1910 from LeCodeCo/patch-1
Match admin design to frontend colour schene
2020-04-12 17:49:36 -07:00
Dane Everitt
7700919d21
Merge branch 'develop' into patch-1 2020-04-12 17:49:16 -07:00
Dane Everitt
5e6d423017
Merge pull request #1917 from parkervcp/update/dockerfile
add docker configs for 0.8
2020-04-12 17:49:05 -07:00
Dane Everitt
fda88940f7
Fix up node autodeployment 2020-04-12 17:20:09 -07:00
Dane Everitt
fc31d6347e
Correctly reset server state when the URL is changed 2020-04-12 16:19:43 -07:00
Dane Everitt
b9239594ca
Don't flood the progress bars when listing resources 2020-04-12 16:08:29 -07:00
Dane Everitt
7115209b60
Hide statistics page for now 2020-04-12 16:03:41 -07:00
Dane Everitt
07381da8fb
This warning is no longer true 2020-04-12 16:02:09 -07:00
Dane Everitt
3c8e9ebfa5
Update bungeecord egg 2020-04-12 16:01:20 -07:00
Dane Everitt
df140184e6
Correctly return the updated key 2020-04-12 15:56:50 -07:00
Michael Parker
de4543c79a remove vagrant files 2020-04-12 16:09:09 -04:00
Michael Parker
05004a7a50 move docker foler
move docker folder from .dev/

update Dockerfile and entrypoint scripts to match
2020-04-12 16:02:48 -04:00
Dane Everitt
4ed7b26f89
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-04-12 12:22:53 -07:00
Dane Everitt
eafb0c061d
Return a less obtuse structure for config file editing 2020-04-12 12:22:50 -07:00
Dane Everitt
80bf6ba573
Merge pull request #1766 from parkervcp/update/steamcmd
Update steamcmd install scripts
2020-04-12 10:19:50 -07:00
Dane Everitt
72c144e309
Merge pull request #1909 from pterodactyl/enhancement/new-server-admin
Enhancements to new server admin
2020-04-12 10:13:03 -07:00
Dane Everitt
b2847eb0e0
Merge pull request #1911 from pterodactyl/fix/encrypter
Fix encryption issue when creating new nodes
2020-04-12 10:12:43 -07:00
Dane Everitt
fc2a6ec8a8
Merge pull request #1912 from Sir3lit/patch-1
Move threads column to the
2020-04-12 10:12:19 -07:00
Dane Everitt
d6ac0c3202
Merge pull request #1913 from Sir3lit/patch2
Add Disk display to console view
2020-04-12 10:11:53 -07:00
Matthew Penner
ea8f7bb5b6
Merge branch 'develop' into enhancement/new-server-admin 2020-04-11 23:04:48 -06:00
AreYouScared
451833cb8c Add Disk User
Added Disk usage to console page, matches same inforamtion on overview page.
2020-04-11 23:57:49 -04:00
AreYouScared
01142d9a25
Move threads column to the
Put column after CPU, not at the end.
2020-04-11 23:26:23 -04:00
Matthew Penner
a4d49ebe31 Fix encryption issue when creating new nodes 2020-04-11 20:49:56 -06:00
Michael Parker
f59a87aca4 Merge remote-tracking branch 'origin/develop' into develop 2020-04-11 21:48:36 -04:00
Michael Parker
61c2a491fc add packages for yarn 2020-04-11 21:48:31 -04:00
Michael Parker
656d306e24 update docker stuff 2020-04-11 21:48:31 -04:00
Michael Parker
3090c99a62 update docker stuff 2020-04-11 21:48:31 -04:00
Michael Parker
744ad99283 add packages for yarn 2020-04-11 21:48:22 -04:00
Rihan // CodeCo
006031f4d5
Fix databases dropdown being wrong unthemed 2020-04-12 02:42:57 +01:00
Rihan // CodeCo
689b0ef056
Match admin design to frontend colour schene
https://file.properties/host/uZfyNTxQ.png
2020-04-12 02:35:30 +01:00
Dane Everitt
3d224993cd
Fix logic for parsing egg data to not explode with nested objects 2020-04-11 18:27:47 -07:00
Michael Parker
55c8ddd5f2 Merge remote-tracking branch 'origin/develop' into develop 2020-04-11 21:11:34 -04:00
Michael Parker
8fdee3554c update docker stuff 2020-04-11 21:11:21 -04:00
Michael Parker
1995c2425e update docker stuff 2020-04-11 21:01:42 -04:00
Dane Everitt
1327bbbbe5
Fix logic to update a daemon's configuration 2020-04-11 16:33:15 -07:00
Dane Everitt
60f6e86b8b
Remove all of the old references to unused interfaces outside the test code 2020-04-11 15:35:32 -07:00
Matthew Penner
4d833af5f4 Fix script paths in layouts 2020-04-11 14:49:40 -06:00
Matthew Penner
a7dab69711 Persist service variables 2020-04-11 14:46:30 -06:00
Matthew Penner
dec6868a55 Persist nest_id, egg_id, pack_id 2020-04-11 14:14:05 -06:00
Matthew Penner
432e28b6bb Fix all StyleCI errors and probably break everything in the process 2020-04-11 14:07:40 -06:00
Matthew Penner
b5e50719ac Remove old Theme::js calls in blade layouts. Persist checkboxes, Server Owner, Node, Default Allocation, and Additional Allocations on servers/new.blade.php 2020-04-11 13:56:03 -06:00
Matthew Penner
fb96d9468e Prevent primary allocation from being an additional allocation at the same time when creating a server 2020-04-11 12:35:27 -06:00
Dane Everitt
25f18dccdc
Merge pull request #1903 from matthewpi/enhancement/wings-improved-server-loading
[Wings] Improved Server Loading
2020-04-10 17:37:04 -07:00
Matthew Penner
658a959e5d Fix trailing comma in DaemonAuthenticate.php, change ServerDetailsController.php to use node authentication 2020-04-10 17:54:50 -06:00
Matthew Penner
a37e30cd49
Merge branch 'develop' into enhancement/wings-improved-server-loading 2020-04-10 16:55:22 -06:00
Dane Everitt
c8a78c688f
Apply unique key after assigning all of the values 2020-04-10 15:54:28 -07:00
Matthew Penner
1564f38d5c
Merge branch 'develop' into enhancement/wings-improved-server-loading 2020-04-10 16:53:38 -06:00
Dane Everitt
2532a73425
Don't throw errors if bad data is sent in the header 2020-04-10 15:53:19 -07:00
Matthew Penner
0c12b78772
Merge branch 'develop' into enhancement/wings-improved-server-loading 2020-04-10 16:29:03 -06:00
Dane Everitt
2b1585a2ba
Merge pull request #1905 from matthewpi/issues/1902
Fixes stupid query and issue #1902 🤬
2020-04-10 15:25:17 -07:00
Matthew Penner
c9ad4ea811
Merge branch 'develop' into issues/1902 2020-04-10 16:23:58 -06:00
Matthew Penner
94d46affb8
Merge branch 'develop' into enhancement/wings-improved-server-loading 2020-04-10 16:23:46 -06:00
Dane Everitt
7557dddf49
Store node daemon tokens in an encrypted manner 2020-04-10 15:15:38 -07:00
Dane Everitt
2ac82af25a
Fix migration to not require beta versions of MariaDB 2020-04-10 14:09:57 -07:00
Dane Everitt
568328596a
Cleanup migration 2020-04-10 14:02:16 -07:00
Dane Everitt
fd8b7182e7
Merge migrations 2020-04-10 14:01:36 -07:00
Dane Everitt
b72a770ec9
Don't execute unnecessary HTTP requests when browing a file directory 2020-04-10 13:57:24 -07:00
Dane Everitt
76300209f1
Correctly clear the interval for resource use checking 2020-04-10 12:49:09 -07:00
Matthew Penner
c46ece0d6b Fix stupid query that makes me want to punch my monitor 2020-04-10 13:47:08 -06:00
Dane Everitt
d3a06e1ca8
Add progress bar to top of page for nicer loading indicator styles 2020-04-10 12:41:08 -07:00
Matthew Penner
87e95f4195 Fix StyleCI 2020-04-10 13:08:43 -06:00
Matthew Penner
3163517f8d Add linebreak because code style is important 2020-04-10 13:06:10 -06:00
Matthew Penner
42fb9fdbd9 Add the ability for a node to fetch a list of all servers it has been assigned 2020-04-10 13:04:11 -06:00
Dane Everitt
708c15eba8
Make database rows use context better 2020-04-10 10:56:25 -07:00
Dane Everitt
0ebf842757
Clean up most of the schedules code to use server context 2020-04-10 10:46:00 -07:00
Dane Everitt
07d19ad326
Code cleanup and formatting 2020-04-10 10:11:15 -07:00
Dane Everitt
4e2602e1e7
Merge pull request #1898 from Sir3lit/fixformatting
New server formatting
2020-04-10 09:56:26 -07:00
Dane Everitt
558f7ba6dd
Merge pull request #1901 from pterodactyl/feature/auto-deploy
re-enable auto-deploy daemon endpoint
2020-04-10 09:54:11 -07:00
Jakob Schrettenbrunner
a1f4baa800 re-enable auto-deploy daemon endpoint 2020-04-10 17:38:20 +02:00
Dane Everitt
06707fd33a
Better throttling of backup generation 2020-04-09 22:35:38 -07:00
Dane Everitt
63d8cd4f3f
Throttle backups to two per 10 minute interval 2020-04-09 22:09:01 -07:00
Dane Everitt
c1a7e4ebe1
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-04-09 22:08:16 -07:00
Dane Everitt
9ba6aaebde
Move actions into context menu, add support for deleting a backup 2020-04-09 22:08:09 -07:00
AreYouScared
7daf6e2e93 Uniformity is Key
Updated logical order to match new server page on build and overview page.
2020-04-10 00:54:40 -04:00
AreYouScared
411ed41582 New server formatting
Fixed auto-sizing for resource mangemnet
Moved them in logical order(CPU->RAM->Disk) with advanced stuff to the right.
2020-04-09 23:46:12 -04:00
Dane Everitt
323c3e4689
Merge pull request #1893 from pterodactyl/feature/issue-1891
Change to new password and fix #1891
2020-04-09 20:16:40 -07:00
Dane Everitt
2da0d8b083
Merge pull request #1897 from Sir3lit/fixCR
Fixed Copyright year
2020-04-09 20:16:28 -07:00
AreYouScared
27a92d6f45 Fixed Copyright year 2020-04-09 23:00:59 -04:00
Lance Pioch
53c7ec9126
Update UpdatePasswordRequest.php 2020-04-08 03:00:03 -04:00
Lance Pioch
78e03cb9b2
Update AccountController.php 2020-04-08 02:59:38 -04:00
Lance Pioch
f9e6df5d71
Change to new password instead 2020-04-07 19:25:11 -04:00
Lance Pioch
d6640eacec
Require new password 2020-04-07 19:22:50 -04:00
Dane Everitt
2eb6ab4d63
Store backups in server state 2020-04-06 22:25:54 -07:00
Dane Everitt
f9878d842c
Fix error handling for large files (and endpoints called as non-json) 2020-04-06 21:59:14 -07:00
Dane Everitt
7f2b477538
Automatically update the backup view when the backup is completed 2020-04-06 21:22:57 -07:00
Dane Everitt
b1e7e0b8b0
Simplify handling of permissions for websocket, only send permissions the user actually has 2020-04-06 21:03:00 -07:00
Dane Everitt
a924eb56cc
Fix file and backup downloading to use URL returned by server 2020-04-06 20:28:14 -07:00
Dane Everitt
4b19e65eb8
Merge pull request #1864 from KieronWiltshire/feature/cross-env
Added cross-env to package.json
2020-04-05 11:22:31 -07:00
Dane Everitt
0a53e75fd1
Merge branch 'develop' into feature/cross-env 2020-04-05 11:14:22 -07:00
Dane Everitt
536f056f2c
Merge pull request #1889 from matthewpi/feature/server-transfers-actually
Server Transfers (pterodactyl/panel#18)
2020-04-05 11:07:07 -07:00
Dane Everitt
e7784bf024
Merge branch 'develop' into feature/server-transfers-actually 2020-04-05 11:06:40 -07:00
Dane Everitt
7b69b4b824
Hit the daemon endpoints to actually generate a backup 2020-04-04 20:09:33 -07:00
Matthew Penner
2f506d564b
Merge branch 'develop' into feature/server-transfers-actually 2020-04-04 20:56:37 -06:00
Dane Everitt
be05d2df81
Add support for generating a signed URL for downloading a file from the daemon 2020-04-04 19:54:59 -07:00
Matthew Penner
c9c98b87a6 Fix issue with listing users due to removed 'subuserOf' method 2020-04-04 18:41:24 -06:00
Matthew Penner
b395440e4e Check that the selected daemon is online for a transfer, delete the server from the old node when a transfer is successful 2020-04-04 18:28:09 -06:00
Matthew Penner
7b518325c4
Merge branch 'develop' into feature/server-transfers-actually 2020-04-04 17:09:39 -06:00
Dane Everitt
15b436d26e
Add endpoints required to store the results of a backup 2020-04-04 16:07:09 -07:00
Matthew Penner
fd4de9168a
Merge branch 'develop' into feature/server-transfers-actually 2020-04-04 16:28:02 -06:00
Matthew Penner
5c7c1f60cf Fix StyleCI issues #2 2020-04-04 16:25:41 -06:00
Matthew Penner
142bf16aae Fix StyleCI issues 2020-04-04 16:24:58 -06:00
Matthew Penner
454ce6ce45 Add successful column to server_transfers table, get server transfers working properly :) 2020-04-04 16:16:18 -06:00
Dane Everitt
ad9194a65c
Build out frontend for viewing server backups 2020-04-04 13:24:03 -07:00
Matthew Penner
6ba6c34252 Add ServerTransfer relation in Models/Server.php, notify the new daemon about the incoming server transfer 2020-04-04 14:10:18 -06:00
Dane Everitt
44ff99e83d
Use correct time, not an empty time 2020-04-04 12:31:21 -07:00
Dane Everitt
875358a106
Not a required field 2020-04-04 12:30:45 -07:00
Dane Everitt
25b0e86730
backup names don't actually matter all that much, they don't get used as file names 2020-04-04 12:30:29 -07:00
Dane Everitt
d27f0c6f2a
Basic backend support to at least store a backup model in the DB 2020-04-04 12:26:39 -07:00
Dane Everitt
6d426e45d9
Whoops, remove this too 2020-04-04 11:57:50 -07:00
Dane Everitt
5f42325284
Don't trigger a recursive nesting call 2020-04-04 11:37:10 -07:00
Dane Everitt
9991989f89
Very basic implemention of frontend logic required to display backups and create a new one 2020-04-04 10:59:25 -07:00
Matthew Penner
86b7b6ecc3 Add Models/ServerTransfer.php 2020-04-04 11:37:44 -06:00
Matthew Penner
5007ce0b1c Get to the point where we can start notifying the other daemon, remove TransferJob.php, add DaemonTransferRepository.php 2020-04-04 00:50:12 -06:00
Dane Everitt
17ec4efd3b
Add base migration and model for server backups 2020-04-03 23:40:20 -07:00
Dane Everitt
f51d65229b
Add support for immutable carbon dates in models 2020-04-03 23:22:35 -07:00
Dane Everitt
6d1226a0c1
Merge pull request #1887 from matthewpi/feature/server-transfers
Add migration and validation rules for 'threads' column, fixes other errors on nest/egg pages
2020-04-03 22:54:29 -07:00
Dane Everitt
9d0262e7a1
Update index.blade.php 2020-04-03 22:53:49 -07:00
Dane Everitt
0dbf6b51b5
Add very simple search support to pages, togglable with "k" 2020-04-03 22:39:53 -07:00
Matthew Penner
a2eab3ca43 Add ui elements for handling server transfers, add TransferJob.php and TransferService.php 2020-04-03 21:45:37 -06:00
Matthew Penner
49f0421e90 Fix issue with regex rule on 'threads' column, fix StyleCI issues on migration 2020-04-03 18:59:47 -06:00
Matthew Penner
829f05a2c7 Add migration for 'threads' column, fix errors on some admin pages, add validation rule for 'threads' column 2020-04-03 18:50:07 -06:00
Dane Everitt
807cd815ea
Fix modal layout positioning 2020-04-03 16:39:55 -07:00
Dane Everitt
85e3945cd7
Add support for client-side server reinstallation 2020-04-03 14:43:24 -07:00
Dane Everitt
86de7372a8
Add notes about IO/CPU Threads 2020-04-03 14:43:15 -07:00
Dane Everitt
d77184aeb8
Merge pull request #1882 from Sir3lit/cputhreads
Add CPU Thread assignments
2020-04-03 13:48:18 -07:00
Dane Everitt
78d6e59fc5
Merge branch 'develop' into cputhreads 2020-04-03 13:48:06 -07:00
Dane Everitt
7d45379f31
Add back support for reinstalling a server 2020-04-03 13:46:45 -07:00
AreYouScared
dfefd8845b
Fixed textboxes (#1886)
Text boxes on the user view page were set to readonly not allowing admins to change user values

Co-Authored-By: Lance Pioch <me@lance.sh>
2020-04-03 13:46:24 -07:00
Dane Everitt
37c7ba3365
Update dependencies 2020-04-03 12:58:20 -07:00
Dane Everitt
7f0a05c192
UPdate remainder of screens with basic permissions checking 2020-03-29 22:20:27 -07:00
Dane Everitt
171b21e7ee
Add permissions handling to the console; remove kill permission (wrapped in with stop) 2020-03-29 22:12:50 -07:00
Dane Everitt
79095b526c
Add permissions checking to the settings page 2020-03-29 22:05:30 -07:00
Dane Everitt
3df134b558
Make sizing across margins/padding/width/height the same 2020-03-29 22:04:38 -07:00
Dane Everitt
5d5a5c2afc
Fix array fill logicl; allow matching on any permissions 2020-03-29 21:52:18 -07:00
Dane Everitt
9b4f2deb78
Update permissions handling for file manager; ensure errors are shown 2020-03-29 21:42:02 -07:00
Dane Everitt
9347ee8d78
Fix permissions handling logic for admins/owners 2020-03-29 21:30:33 -07:00
Dane Everitt
8bc81c8c4b
Update permissions checking code 2020-03-29 14:19:17 -07:00
AreYouScared
71292a7642 Respond with thread limit
Retrun the cpu threads in the api resposne
2020-03-29 17:12:35 -04:00
AreYouScared
5f90e5f104 Update Server.php
Fails rules, will look at later in time.
2020-03-29 17:00:50 -04:00
AreYouScared
b351c07d34 Fix server transformer
Properly pass the value to wings
2020-03-29 16:55:06 -04:00
Dane Everitt
2e9d327dfc
Fix eslint errors 2020-03-29 12:38:08 -07:00
AreYouScared
2561e3e8d5 Add CPU Thread assignments
Added CPU Thread assignments for each server
2020-03-29 14:41:55 -04:00
Dane Everitt
ab4c4e7e9e
Add basic permissions checking logic to frontend 2020-03-28 17:25:04 -07:00
Dane Everitt
7e0ac2c311
Show error message when attempting to change a server's name 2020-03-28 16:47:32 -07:00
Dane Everitt
1f92a7de33
Authenticate that the request is coming from someone that should even know about the server 2020-03-28 16:23:18 -07:00
Dane Everitt
5717a705a8
Fix authorization checking for subusers 2020-03-28 16:18:56 -07:00
Dane Everitt
e4e5dea6b8
Fix API key creation logic 2020-03-28 16:06:36 -07:00
Dane Everitt
ff49165447
Unnecessary return 2020-03-28 15:43:06 -07:00
Dane Everitt
7244cdbf5d
Fix up authentication flows to use formik correctly 2020-03-28 15:42:53 -07:00
Dane Everitt
cb945b1f13
Fix permissions handling; do not allow a subuser to assign permissions they do not have 2020-03-27 16:57:49 -07:00
Dane Everitt
39f79a8f3c
Finish cleaning up subuser view 2020-03-27 16:42:27 -07:00
Dane Everitt
ee81de6534
Add support for editing a subuser 2020-03-27 15:40:24 -07:00
Dane Everitt
1270e51248
Add support for deleting a subuser from a server 2020-03-27 15:32:33 -07:00
Dane Everitt
a6f46d36ba
Implement basic code for creating/updating a subuser 2020-03-27 14:23:13 -07:00
Dane Everitt
51c5cf4dbb
Get basic modal view for editing/creating a new subuser working 2020-03-25 21:58:37 -07:00
Dane Everitt
fcdb7cd2d5
Merge branch 'develop' into feature/cross-env 2020-03-23 10:03:17 -07:00
Kieron Wiltshire
7d441f53b3 added cross-env to allow building the application for production across multiple operating systems 2020-03-23 02:42:04 +00:00
Dane Everitt
8d52e2e1a7
Finalize API key management for accounts 2020-03-22 19:10:49 -07:00
Dane Everitt
3ef649d984
Display the API keys 2020-03-22 18:25:29 -07:00
Dane Everitt
933a4733e8
Add base support for creating a new API key for an account 2020-03-22 18:15:38 -07:00
Dane Everitt
32f25170f1
Pass at removing extraneous permissions table and using native MySQL JSON 2020-03-22 16:56:00 -07:00
Dane Everitt
23d594f655
Update all of the permissions checking to be constant based 2020-03-22 15:31:25 -07:00
Dane Everitt
605c154812
Remove unused controllers 2020-03-22 15:15:42 -07:00
Dane Everitt
fd2ceacfe2
Remove unused code 2020-03-22 14:16:12 -07:00
Dane Everitt
734bdc7b78
Unify display with task rows 2020-03-22 14:14:11 -07:00
Dane Everitt
1bf3165cbe
Use a dropdown menu when selecting a power action 2020-03-22 14:11:26 -07:00
Dane Everitt
cf7f36c950
Always include the tasks with a schedule 2020-03-22 13:57:31 -07:00
Dane Everitt
1e0d630e1f
Finish building out schedule management functionality 2020-03-22 13:56:15 -07:00
Dane Everitt
4ac6507b69
Make these buttons to avoid weird refresh issues 2020-03-18 22:39:52 -07:00
Dane Everitt
b0f47ea01a
Add support for creating a new task 2020-03-18 22:36:19 -07:00
Dane Everitt
ef38a51d6d
Add base support for editing an existing task 2020-03-18 22:28:32 -07:00
Dane Everitt
edb9657e2b
Upgrade to formik@2 2020-03-18 21:32:07 -07:00
Dane Everitt
78ed343a34
Support deleting a task from a schedule 2020-03-18 21:08:32 -07:00
Dane Everitt
5345a2a3e1
Add initial task listing for schedules 2020-03-17 23:33:53 -07:00
Dane Everitt
b3fb658511
Merge branch '0.7-develop' into develop 2020-03-15 17:30:28 -07:00
Dane Everitt
3820d4e156
Add view for editing the details of a schedule 2020-02-22 20:07:56 -08:00
Dane Everitt
f180e3ef0b
Attempting to get an edit modal to display without a re-render 2020-02-11 23:23:06 -08:00
Dane Everitt
40c377f2e0
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-02-11 21:15:43 -08:00
Dane Everitt
79b3e82887
eslint is a bit unhappy after that upgrade 2020-02-11 21:15:40 -08:00
Matthew Penner
b05048871c
Fix 2FA sizing issue, add support for copying text from xterm.js (#1825)
closes #1812, closes #1813
2020-02-11 09:37:12 -08:00
Dane Everitt
1b1c95d8ce
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-02-08 15:23:11 -08:00
Dane Everitt
32e9fb0346
Add basic listing of server schedules 2020-02-08 15:23:08 -08:00
SmokingIsBadMkay
bf6da15fba
Improved non-interactive command support (#1824)
The following commands no longer need confirmation when the input is not interactive:

 - server:bulk-power
 - server:reinstall
2020-02-08 13:30:49 -08:00
Dane Everitt
f9ec96c70a
Fix login error message width, closes #1792 2020-01-19 14:31:07 -08:00
Dane Everitt
11c430cf69
Correctly mark server as installed 2020-01-19 14:08:28 -08:00
Dane Everitt
b2cce9195a
Only show creation button if the server can actually have databases 2020-01-19 13:54:39 -08:00
Dane Everitt
dbc7c597d0
Route and handle install state updates 2020-01-19 13:50:38 -08:00
Dane Everitt
bb9a3714cb
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2020-01-18 15:26:17 -08:00
Dane Everitt
3b11ba9fca
Basic support for installation process 2020-01-18 15:26:15 -08:00
Birkhoff Lee
a4f44f952a Dockerfile: Switch to php:7.2-fpm-alpine (#1713)
It's usually a better practice to use an official supported Docker image (in this case, php) so it's best optimized and supported.
2020-01-08 11:51:53 -05:00
Dane Everitt
f609271c35
Fix two-factor QR code display; closes #1799 2019-12-28 12:09:55 -08:00
Dane Everitt
158958d82d
Password change needs to require user login to reset some cookies
closes #1793
2019-12-28 12:07:42 -08:00
Dane Everitt
5f13531c69
Fix up subuser API response for clients 2019-12-28 12:03:19 -08:00
Dane Everitt
51defae917
Merge branch 'master' into develop 2019-12-28 11:49:08 -08:00
Dane Everitt
29de2085f2
Merge branch 'release/v0.7.16' 2019-12-28 11:47:23 -08:00
Dane Everitt
064d8e974e
Bump for release 2019-12-28 11:40:42 -08:00
Dane Everitt
7fc4a19220
Merge pull request #1794 from parkervcp/update/vanilla_minecraft
update vanilla minecraft script.
2019-12-28 11:18:14 -08:00
Dane Everitt
649d4b4847
Merge branch 'develop' into update/vanilla_minecraft 2019-12-28 11:18:06 -08:00
Dane Everitt
c931d16369
Merge pull request #1737 from pterodactyl/lancepioch-patch-3
Clean sensitive email connection info
2019-12-28 11:16:30 -08:00
Dane Everitt
e6008d6392
Merge branch 'develop' into lancepioch-patch-3 2019-12-28 11:16:14 -08:00
parkervcp
a948acfd1c update vanilla minecraft script. 2019-12-25 20:38:49 -05:00
Dane Everitt
63918cb549
Use the correct certificate key in the config 2019-12-24 16:48:50 -08:00
Dane Everitt
4173001f10
Put this up one level so it doesn't disappear on releases 2019-12-22 21:44:50 -08:00
Dane Everitt
338ffd0a8f
Fix up build script 2019-12-22 21:27:26 -08:00
Dane Everitt
c4fdcb5937
Fix navigation bar issues 2019-12-22 21:22:08 -08:00
Dane Everitt
1f6f7c4bb4
Fix authentication page on mobile devices 2019-12-22 21:18:29 -08:00
Dane Everitt
513692fef5
Whoops, actually show servers 2019-12-22 20:56:34 -08:00
Dane Everitt
6ccac6e040
Mobile improvements for two-factor form 2019-12-22 20:51:50 -08:00
Dane Everitt
9a0ed6b291
Add ability to disable two factor authentication 2019-12-22 20:41:25 -08:00
Dane Everitt
2a653cdd8d
Automatically update the user data when 2FA is enabled 2019-12-22 20:23:43 -08:00
Dane Everitt
eb39826f46
Add base logic to configure two factor on account 2019-12-22 17:03:44 -08:00
Dane Everitt
edf27a5542
Don't cache the manifest like this, pointless 2019-12-22 15:41:38 -08:00
Dane Everitt
293ebc9344
Show note when no servers. 2019-12-22 15:31:12 -08:00
Dane Everitt
c96bad4080
FIx force deletion 2019-12-22 15:08:11 -08:00
Dane Everitt
446d5be62b
Show proper spinners 2019-12-22 14:53:27 -08:00
Dane Everitt
5a31771b4b
Fixes for purge CSS 2019-12-22 14:33:08 -08:00
Dane Everitt
6276a03a4e
Fix links in admin area 2019-12-22 14:03:49 -08:00
Dane Everitt
52ea0f2d0a
Fix allocation management 2019-12-22 13:55:58 -08:00
Dane Everitt
bc3286c7e4
Don't need this box anymore 2019-12-22 13:50:35 -08:00
Dane Everitt
34ffcdae7a
Remove unnecessary API calls to daemon 2019-12-22 13:45:40 -08:00
Dane Everitt
59bfc212c9
Include all server information in details endpoints for daemon to use 2019-12-22 13:28:51 -08:00
Dane Everitt
058f72c923
Don't disconnect from the websocket when updating the server object state 2019-12-22 00:16:25 -08:00
Dane Everitt
6966530165
Better redux devtooling support 2019-12-22 00:16:13 -08:00
Dane Everitt
ef5d0fb4a2
Add deletion code to the panel 2019-12-21 23:26:15 -08:00
Dane Everitt
04d67eaa10
Minor fixes for blocking indexing and notg interrupting user expierence 2019-12-21 21:56:45 -08:00
Dane Everitt
f6b414741d
Wait for connection before opening terminal 2019-12-21 21:51:42 -08:00
Dane Everitt
33eb1d259f
Add easy launch button for SFTP 2019-12-21 21:16:12 -08:00
Dane Everitt
e87db889e9
Fix server data not updating correctly on daemon 2019-12-21 21:01:38 -08:00
Dane Everitt
3e915e526b
Fix file creation in nested directory 2019-12-21 17:43:50 -08:00
Dane Everitt
a1a344bc48
Big red warning box to prevent the inevitable users trying to run this as a prod build 2019-12-21 17:40:03 -08:00
Dane Everitt
11c17245c2
Handle websocket authentication slightly differently to make errors easier to work with 2019-12-21 17:31:04 -08:00
Dane Everitt
02c0d934c3
Make text more readable 2019-12-21 16:40:28 -08:00
Dane Everitt
00bf5644f8
Remove debugging code 2019-12-21 16:39:25 -08:00
Dane Everitt
e784218645
Add support for creating a new file 2019-12-21 16:38:40 -08:00
Dane Everitt
d75073116f
Health check 2019-12-16 21:42:58 -08:00
Dane Everitt
7405d7c8ee
Fix routing to server pages 2019-12-16 21:27:01 -08:00
Dane Everitt
03f2c61431
Fix error when creating user 2019-12-16 21:25:48 -08:00
Dane Everitt
a247310372
Fix nav for servers 2019-12-16 21:14:27 -08:00
Dane Everitt
2a92304023
Fix server creation logic 2019-12-16 21:02:30 -08:00
Dane Everitt
85b47ceb79
Slightly more logical handling when moving things around 2019-12-16 19:55:02 -08:00
Dane Everitt
d07ee9a36b
Add create directory button 2019-12-15 19:10:01 -08:00
Dane Everitt
ba0757f05c
Dont run checker in prod builds 2019-12-15 18:50:35 -08:00
Dane Everitt
2cabfeec15
Daemon secret is not a thing anymore 2019-12-15 18:31:15 -08:00
Dane Everitt
1aacc48f0c
Remove forgotten traces of laroute 2019-12-15 18:20:37 -08:00
Dane Everitt
447c4291ad
Update all places in the code referencing named routes using JS that doesn't exist now 2019-12-15 18:19:35 -08:00
Dane Everitt
14b1f13fe0
Obliterate swaths of old template code 2019-12-15 18:11:56 -08:00
Dane Everitt
8965da6af0
Make the logout link actually work 2019-12-15 18:07:45 -08:00
Dane Everitt
103507d6ee
Fix site name 2019-12-15 18:07:16 -08:00
Dane Everitt
66410a35f1
Fix recaptcha on login forms 2019-12-15 18:05:44 -08:00
Dane Everitt
f864b72e0a
Get formik used on login form 2019-12-15 16:41:20 -08:00
Dane Everitt
d9d4c0590c
Fix silent failure mode when recaptcha is enabled 2019-12-15 16:13:44 -08:00
Dane Everitt
926b5ac099
Only show 250 files in a directory listing 2019-12-15 14:16:47 -08:00
Dane Everitt
59448520fe
Helps to run purgecss against actual files 2019-12-15 13:52:57 -08:00
Dane Everitt
39f1392eee
Hide navigation links that haven't been built out yet 2019-12-09 22:07:21 -08:00
Dane Everitt
81bd67cc76
Add ability for user to change server's name 2019-12-09 22:03:10 -08:00
Dane Everitt
564d947f7e
[#3c9g25] Add support for new endpoint to collect node information 2019-12-09 21:05:39 -08:00
Michael (Parker) Parker
6cf338c1a5
fix server author. 2019-12-09 13:19:55 -05:00
Michael Parker
6e30f79de9 Update Install scripts
Update steamcmd install scripts to use new install script
Update steamcmd install image to Ubuntu 18.04

Add extra ARK variables
2019-12-08 18:31:31 -05:00
Dane Everitt
979bdc1f9f
Use YAML for configuration file 2019-12-08 11:29:46 -08:00
Dane Everitt
c087f6429f
Temporary patch to get user management pages displaying correctly 2019-12-08 11:02:59 -08:00
Dane Everitt
06e5a05f22
Don't cause an endless loop 2019-12-08 10:44:58 -08:00
Dane Everitt
c37baa0867
Always show the save buttons 2019-12-08 10:44:52 -08:00
Dane Everitt
24f340c9a1
Fix up SFTP endpoint 2019-12-07 16:14:04 -08:00
Dane Everitt
2570b4e2d0
Base code for settings and schedules 2019-12-07 15:58:37 -08:00
Dane Everitt
9b80546c0c
Fix design and auto-selection of file format type 2019-12-07 12:16:35 -08:00
Dane Everitt
4e3e9a95e4
eslint error fixes 2019-12-07 12:13:46 -08:00
Dane Everitt
bfd62304ae
Package updates 2019-12-07 12:12:33 -08:00
Dane Everitt
ae3f05b8f7
Always show the resource graph boxes 2019-12-07 11:11:40 -08:00
Dane Everitt
976ad7497f
Don't trigger reloads when working with HMR 2019-12-07 11:03:23 -08:00
Dane Everitt
ed50259484
[#3896cn] Clean up code handling server suspension 2019-11-30 15:37:13 -08:00
Dane Everitt
2eee6f35d4
Pass along the data in a more logical format 2019-11-24 20:40:29 -08:00
Dane Everitt
2af653733c
Insane number of changes required to get the build to post 2019-11-24 20:19:31 -08:00
Dane Everitt
547e8840e2
Untested code to perform an update of server build settings 2019-11-24 15:08:54 -08:00
Dane Everitt
c17f9ba8a9
Move server view management parts to new controller and clean up code 2019-11-24 12:50:16 -08:00
Dane Everitt
8f0044575f
Update server creation data logic 2019-11-16 13:33:01 -08:00
Dane Everitt
2848d182ef
Break server creation logic into own controller 2019-11-16 13:08:46 -08:00
Dane Everitt
634c1cae9a
Show link to admin area in nav 2019-11-16 13:08:38 -08:00
Dane Everitt
e9b12282b9
Remove all existing language files for other languages until this is restabalized 2019-11-16 12:46:30 -08:00
Dane Everitt
01d81bd548
Getting somewhere on subuser stuff, adds i18n packages 2019-11-16 12:46:19 -08:00
Dane Everitt
2a7fc4612a
Fix bug with css build not properly prefixing things for Firefox 2019-11-16 11:18:23 -08:00
Dane Everitt
d69f816d9d
Add handler to fetch all of the system permissions and load them into the state 2019-11-03 17:37:06 -08:00
Dane Everitt
867dbf3bd2
Update all the client API endpoints to use new permissions codes 2019-11-03 17:13:47 -08:00
Dane Everitt
1153101a57
Add animation and first round at doing sidebar for editing permissions 2019-11-03 12:32:07 -08:00
Dane Everitt
543884876f
Add basic subuser listing for servers 2019-11-03 12:20:11 -08:00
Dane Everitt
de464d35a2
Prevent a double file manager load 2019-11-03 10:46:43 -08:00
Dane Everitt
0b9c6bd21d
Proxy file downloads through the panel rather than having to get creative with download tokens 2019-10-26 14:36:37 -07:00
Dane Everitt
78ccdf93b6
Square away saving of existing files 2019-10-26 13:16:27 -07:00
Dane Everitt
0dff732883
Editor improvements 2019-10-19 17:35:01 -07:00
Dane Everitt
ac6e5b9943
Break up editor correctly 2019-10-19 15:31:02 -07:00
Dane Everitt
1d6e037d8a
Improve mode detection for editing a file 2019-10-19 14:51:10 -07:00
Dane Everitt
946f2e17df
Ensure the field doesn't get too small 2019-10-19 13:39:02 -07:00
Dane Everitt
2e32df98ea
First iteration of a file manager 2019-10-12 15:29:45 -07:00
Dane Everitt
ac52810ef6
Don't try to parse JSON being returned from the API 2019-09-29 15:32:22 -07:00
Dane Everitt
6f65f6a217
Don't crash the browser as hard when loading a directory with more than 250 files 2019-09-29 15:25:23 -07:00
Dane Everitt
5301ab4235
Do a nice fast animation 2019-09-29 14:06:42 -07:00
Dane Everitt
29834a33f8
Add support for showing usage graphs on the console page 2019-09-29 13:23:15 -07:00
Dane Everitt
c66d2cd123
A few adjustments for chunking the new file edit page 2019-09-28 14:59:05 -07:00
Dane Everitt
8599e2c64b
Add server state change events into the console log 2019-09-28 13:45:09 -07:00
Dane Everitt
0108035c05
Fix some typescript typing issues 2019-09-28 13:29:49 -07:00
Dane Everitt
79571e1928
Add button to toggle kill option after pressing stop once 2019-09-28 13:17:51 -07:00
Dane Everitt
326d346f92
Handle errors sent back over the sockt 2019-09-28 13:09:47 -07:00
Lance Pioch
ce614ad54f
Clean sensitive email connection info 2019-09-25 15:53:38 -04:00
Dane Everitt
b78276d23d
Args won't always be present 2019-09-24 22:05:48 -07:00
Dane Everitt
030b8ed4fd
Change to support websocket JWT connections 2019-09-24 21:22:11 -07:00
Dane Everitt
18c4b951e6
First pass at converting websocket to send a token along with every call 2019-09-24 20:20:29 -07:00
Lance Pioch
513965dac7 Update syntax for styleci (#1700) 2019-09-23 12:30:51 -07:00
Dane Everitt
67ff67a1bd
Add endpoints to return a server's egg configuration 2019-09-22 15:30:53 -07:00
Dane Everitt
5df46b23d2
Add power controls 2019-09-17 23:12:38 -07:00
Dane Everitt
33f306d40b
Add command sending support to console 2019-09-17 22:54:23 -07:00
Dane Everitt
498badc0bc
Actually fix the console memory leaking... 2019-09-17 22:54:16 -07:00
Dane Everitt
12992e3521
Prevent memory leak when component updates and ref changes 2019-09-17 22:40:59 -07:00
Dane Everitt
75cd49a1c2
Chunk out the console to only load when needed 2019-09-17 22:33:14 -07:00
Dane Everitt
49de1d0ed4
Fixes for console socket disconnecting with HMR enabled 2019-09-17 21:59:35 -07:00
Dane Everitt
2b68e5a984
Update dependencies, add support for styled-components 2019-09-17 21:05:20 -07:00
Dane Everitt
086018751d
Add underlying code to handle authenticating websocket credentials 2019-09-08 17:48:37 -07:00
Dane Everitt
1ae374069c
Still completely broken terminal... 2019-09-05 23:05:24 -07:00
Dane Everitt
54339c1344
Add property information to common models 2019-09-05 21:53:33 -07:00
Dane Everitt
b99ea53ca1
Update client API endpoints to not use deprecated function 2019-09-05 21:41:20 -07:00
Dane Everitt
7543ef085d
Format files 2019-09-05 21:32:57 -07:00
Dane Everitt
26e4ff1f62
Update to use new repository and standard laravel notation for controllers 2019-09-05 21:31:12 -07:00
Dane Everitt
62cd03d684
Fix command sending error handling and bad assertion order 2019-09-05 21:16:36 -07:00
Dane Everitt
ee0da206c1
Update command sending from server API to use new daemon code 2019-09-05 21:11:19 -07:00
Dane Everitt
161e0f6165
Deprecate old way of using repositories for daemon things 2019-09-05 20:33:27 -07:00
Dane Everitt
a9976c723e
[L6] Temporarily hack around theme system to maintain views without having to edit tons of code 2019-09-05 20:17:40 -07:00
Dane Everitt
0d6cf54314
[L6] Update even more areas of codebase using custom model validation logic 2019-09-04 22:26:28 -07:00
Dane Everitt
c586157dc4
[L6] Add support for custom model validation logic 2019-09-04 22:19:57 -07:00
Dane Everitt
5b4a65a60c
[L6] Break search functionality without breaking the entire app 2019-09-04 21:21:07 -07:00
Dane Everitt
c97461d602
[L6] Move all of the template files into the new correct location 2019-09-04 21:19:52 -07:00
Dane Everitt
1c5b9dbb87
[L6] Update cursor() calls to work with new lazy collections 2019-09-04 21:05:46 -07:00
Dane Everitt
08bdc9705f
[L6] Update composer dependencies to support L6
Drops all of the eloquence requirements, this is going to break a shit load of code, needs to happen tired of this package always holding us back.

Quite confident in my ability to write custom code to do the basic validation we need.

Searching should be a fun nightmare to deal with later...
2019-09-04 21:00:34 -07:00
Dane Everitt
901515e94b
[L6] More correct versions 2019-09-04 20:33:37 -07:00
Dane Everitt
7ecb28b598
[L6] No longer necessary with L5.8 2019-09-04 20:28:37 -07:00
Dane Everitt
bd8b708c32
[L6] Update cache methods to use defined times and not ints 2019-09-04 20:24:46 -07:00
Dane Everitt
2c0503c593
[L6] Initial run, getting all dependencies in line 2019-09-04 20:19:01 -07:00
Dane Everitt
cb9536cb24
Cleanup 2019-08-17 16:10:13 -07:00
Dane Everitt
fb9c106448
Update server listing and associated logic to pull from the panel dynamiacally 2019-08-17 16:03:10 -07:00
Dane Everitt
952dff854e
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2019-08-17 11:40:54 -07:00
Dane Everitt
7224cd8db3
File manager placeholder 2019-08-17 11:40:51 -07:00
Lance Pioch
37631a1d49 Missing return statement (#1673)
Otherwise this errors out with $host not being found
2019-08-10 13:19:52 -07:00
Dane Everitt
1769d191d2
Correct behavior of date formatting 2019-08-05 22:22:31 -07:00
Dane Everitt
e23f609e7a
Only show location when moving 2019-08-05 21:55:33 -07:00
Dane Everitt
7623b1d1e6
Fix clicking of rows 2019-08-05 21:54:16 -07:00
Dane Everitt
60775c6370
Update handling of links in the file manager 2019-08-05 21:52:48 -07:00
Dane Everitt
f7def01442
Fix event propagation down the chain 2019-08-05 21:18:32 -07:00
Dane Everitt
f84e3c9f22
Clearer variable names 2019-08-05 21:07:34 -07:00
Dane Everitt
34e54b4944
Slightly better logic for dropdown menus 2019-08-05 21:02:36 -07:00
Dane Everitt
456473ad0f
Delete support & cleaned up copy logic 2019-08-04 15:46:58 -07:00
Dane Everitt
2f9128508a
Add support for copying files. 2019-08-04 15:34:46 -07:00
Dane Everitt
5f59210c85
Use easy-peasy to store file state data 2019-08-04 14:58:31 -07:00
Dane Everitt
918e0e2947
Canary not specific version. 2019-08-04 13:50:49 -07:00
Dane Everitt
81143e231a
Merge branch 'master' into develop 2019-08-04 13:49:26 -07:00
Dane Everitt
bd5875084b
Merge branch 'release/v0.7.15' 2019-08-03 15:07:18 -07:00
Dane Everitt
80d337db60
Bump for 0.7.15 💯 2019-08-03 15:00:53 -07:00
Dane Everitt
2716ff8841
Basic working file rename modal 2019-08-02 22:22:01 -07:00
Dane Everitt
f4d0694670
Avoid unnecessary re-renders when working with HMR 2019-08-02 22:03:50 -07:00
Dane Everitt
2381a4f8e6
Add support for file dropdown menu 2019-07-29 22:10:45 -07:00
Dane Everitt
0ee10e5653
Break out into own component since it will need to handle even more. 2019-07-27 20:36:27 -07:00
Dane Everitt
e0eedcb811
Improve design of file listing 2019-07-27 20:32:56 -07:00
Dane Everitt
c90fcea519
Add basic file listing functionality 2019-07-27 20:23:51 -07:00
Dane Everitt
ecb5384579
Misc CSS and transition fixes 2019-07-27 20:23:44 -07:00
Dane Everitt
df5de4be97
Add styled-components, even if it is broken 2019-07-27 18:53:48 -07:00
Dane Everitt
b69ebb0790
Merge branch 'develop' of https://github.com/Pterodactyl/Panel into develop 2019-07-27 15:17:55 -07:00
Dane Everitt
48c39abfcb
Add database password rotation to view 2019-07-27 15:17:50 -07:00
Dane Everitt
bec6c70da4
Merge pull request #1616 from J0rdoe/patch-1
Change guides link to new community section in the documentation
2019-07-26 11:24:37 -04:00
Arnaud Lier
f98d3d749c [+] Added French Language (#1494) 2019-07-26 11:09:04 -04:00
NgLoader
5e7b6ebbb4 Added forge build number support (#1479)
* Fixed forge script and added build number support

* Changed regex

Thanks to @parkervcp
2019-07-26 11:07:32 -04:00
PiggyPiglet
349114c960 Add a --settings-ui option for AppSettingsCommand (#1446)
* Add a --settings-ui option for AppSettingsCommand

Sorry if my code is below par, I don't know php. All this does is allow the APP_ENVIRONMENT_ONLY to be set via an option, which as far as I can tell, isn't currently possible. I've tested this on a local installation and it works.
2019-07-26 11:05:57 -04:00
Dane Everitt
3611ce703b
Merge pull request #1402 from JamsheedMistri/feature/bulk-reinstall-command
Adding bulk reinstall command
2019-07-26 11:04:59 -04:00
Dane Everitt
215351eeb3
Merge branch 'develop' into feature/bulk-reinstall-command 2019-07-26 11:04:48 -04:00
Dane Everitt
b94289c49b
Merge pull request #1626 from AusHick/patch-1
Add link to Laravel Framework validation rules/docs
2019-07-25 18:37:55 -04:00
Dane Everitt
574855a4ac
Merge branch 'develop' into patch-1 2019-07-25 18:37:35 -04:00
Dane Everitt
f6ee885f26
Support for viewing database passwords 2019-07-16 22:29:00 -07:00
Dane Everitt
d081f328ab
Support deleting existing databases 2019-07-16 22:15:14 -07:00
Dane Everitt
1f763dc155
Finish support for creating databases in the UI 2019-07-16 21:43:11 -07:00
Dane Everitt
61dc86421d
Add basic modal support 2019-07-09 22:41:09 -07:00
Dane Everitt
bb3486f559
More style cleanup for database listing 2019-07-09 22:06:42 -07:00
Dane Everitt
e3db564175
Add basic support for listing a server's databases 2019-07-09 22:00:29 -07:00
Dane Everitt
986285402f
Switch to a context store for server stuff to better support things in the future 2019-07-09 21:25:57 -07:00
Austin Hickey
de8ce4bc95
made links to validation rules more specific
laravel validation rules link now points to the relevant section on the laravel docs
2019-07-08 04:05:51 -04:00
Austin Hickey
b252374d39
Add link to Laravel Framework validation rules/docs
Small QoL fix for adding variables to eggs:

References to "Laravel Framework validation rules" are now linked to the official Laravel 5.7 docs referring to the validation syntax.  Links are also set to open reference in a new tab/window.
2019-07-01 21:30:46 -04:00
Dane Everitt
16e6f3f45f
Attempting to solve a weird console loading issue by making into class component; doesn't fix but like the class better for this.
Loading the console, switching to file manager, and then switching back is needed to load the data the first time. After that every 2nd load of the console will load the data (and even send the data to the websocket as the daemon is reporting.)
2019-06-29 18:28:23 -07:00
Dane Everitt
6b42296865
Correctly listen for unmount event 2019-06-29 17:48:35 -07:00
Dane Everitt
48f449e6d7
Send the logs on mount 2019-06-29 17:40:50 -07:00
Dane Everitt
e0838c895a
First pass at connecting to console and rendering the output from the server. 2019-06-29 17:18:17 -07:00
Dane Everitt
6db9f65e0f
Hide spinner when connected to websocket 2019-06-29 16:59:50 -07:00
Dane Everitt
c8d89e0964
Correctly handle socket state in the app and make it possible to listen for events 2019-06-29 16:57:11 -07:00
Dane Everitt
f0ca8bc3a3
Handle connecting to websocket instance
Very beta code for handling sockets
2019-06-29 16:14:32 -07:00
Dane Everitt
c741a1e41e
Merge branch 'release/v0.7.14' 2019-06-29 12:29:04 -07:00
Dane Everitt
6618a124e7
Merge branch 'feature/react' into develop 2019-06-28 22:53:49 -07:00
Dane Everitt
e69d55ec6f
Nyoom, bye bye Vue 2019-06-28 22:52:57 -07:00
Dane Everitt
109bed4f7d
Add basic navigation bar to server view 2019-06-28 22:49:08 -07:00
Dane Everitt
8ac8a370f8
Fix some issues with navigating in the router and bad animations 2019-06-28 22:17:29 -07:00
Dane Everitt
3db7698170
Basic design for server listing page 2019-06-25 22:00:28 -07:00
Dane Everitt
2f5a1984b3
Make the heading on form elements less bold 2019-06-25 22:00:18 -07:00
Dane Everitt
9cb8020dbe
Add basic navigation bar 2019-06-25 21:28:56 -07:00
Dane Everitt
c7355975ad
Support running behind SSL 2019-06-25 20:42:18 -07:00
Dane Everitt
46c338dc1b
Basic design concept for a nav bar 2019-06-24 22:17:58 -07:00
Dane Everitt
cbd050edda
Only doing password and email currently 2019-06-24 21:45:43 -07:00
Dane Everitt
da24f66563
Finish code for updating email 2019-06-24 21:43:46 -07:00
Jordy
0112091827
Update README.md
changed guides website url
2019-06-23 12:52:57 +02:00
Dane Everitt
438f1b06b9
Add support for changing account password 2019-06-22 23:45:09 -07:00
Dane Everitt
d43b7ea5bc
Add basic Formik setup and example for update password 2019-06-22 23:25:38 -07:00
Dane Everitt
403a1e79fa
Fix form hover/active states 2019-06-22 18:58:07 -07:00
Dane Everitt
adcd2682ef
Start working on some defined styles, begin implementing password update in account 2019-06-22 18:53:50 -07:00
Dane Everitt
0789b814dd
Fix design issue 2019-06-22 18:10:57 -07:00
Dane Everitt
60f32f055e
Fix router to make it easier to actually navigate around the app 2019-06-22 18:09:42 -07:00
Dane Everitt
f34593e777
Make the transition based router be grouped more cleanly. 2019-06-22 17:45:32 -07:00
Dane Everitt
d22747b0b1
Only do this if no user is in the state already 2019-06-22 17:07:54 -07:00
Dane Everitt
e20a768182
Plop user data into the store when loading up the base component 2019-06-22 17:07:28 -07:00
Dane Everitt
328347fab7
Convert all of the login components into hook based ones 2019-06-22 16:45:51 -07:00
Dane Everitt
aabf9b8a70
Some adjustments to begin working on a dark theme 2019-06-22 15:23:02 -07:00
Dane Everitt
ad61774171
Whoops, dont mess up logging in if the code starts with 0 2019-06-22 13:54:36 -07:00
Dane Everitt
d1880af18d
New login page design 2019-06-22 13:53:41 -07:00
Dane Everitt
212773d63c
Finish authentication flow for 2FA 2019-06-22 13:33:11 -07:00
Dane Everitt
7f3ab8aadf
Redesign the login form to not use the weird open fields 2019-06-22 13:11:27 -07:00
Dane Everitt
56640253b9
Merge branch 'release/v0.7.14' into feature/react 2019-06-22 12:28:44 -07:00
Dane Everitt
c38f78df84
Bump for security release 🔐 2019-06-21 22:06:07 -07:00
Dane Everitt
905ae555d0
Update README.md 2019-06-17 21:15:32 -07:00
Dane Everitt
2a626a3e1f
Kinda working checkpoint magic 2019-06-16 18:07:57 -07:00
Dane Everitt
4eeec58c59
Add support for password reset links 2019-06-16 16:57:57 -07:00
Dane Everitt
54cfe7e981
Clear email field on send 2019-06-16 15:24:20 -07:00
Michael (Parker) Parker
d700fdbe7d update teamspeak egg (#1607)
use a debian based image instead due to glibc issues

resolves #1606
2019-06-12 15:29:39 -07:00
Dane Everitt
19ef901768
Show success message to the user 2019-06-11 23:19:43 -07:00
Dane Everitt
435626f4b7
Add support for flash messages utilizing redux 2019-06-11 23:12:03 -07:00
Dane Everitt
b93b40ba31
Begin working on password reset page 2019-06-11 22:02:18 -07:00
Dane Everitt
d9f30294de
Migrate the existing login form to use React 2019-06-09 19:26:20 -07:00
Dane Everitt
0ab3768274
Install eslint to enforce a style 2019-06-09 17:38:33 -07:00
Dane Everitt
3f2a4b5762
Get initial implementation for react working 2019-06-09 17:29:10 -07:00
Dane Everitt
37715762cd
Don't parse JSON files as actual JSON 2019-06-01 14:24:00 -07:00
Dane Everitt
0f8dcabb45
Even out the file manager rows 2019-05-27 18:45:37 -07:00
Dane Everitt
e99ac7abe8
Store the console output in a buffer for easier display 2019-05-27 18:26:34 -07:00
Dane Everitt
f9b8ddc917
Let the daemon send the initial logs 2019-05-27 18:03:23 -07:00
Dane Everitt
d284083d20
Fix the logic on database modals 2019-05-27 16:43:28 -07:00
Dane Everitt
7e89e1bc00
Fix firefox focus ring on links 2019-05-27 16:32:27 -07:00
Dane Everitt
06337e45d8
Add support for non-existent files being edited 2019-05-27 16:30:23 -07:00
Dane Everitt
bfdc1f766b
Support saving existing files 2019-05-27 15:30:49 -07:00
Dane Everitt
a8f523e2aa
Prevent opening file edit modal when clicking on row options dots 2019-05-27 15:06:10 -07:00
Dane Everitt
89194b4c55
Show a cleaner interface while loading file contents 2019-05-27 15:02:32 -07:00
Dane Everitt
a8462bf109
Add initial support for opening a file in the file manager, still needs more work 2019-05-25 16:24:13 -07:00
Dane Everitt
6606eb1b1b
Switch to ace editor and improve build process for it 2019-05-14 18:36:48 -07:00
Dane Everitt
487128d00f
Fix modal design 2019-05-14 16:51:38 -07:00
Dane Everitt
da2044fb10
Support modals with content outside the white background area 2019-05-14 16:48:38 -07:00
Dane Everitt
be03dba5b5
Add styling for dropdown menus 2019-05-14 16:48:23 -07:00
Dane Everitt
c6633057b6
Add very basic working example of inline file editor 2019-05-10 22:51:09 -07:00
Dane Everitt
32db345238
Update modal code 2019-05-10 22:50:59 -07:00
Dane Everitt
2c73991f2b
Add minimum code needed to open new file modal 2019-05-10 21:20:37 -07:00
Dane Everitt
d280a91115
Add socket reconnect logic 2019-05-09 22:42:53 -07:00
Dane Everitt
d79fe6982f
Add support for file copy and deletion 2019-05-04 17:26:24 -07:00
Dane Everitt
811026895b
Update support for moving/renaming files and folders 2019-05-04 16:04:59 -07:00
Dane Everitt
eed4be49ab
Fix data being passed along to daemon 2019-05-01 21:58:35 -07:00
Dane Everitt
95d19bf09e
Update logic that handles creation of folders for a server 2019-05-01 21:45:39 -07:00
Dane Everitt
ec87330a81
Merge branch 'feature/vuejs' into develop 2019-05-01 21:00:16 -07:00
Dane Everitt
8055b44586
Fix content hash for composer 2019-05-01 20:59:50 -07:00
Dane Everitt
71eae1eb68
Update TwoFactorSetupService.php 2019-05-01 20:57:54 -07:00
Dane Everitt
5c99cae779
Merge branch 'develop' into feature/vuejs 2019-05-01 20:57:49 -07:00
Dane Everitt
c80c8564b8
Switch file manager listing to use panel API endpoint 2019-05-01 20:54:40 -07:00
Dane Everitt
e87c5f6657
Implement basic support for connecting to wings console via websocket rather than socketio 2019-05-01 20:12:20 -07:00
Dane Everitt
0757d8856b
Add base code to support retrieving allocations as a client 2019-03-23 17:47:20 -07:00
Dane Everitt
d59c38eb4e
Fix a fallback route issue causing API calls to return unauth responses and not 404s
The fallback handler isn't scoped to a specific group, so the way this was setup caused requests to non-existent API routes to actually try and return the base view for Vue. This caused a mess of issues because that view is behind the middleware that expect sessions to be set, thus leading to very confusing authentication errors rather than a 404 response.
2019-03-23 17:41:43 -07:00
Dane Everitt
743ae040be
Add accessability buttons to the file rows 2019-03-17 17:49:04 -07:00
Dane Everitt
ce911f827e
Fix file downloading permissions 2019-03-16 17:16:34 -07:00
Dane Everitt
8955b5a660
Initial attempt trying to get file downloading to work 2019-03-16 17:10:04 -07:00
Dane Everitt
4e669771ca
Add support for moving files via the file manager 2019-03-16 16:36:08 -07:00
Dane Everitt
5aa40800c8
Add support for copying a file or folder 2019-03-10 18:42:53 -07:00
Dane Everitt
3970a24218
Migrate the rename action to follow better structure 2019-03-10 15:44:49 -07:00
Dane Everitt
f3159bcec3
Fix prop modification error 2019-03-10 15:15:04 -07:00
Dane Everitt
d6630341b4
Combine logic so we aren't constantly duplicating it 2019-03-10 14:50:44 -07:00
Dane Everitt
25621f4c1c
Push the user into the newly created directory once made 2019-03-10 14:28:24 -07:00
Dane Everitt
66320972be
Improve file deletion logic to not require a refresh 2019-03-10 14:14:47 -07:00
Dane Everitt
6b4bf3eaa7
Add basic file deletion logic 2019-03-09 12:04:29 -08:00
Dane Everitt
ea9cdea08d
Update composer.lock 2019-03-09 11:23:51 -08:00
Dane Everitt
a66d7a3417
Merge branch 'develop' into feature/vuejs 2019-03-09 11:19:07 -08:00
Dane Everitt
aae67a8a11
Merge branch 'release/v0.7.13' 2019-03-03 14:02:11 -08:00
Dane Everitt
d4facaa2d6
Bump version 2019-03-03 13:58:52 -08:00
Dane Everitt
d34c737f16
Base delete file view, not actually connected to anything 2019-02-18 21:23:42 -08:00
Dane Everitt
ff820f30ad
Add support for renaming files on the fly in the file manager 2019-02-18 20:41:58 -08:00
Dane Everitt
52115b5c77
This wasnt used 2019-02-18 19:38:03 -08:00
Dane Everitt
c47ceda302
Remove forgotten debugger 2019-02-17 13:29:42 -08:00
Dane Everitt
866b3a3aac
Add support for actually creating that folder on the daemon 2019-02-17 13:29:11 -08:00
Dane Everitt
0b11532a48
Get modal base logic all worked out 2019-02-17 13:03:15 -08:00
Dane Everitt
be7f7d8da8
Add initial support for tracking current FM directory for creating a folder (and other stuff eventually) 2019-02-16 17:54:15 -08:00
Dane Everitt
767e466fd8
Lets be smarter with modals here... 2019-02-16 17:15:56 -08:00
Dane Everitt
b6773b56c1
Format all the files 2019-02-09 21:15:45 -08:00
Dane Everitt
5bff8d99cc
Move everything back to vue SFCs 2019-02-09 21:14:58 -08:00
Dane Everitt
761704408e
Fix HMR and backtrack for SFC support now that PHPStorm supports them
Of course I wasted forever migrating OUT of SFCs only to go back to them.
2019-02-09 19:43:11 -08:00
Dane Everitt
626a63ddd9
Some code cleanup 2019-02-09 19:15:18 -08:00
Dane Everitt
40aa3da5de
Migrate last of the SFC's to TS files 2019-02-09 18:46:06 -08:00
Dane Everitt
5cb57af193
Fix power button actions 2019-02-09 17:37:44 -08:00
Dane Everitt
8385ec7feb
Cleanup more filemanager design 2019-02-09 17:26:08 -08:00
Dane Everitt
caca6cff8a
Make the file manager look better 2019-02-09 17:07:11 -08:00
Dane Everitt
ac13f5dce4
Fix a bunch of design inconsistencies and horrible code on server boxes 2019-02-09 16:38:45 -08:00
Dane Everitt
a9fda52065
Begin fixing design to match new colors 2019-02-09 15:17:38 -08:00
Dane Everitt
dfa175326c
Use a better green pallet 2019-02-09 14:50:32 -08:00
Dane Everitt
e62e3babcc
More fixes 2019-02-09 14:48:47 -08:00
Dane Everitt
6e26f1929d
Blues 2019-02-09 14:44:35 -08:00
Dane Everitt
d6feaec202
Fix colors 2019-02-09 14:37:30 -08:00
Dane Everitt
f62c8a0d55
Greens 2019-02-09 14:36:39 -08:00
Dane Everitt
8dcd445df6
Migrate yellows 2019-02-09 14:33:39 -08:00
Dane Everitt
32b43cff9a
Convert color schema, begin migrating old classes (finishes grey & red) 2019-02-09 14:32:18 -08:00
Dane Everitt
6c7a5d5bb9
Finish UI stuff for today 2019-02-03 17:45:22 -08:00
Dane Everitt
89d29cf46b
Assorted UI tweaking 2019-02-03 17:27:19 -08:00
Dane Everitt
a28a9887c1
Rearrange the navigation bar to be laid out more normally 2019-02-03 16:29:08 -08:00
Dane Everitt
378a26a7c5
Finish migrating most everything to TS 2019-02-03 15:39:59 -08:00
Dane Everitt
0407e97aa1
oopsie 2019-02-03 15:16:03 -08:00
Dane Everitt
3e61bfdeaa
Replace console view with proper ts 2019-02-03 15:10:21 -08:00
Dane Everitt
d7ce62c047
Re-add socket mixin, works fine? 2019-02-03 14:49:04 -08:00
Dane Everitt
1c6fa6c0bb
Revert "Temporarily remove socketio until this can be fixed"
This reverts commit 0e1d35c8a0.
2019-02-03 14:31:47 -08:00
Dane Everitt
9f2eaa5c40
Transform server base page to TS 2019-02-03 14:31:39 -08:00
Dane Everitt
ace2e060ed
Merge branch 'release/v0.7.12' 2019-02-03 13:45:12 -08:00
Dane Everitt
7bdcdf23bf
Little tweak, HMR still broken 2019-02-02 19:00:34 -08:00
Dane Everitt
ea923053eb
Miscelaneous fixes for WP 2019-02-02 18:49:51 -08:00
Dane Everitt
91cf735646
Fix webpack compliation for prod, chunk out massive files for perf 2019-02-02 18:25:33 -08:00
Dane Everitt
cc6d10d7f8
Initial Webpack 4 configuration 2019-02-02 17:33:12 -08:00
Dane Everitt
5fc6ef191c
Update app.php 2019-02-02 14:10:30 -08:00
Dane Everitt
2a0d649b2a
Migrate more components to TS 2018-12-30 15:31:41 -08:00
Dane Everitt
085da72934
Fix modal closing 2018-12-30 15:07:18 -08:00
Dane Everitt
0c2b2b4341
Get account pages working 2018-12-30 15:07:12 -08:00
Dane Everitt
11a70b0343
Get dashboard converted 2018-12-30 13:41:24 -08:00
Dane Everitt
33e09b5619
Migrate more core components 2018-12-30 13:10:16 -08:00
Dane Everitt
136e4b5b7b
Fix some issues 2018-12-30 12:45:57 -08:00
Dane Everitt
da45855034
Use computed, not method so it is accessible 2018-12-30 12:27:18 -08:00
Dane Everitt
75ba2eac39
Finish auth migration, now to make it work 2018-12-30 12:13:10 -08:00
Dane Everitt
3b553beac6
Update bootstrap.ts 2018-12-30 10:41:36 -08:00
Dane Everitt
6330d6579f
Undo the ts setting in vue components, begin migration to Vue.component setup 2018-12-29 19:24:52 -08:00
Dane Everitt
0e1d35c8a0
Temporarily remove socketio until this can be fixed 2018-12-29 19:24:25 -08:00
Dane Everitt
f7ba30fbbe
Change flash mixin 2018-12-29 19:24:09 -08:00
Dane Everitt
96468ab4b3
Try some more changes 2018-12-29 17:00:50 -08:00
Dane Everitt
e6502a3713
Shim sham fix the jam 2018-12-29 16:34:22 -08:00
Dane Everitt
ce949ba920
Switch i18n provider 2018-12-29 16:11:49 -08:00
Dane Everitt
ed5ebe9155
More progress, committing to get assistance with TS 2018-12-29 15:51:13 -08:00
Jakob
a76bde5b1d
use .test instead of .local as tld for development 2018-12-17 23:41:46 +01:00
Dane Everitt
5e4ca8ef83
Cleanup socketio stuff for typescript 2018-12-16 18:57:34 -08:00
Dane Everitt
3ad4422a94
Begin transfering things to TS 2018-12-16 15:29:44 -08:00
Dane Everitt
81f5e49768
Port to TS 2018-12-16 14:30:21 -08:00
Dane Everitt
8325743e84
Fix lock 2018-12-16 14:23:22 -08:00
Dane Everitt
21ffa08d66
Merge branch 'develop' into feature/vuejs 2018-12-16 14:20:35 -08:00
Dane Everitt
cc7f7d7123
Remove flow defs and usage, will be using TS 2018-12-16 14:11:56 -08:00
Jamsheed Mistri
34b166cde9 StyleCI fixes 2018-12-02 23:42:35 -08:00
Jamsheed Mistri
9cf7432835 Adding bulk reinstall command 2018-12-02 23:39:40 -08:00
Dane Everitt
75a222fe06
Merge branch 'release/v0.7.11' 2018-11-10 15:42:13 -08:00
Dane Everitt
8fd0e5ff57
Fix flexbox view when there are three items 2018-10-14 13:17:37 -07:00
Dane Everitt
aee42df3ad
Implement some flow and cleanup API call for file manager 2018-09-23 16:06:23 -07:00
Dane Everitt
c3ef290145
Add flowjs support 2018-09-23 14:58:09 -07:00
Dane Everitt
b6205463db
Merge branch 'develop' into feature/vuejs 2018-09-23 13:14:46 -07:00
Dane Everitt
3188782ce7
Revert "Get ionicons imported"
This reverts commit 5404b81193.
2018-09-13 21:53:12 -07:00
Dane Everitt
bba8797f7b
Revert "Update navigation icons"
This reverts commit 63375d0f37.
2018-09-13 21:53:00 -07:00
Dane Everitt
63375d0f37
Update navigation icons 2018-09-13 21:23:13 -07:00
Dane Everitt
5404b81193
Get ionicons imported 2018-09-13 20:44:29 -07:00
Dane Everitt
201c8a7c4c
Make search work correctly when clicking on results 2018-09-11 22:24:48 -07:00
Dane Everitt
31092df5df
Show loading indicator when searching 2018-09-11 21:32:01 -07:00
Dane Everitt
0b0b80dc6d
Add search box to server pages 2018-09-11 21:25:02 -07:00
Dane Everitt
b1b6a7eecd
Biggerify the navigation 2018-09-11 20:08:01 -07:00
Dane Everitt
dae780249f
Less colors 2018-09-11 19:23:22 -07:00
Dane Everitt
395a2860e7
Start working on a better design for the server boxes on the dashboard 2018-09-05 22:55:59 -07:00
Dane Everitt
5c25edfdd4
format 2018-09-05 21:46:09 -07:00
Dane Everitt
b820542b02
Make the colors less strange looking 2018-09-05 21:45:33 -07:00
Dane Everitt
5ca13839cf
Merge branch 'develop' into feature/vue-serverview 2018-09-05 21:34:59 -07:00
Dane Everitt
a77897eb43
Merge branch 'release/v0.7.10' 2018-09-03 16:26:47 -07:00
Dane Everitt
9c11a9d0bd
Merge branch 'release/v0.7.10' 2018-09-03 16:06:26 -07:00
Dane Everitt
414b2f8f8c
Bump version for release 2018-09-03 16:01:10 -07:00
Dane Everitt
5c4d5f733f
Move some files around 2018-08-31 20:30:38 -07:00
Dane Everitt
b731659135
Finish up deletion logic 2018-08-26 14:11:18 -07:00
Dane Everitt
039650bf75
More animate 2018-08-26 14:05:10 -07:00
Dane Everitt
5170d40bb2
Cleaner animation 2018-08-26 14:03:43 -07:00
Dane Everitt
e906ada528
Better handling when deleting a database 2018-08-26 14:01:00 -07:00
Dane Everitt
0999ec93c3
More logic for deleting databases 2018-08-25 15:07:42 -07:00
Dane Everitt
9be2aa4ca9
Push beginning of DB deletion stuff 2018-08-25 14:43:21 -07:00
Dane Everitt
c28e9c1ab7
Add ability to create new database through the UI 2018-08-22 22:29:20 -07:00
Dane Everitt
17796fb1c4
Add basic database listing for server 2018-08-21 21:47:01 -07:00
Dane Everitt
04f56ffe99
Cleanup 2018-08-18 22:03:38 -07:00
Dane Everitt
cf32742132
More file manager updates 2018-08-18 22:03:19 -07:00
Dane Everitt
58f8ec338b
Cleanup 2018-08-18 21:13:05 -07:00
Dane Everitt
68b23de55d
Significantly less atrocious resource checking for servers... 2018-08-18 21:02:58 -07:00
Dane Everitt
dc52e238ac
Change socket implementation for servers 2018-08-18 20:13:40 -07:00
Dane Everitt
e0fda5865d
Add initial logic for rendering the context menu 2018-08-14 22:27:25 -07:00
Dane Everitt
5aa57e0681
Break out file manager file/directory rows into individual components 2018-08-14 21:17:10 -07:00
Dane Everitt
e9f8751c4c
More filemanager work, directory browsing working 2018-08-13 22:58:58 -07:00
Dane Everitt
ceef2edf2e
Add error handling for file manager 2018-08-13 21:06:11 -07:00
Dane Everitt
92a9146b61
Improve filemanager, get first level folders listing 2018-08-06 23:14:13 -07:00
Dane Everitt
00a3d7df87
Properly handle the console when the socket disconnects/reconnects 2018-08-06 22:21:13 -07:00
Dane Everitt
f20d40460e
Better handling of connection errors 2018-08-06 21:33:43 -07:00
Dane Everitt
f1ec968f38
Add beginning of the file manager 2018-08-03 22:32:01 -07:00
Dane Everitt
ce77ab21b3
Rearrange 2018-08-03 21:32:50 -07:00
Dane Everitt
7e6902cc90
Adjustments to the UI 2018-08-03 21:30:06 -07:00
Dane Everitt
c772376aa7
Add the expected buttons, reset color on each line 2018-08-03 20:48:27 -07:00
Jakob Schrettenbrunner
4c357e9231 add color scheme to termx on ConsolePage 2018-08-02 21:56:23 +02:00
Dane Everitt
38d7985e66
More socket and console improvements for server 2018-08-01 23:37:14 -07:00
Dane Everitt
f866ad5b34
Fix spinners, change socket emit names 2018-08-01 21:10:28 -07:00
Dane Everitt
5ca6538965
Autofocus search box when navigating to dashboard 2018-07-21 22:43:16 -07:00
Dane Everitt
034e759298
Show a spinner on the console when loading the contents initially 2018-07-21 22:37:41 -07:00
Dane Everitt
71d2a648ca
Fix spinner component to allow it to be positioned correctly 2018-07-21 22:31:03 -07:00
Dane Everitt
b9368eca45
Reset history to end when command is sent 2018-07-21 16:23:15 -07:00
Dane Everitt
3a97a89d20
Add command history 2018-07-21 16:22:41 -07:00
Dane Everitt
38d50c8fc2
Hide the cursor entirely 2018-07-21 15:26:54 -07:00
Dane Everitt
a94c6d80f5
Add xterm for console support (holy shit this is speedy) 2018-07-21 15:20:37 -07:00
Dane Everitt
c2ebf1cbcd
Neaten up the console a bit more 2018-07-21 00:04:56 -07:00
Dane Everitt
2744280362
Styling tweaks 2018-07-20 23:49:12 -07:00
Dane Everitt
8db9d9bbee
Very rough go at connecting to socket and rendering console data for server 2018-07-20 23:45:07 -07:00
Dane Everitt
784c73becd
Break console page into a component 2018-07-20 22:34:30 -07:00
Dane Everitt
2ab66ba8c8
Add logic to load server data into vuex for the request when visiting a server page 2018-07-18 22:48:19 -07:00
Dane Everitt
a42280dd84
Begin working on sidebar styling for server view 2018-07-15 19:47:31 -07:00
Dane Everitt
92905a6c2a
Add the server routes 2018-07-15 19:03:38 -07:00
Dane Everitt
79ea4cbe1a
Correct N+1 utilization checking 2018-07-15 18:11:29 -07:00
Dane Everitt
7f5485d648
Fix dashboard to track server state 2018-07-15 17:53:40 -07:00
Dane Everitt
8b3713e3ff
FOrmat and disable server store temporarily 2018-07-15 17:09:53 -07:00
Dane Everitt
d0348a4505
Fix 2FA on login 2018-07-15 17:09:41 -07:00
Dane Everitt
4c4f6d3afe
Fix login 2018-07-15 16:57:00 -07:00
Dane Everitt
ca27346e49
Remove empty css 2018-07-15 16:51:27 -07:00
Dane Everitt
f2d2725ca0
Merge branch 'feature/vuejs' into feature/vue-serverview 2018-07-15 16:50:11 -07:00
Dane Everitt
b859ed61f4
Performance improvements to browser tests 2018-07-15 16:20:36 -07:00
Dane Everitt
d9a09e92bd
Add tests for all of the account actions 2018-07-15 15:58:24 -07:00
Dane Everitt
be2c76c24a
Add tests for password changing 2018-07-15 11:44:18 -07:00
Dane Everitt
6e9123af19
Correctly tear down tests and remove cookies 2018-07-15 11:44:08 -07:00
Dane Everitt
8bbe6bc279
Add test, fix behavior of model creation 2018-07-14 22:58:33 -07:00
Dane Everitt
550c622d3b
Obliterate JWT from codebase 2018-07-14 22:48:09 -07:00
Dane Everitt
6336e5191f
Strip out JWT usage and use cookies to track the currently logged in user 2018-07-14 22:42:58 -07:00
Dane Everitt
a7fae86e58
Treat unauthenticated exceptions the same as everything else 2018-07-14 22:42:38 -07:00
Dane Everitt
aba1b297c8
Add a test that wont work due to auth issues currently 2018-07-14 22:11:56 -07:00
Dane Everitt
a44b4c4426
Fix changing email address error handling 2018-07-14 22:03:19 -07:00
Dane Everitt
eafc4408eb
Fix broken unit tests 2018-07-14 21:49:49 -07:00
Dane Everitt
8b9c2465f3
Correct behavior of errors on the login form 2018-07-14 21:26:08 -07:00
Dane Everitt
2ae43e1f61
Add changes for vagrant 2018-07-14 21:16:18 -07:00
Dane Everitt
d17442a096
Disable automatic optimization and change v:serve for new dev environment 2018-07-14 15:07:19 -07:00
Dane Everitt
c82f273d85
Fix remaining broken tests 2018-07-04 19:38:23 -07:00
Dane Everitt
6c20ea9881
Add tests for changed controllers 2018-07-04 19:20:33 -07:00
Dane Everitt
ec8e434375
Set the 2fa image to always have a consistent height, less jarring transition 2018-07-04 19:00:20 -07:00
Dane Everitt
5010c0c756
Merge branch 'feature/vuejs' into feature/vuejs-account 2018-07-04 18:12:57 -07:00
Dane Everitt
6419b1cf81
Handle password reset logic change for 2fa 2018-07-04 18:11:43 -07:00
Dane Everitt
af9af78938
Merge branch 'develop' into feature/vuejs 2018-07-04 18:09:07 -07:00
Dane Everitt
81f1796a6a
Merge branch 'release/v0.7.9' 2018-07-04 12:08:14 -07:00
Dane Everitt
8341cdbc88
Bump for release 2018-07-04 11:44:21 -07:00
Dane Everitt
b342d4dc6b
Change v:serve to match the new vagrant setup 2018-07-03 23:11:22 -07:00
Dane Everitt
603b8a3094
Merge branch 'feature/vuejs' into feature/vuejs-account 2018-07-02 21:01:04 -07:00
Dane Everitt
48cb01f438
Merge branch 'develop' into feature/vuejs 2018-07-02 21:00:42 -07:00
Dane Everitt
28442cead3
Merge branch 'release/v0.7.8' 2018-07-02 21:00:16 -07:00
Dane Everitt
0a828e0f8d
Bump for release 2018-07-01 15:02:56 -07:00
Dane Everitt
7711b697ad
Finalize two-factor handling on account. 2018-06-20 23:05:35 -07:00
Dane Everitt
0cc895f2d5
Finalize email/password changing in UI 2018-06-17 16:53:24 -07:00
Dane Everitt
81da55d46b
Actually fix the endless redirect loop when the application needs a fresh JWT. 2018-06-17 15:06:34 -07:00
Dane Everitt
5c3d3f6ce9
Better support for mobile devices on login and account pages 2018-06-16 18:04:48 -07:00
Dane Everitt
941c585c73
Fix animations being nuked on production compilation 2018-06-16 17:13:03 -07:00
Dane Everitt
074a929315
Fix icon size in production compiled assets 2018-06-16 17:05:06 -07:00
Dane Everitt
7d509e8ae5
Remove the glow on inputs in Safari/Chrome 2018-06-16 17:00:35 -07:00
Dane Everitt
462e59e330
Make modals look sane on phones 2018-06-16 16:50:18 -07:00
Dane Everitt
ac7cefb83f
Make the account page mobile friendly 2018-06-16 16:43:52 -07:00
Dane Everitt
4e4a183f48
Put the modal more at the top, looks funky in middle 2018-06-16 16:27:53 -07:00
Dane Everitt
d6959ea3dd
Add a basic modal template to be used 2018-06-16 16:25:26 -07:00
Dane Everitt
84fecb7a92
Import only the needed things from lodash 2018-06-16 15:05:36 -07:00
Dane Everitt
fce394f6bd
Change email handling and logout function 2018-06-16 14:30:20 -07:00
Dane Everitt
ca0c35bf82
Avoid getting stuck in an endless redirect loop... 2018-06-16 14:27:23 -07:00
Dane Everitt
1acedc2de2
Remove luxon completely. 2018-06-16 14:11:58 -07:00
Dane Everitt
e7faf979a1
Change login handling to automatically redirect a user if their session will need renewal. 2018-06-16 14:05:39 -07:00
Dane Everitt
24bb8da43d
Fix CSS issue with login page due to input classes 2018-06-16 12:43:32 -07:00
Dane Everitt
b8b9acd0e6
Get the base email update working through the API.
Still going to need to determine the best course of action to update the token on the client side.
2018-06-11 22:56:57 -07:00
Dane Everitt
14927c3e7e
Add base UI for account management 2018-06-11 22:36:43 -07:00
Dane Everitt
e5e66fdb58
Fix error handling in dashboard 2018-06-11 20:42:01 -07:00
Jakob Schrettenbrunner
05478e3277 Merge branch 'feature/vuejs' into feature/vue-serverview 2018-06-11 21:06:12 +02:00
Jakob Schrettenbrunner
f971cdf9ca add v:serve shortcut for vagrant
automatically install nodejs and yarn
add some info on change detection in vagrant to BUILDING.md
2018-06-11 00:32:54 +02:00
Jakob Schrettenbrunner
5e3f705a4c add postcss for proper css compiling 2018-06-11 00:32:07 +02:00
Dane Everitt
03c83c084a
Revert use of cookies, go back to using a JWT 2018-06-06 22:49:44 -07:00
Dane Everitt
871147f2d9
Remove old storage 2018-06-06 22:18:43 -07:00
Dane Everitt
a6441169b1
Add build directions that are more useful 2018-06-06 21:59:45 -07:00
Dane Everitt
48982ecc00
Dont track ziggy, compiled asset 2018-06-06 21:46:14 -07:00
Dane Everitt
4ffe6c96ad
Fix support for hot reloading without requiring anything special in the app 2018-06-06 21:44:52 -07:00
Jakob Schrettenbrunner
cbdf4d4e1a Merge branch 'feature/vuejs' into feature/move-to-webpack 2018-06-06 22:41:15 +02:00
Jakob Schrettenbrunner
6ed46c2e75 start adding webpack-serve for hot reloading 2018-06-06 22:33:24 +02:00
Dane Everitt
5bcabbde35
Get dashboard in a more working state 2018-06-05 23:42:34 -07:00
Dane Everitt
e948d81d8a
Base attempt at using vuex to handle logins 2018-06-05 23:00:01 -07:00
Dane Everitt
cc58bc9bd5
Switch to uglifyjs for speed improvement, leverage caching 2018-06-03 20:34:30 -07:00
Dane Everitt
9d624d2c39
Fix things I broke when cleaning 2018-06-03 20:09:41 -07:00
Dane Everitt
680e8f22d9
Somehow this made node_modules bigger. 2018-06-03 20:02:08 -07:00
Dane Everitt
b32078d83c
Add helpers for building 2018-06-03 19:56:45 -07:00
Dane Everitt
daf9a20e62
Make that css smol 2018-06-03 19:50:58 -07:00
Dane Everitt
aea6944f16
Fix postcss plugin order 2018-06-03 19:40:05 -07:00
Dane Everitt
80b0816718
Better support for CSS and JS 2018-06-03 19:35:50 -07:00
Dane Everitt
bbdade398a
Name files correctly 2018-06-03 18:53:27 -07:00
Dane Everitt
8673a061ac
Remove gulp, move entirely to webpack 2018-06-03 18:46:27 -07:00
Dane Everitt
e84d2d6ae1
Get webpack working with the JS build 2018-06-03 18:03:46 -07:00
Dane Everitt
c5f6b1a919
Push what I have I guess 2018-06-03 17:40:35 -07:00
Jakob Schrettenbrunner
855af7cb4d commit files that were out of view 2018-06-04 00:46:24 +02:00
Jakob Schrettenbrunner
58ad7a4b27 start to properly use vuex 2018-06-04 00:45:01 +02:00
Jakob Schrettenbrunner
20472a903c merge remote changes 2018-06-03 18:31:43 +02:00
Dane Everitt
7b6c14cf7b
Don't do weird things with container height. 2018-06-02 23:38:01 -07:00
Dane Everitt
0bf4764bfb
Add navigation to the server view 2018-06-02 23:36:20 -07:00
Dane Everitt
349ec7da38
ungoof navigation 2018-06-02 23:31:30 -07:00
Dane Everitt
e65854c8c2
Merge branch 'feature/vuejs' into feature/vue-serverview 2018-06-02 23:28:55 -07:00
Dane Everitt
ee9a34716d
Add navigation to vue, improve responsiveness of the design 2018-06-02 23:15:10 -07:00
Dane Everitt
be5a9108f9
Dont refresh server statuses unless the page is active
Reduces the number of polling requests happening on the server by only sending those requests if the user is actively viewing the dashboard.

There was no point in updating the resource usage if no one is viewing it. After 30 seconds away from the window when a user comes back it will update instantenously, otherwise it'll just update after 5 seconds.
2018-06-02 22:23:54 -07:00
Dane Everitt
02b29a66ea
Use client API to get resource use for a server 2018-06-02 19:08:53 -07:00
Dane Everitt
bcd3b055dd
Break out the server box into a component 2018-06-02 17:41:06 -07:00
Dane Everitt
0d56ed19a7
Fix flash margins on login page 2018-06-02 17:15:04 -07:00
Dane Everitt
6b2649ad2c
Merge branch 'feature/vuejs' into feature/vuejs-serverlist 2018-06-02 17:12:45 -07:00
Dane Everitt
6005def7bc
Merge branch 'feature/vuejs' into feature/dusk-vuejs 2018-06-02 17:06:30 -07:00
Dane Everitt
dec969bf9f
Fix checkpoint behavior to only work when a token is provided 2018-06-02 17:01:54 -07:00
Dane Everitt
4209be021e
Add handlers for non-successful responses from the panel 2018-06-02 16:59:16 -07:00
Dane Everitt
92c03d4953
Add tests for password reset page functionality 2018-06-02 16:39:49 -07:00
Dane Everitt
7a1d73ba9e
Let gulp build the necessary core files using artisan 2018-06-02 16:02:41 -07:00
Dane Everitt
ebb7b6de9b
Let gulp build the necessary core files using artisan 2018-06-02 16:02:25 -07:00
Dane Everitt
cf07ba5746
Let gulp build the necessary core files using artisan 2018-06-02 15:54:52 -07:00
Dane Everitt
e0d67ff857
Merge branch 'feature/vuejs' into feature/vue-serverview 2018-05-31 23:01:24 -07:00
Dane Everitt
316bb9c11e
Merge branch 'feature/vuejs' into feature/dusk-vuejs 2018-05-31 23:00:08 -07:00
Dane Everitt
6c598f9100
Merge branch 'feature/vuejs' into feature/vuejs-serverlist 2018-05-31 22:59:39 -07:00
Dane Everitt
5f70502f20
Merge branch 'develop' into feature/vuejs 2018-05-31 22:59:16 -07:00
Dane Everitt
f8fa62e3d6
First round of authentication tests 2018-05-31 22:42:52 -07:00
Dane Everitt
b50f314eda
💯 Lets not accidentally drop the entire database again. 2018-05-31 22:30:05 -07:00
Dane Everitt
c86690a695
Get base code for dusk tests 2018-05-31 21:45:49 -07:00
Jakob Schrettenbrunner
e808919c5c fix gulp scripts pipeline failing on second run because of how sourcemaps are cleared 2018-05-31 18:26:34 +02:00
Jakob Schrettenbrunner
c58ef1f8a8 Merge branch 'feature/vuejs-serverlist' into feature/vue-serverview 2018-05-31 18:26:07 +02:00
Jakob Schrettenbrunner
a1558fa00f add sourcemaps to gulp pipelines 2018-05-31 17:59:18 +02:00
Dane Everitt
9831adb91c
Cleanup dashboard, make flash more customizable for pages 2018-05-28 16:28:36 -07:00
Dane Everitt
caa0d21ac9
Handle state mutations for users better in Vuex 2018-05-28 15:37:09 -07:00
Jakob Schrettenbrunner
11d96c44d1 Merge branch 'feature/vuejs-serverlist' into feature/vue-serverview 2018-05-29 00:04:51 +02:00
Jakob Schrettenbrunner
378a1859cf Merge branch 'feature/vuejs-serverlist' into feature/vue-serverview 2018-05-29 00:04:41 +02:00
Dane Everitt
a1444b047e
Fix JWT handling for API access when logging in 2018-05-28 14:59:48 -07:00
Jakob Schrettenbrunner
5dd9ed20aa add sourcemaps to gulp and pug support to vue 2018-05-28 23:16:03 +02:00
Dane Everitt
aa61afb58f
Add proper server models 2018-05-28 14:11:23 -07:00
Dane Everitt
6e5c365018
Use the client API to load servers on the listing page 2018-05-28 13:23:40 -07:00
Dane Everitt
ad69193ac0
Add JWT to login forms 2018-05-28 12:48:42 -07:00
Dane Everitt
47c1ecc9bc
Make server blocks clickable, break out routes into their own file 2018-05-28 11:34:24 -07:00
Jakob Schrettenbrunner
89f47c6dbb mocked server page and better navigation and overall layout 2018-05-28 00:37:03 +02:00
Jakob Schrettenbrunner
d2c770d218 add new favicon 2018-05-28 00:35:54 +02:00
Dane Everitt
6f2fcabf22
Add very basic server search and dynamic rendering functionality 2018-05-26 23:17:02 -07:00
Dane Everitt
f337a89320
Add search bar to dash 2018-05-26 22:19:33 -07:00
Dane Everitt
d78189df23
Improve dash design 2018-05-26 22:09:29 -07:00
Dane Everitt
9d8830a2d7
Get initial mockup of new server list up 2018-05-26 17:20:36 -07:00
Dane Everitt
64175ce35a
Tweak colors 2018-05-26 16:11:44 -07:00
Dane Everitt
f5ffa121b0
Introduce pterodactyl official blue 2018-05-26 16:05:30 -07:00
Dane Everitt
0b7dbd65ff
Final cleanup 2018-05-26 15:00:41 -07:00
Dane Everitt
7a077f3281
Remove the flash plugin store correctly 2018-05-26 14:59:58 -07:00
Dane Everitt
0a706d1b45
Add custom flash library that works as expected 2018-05-26 14:50:38 -07:00
Dane Everitt
bab20812a0
More UI fixes for consistency 2018-05-26 13:06:41 -07:00
Dane Everitt
b35eb77a70
Remove the pterodactyl directory when handling assets
This supports moving away from multiple-theme support in the Panel since that is no longer going to be offered.
2018-05-26 12:33:27 -07:00
Dane Everitt
f09eb8eec9
Double encoding happens by default now 2018-05-26 12:22:02 -07:00
Dane Everitt
caf784722c
Update lock file 2018-05-26 12:20:23 -07:00
Dane Everitt
cf90f56777
Merge branch 'develop' into feature/vuejs-auth 2018-05-26 12:17:14 -07:00
Dane Everitt
40732e1237
Merge branch 'release/v0.7.7' 2018-05-26 11:47:37 -07:00
Dane Everitt
70b8debe6e
Bump for release 2018-05-26 11:43:39 -07:00
Dane Everitt
4fad244073
Show correct auth error. 2018-04-08 16:16:04 -05:00
Dane Everitt
b6e94d9a1e
Code cleanup 2018-04-08 16:00:52 -05:00
Dane Everitt
6d970a4cc3
Finalize login page! 2018-04-08 15:46:32 -05:00
Dane Everitt
d63624f607
Working login form with password reset functionality. 2018-04-08 15:18:13 -05:00
Dane Everitt
c3e462ab2f
Cleanup login/reset functionality, address security issue with 2FA pathways 2018-04-07 16:17:51 -05:00
Dane Everitt
eade81f89b
Untrack build assets 2018-04-07 14:06:30 -05:00
Dane Everitt
4f3c668420
Refactor auth controllers to be cleaner and easier to maintain 2018-04-07 12:35:15 -05:00
Dane Everitt
324b989a29
Get a working rough copy of the login page 2018-04-01 17:46:16 -05:00
Dane Everitt
94710934b9
Add csrf component 2018-03-31 16:44:20 -05:00
Dane Everitt
598bae7b70
Add translations to vue files 2018-03-31 16:33:10 -05:00
Dane Everitt
791cbaa5ce
Get things into a somewhat working state on the login form 2018-03-31 15:52:11 -05:00
Dane Everitt
7de2c8684c
More dependency management adjustments 2018-03-31 15:51:18 -05:00
Dane Everitt
cc6ec0415a
Use correct uglify package 2018-03-31 00:05:33 -05:00
Dane Everitt
3c47c1565f
Add webpack to be used when building vue and JS 2018-03-30 23:58:38 -05:00
Dane Everitt
8d704ae5c8
Inital commit with gulp and base asset setup 2018-03-27 00:44:14 -05:00
2018 changed files with 74392 additions and 76250 deletions

View file

@ -1,8 +0,0 @@
{
"presets": ["es2015"],
"compact": true,
"minified": true,
"only": "public/themes/pterodactyl/js/frontend/files/src/*.js",
"sourceMaps": "inline",
"comments": false
}

View file

@ -1,76 +0,0 @@
# Pterodactyl Panel - Docker Image
This is a ready to use docker image for the panel.
## Requirements
This docker image requires some additional software to function. The software can either be provided in other containers (see the [docker-compose.yml](docker-compose.yml) as an example) or as existing instances.
A mysql database is required. We recommend the stock [MariaDB Image](https://hub.docker.com/_/mariadb/) image if you prefer to run it in a docker container. As a non-containerized option we recommend mariadb.
A caching software is required as well. We recommend the stock [Redis Image](https://hub.docker.com/_/redis/) image. You can choose any of the [supported options](#cache-drivers).
You can provide additional settings using a custom `.env` file or by setting the appropriate environment variables in the docker-compose file.
## Setup
Start the docker container and the required dependencies (either provide existing ones or start containers as well, see the [docker-compose.yml](docker-compose.yml) file as an example).
After the startup is complete you'll need to create a user.
If you are running the docker container without docker-compose, use:
```
docker exec -it <container id> php artisan p:user:make
```
If you are using docker compose use
```
docker-compose exec panel php artisan p:user:make
```
## Environment Variables
There are multiple environment variables to configure the panel when not providing your own `.env` file, see the following table for details on each available option.
Note: If your `APP_URL` starts with `https://` you need to provide an `LETSENCRYPT_EMAIL` as well so Certificates can be generated.
| Variable | Description | Required |
| ------------------- | ------------------------------------------------------------------------------ | -------- |
| `APP_URL` | The URL the panel will be reachable with (including protocol) | yes |
| `APP_TIMEZONE` | The timezone to use for the panel | yes |
| `LETSENCRYPT_EMAIL` | The email used for letsencrypt certificate generation | yes |
| `DB_HOST` | The host of the mysql instance | yes |
| `DB_PORT` | The port of the mysql instance | yes |
| `DB_DATABASE` | The name of the mysql database | yes |
| `DB_USERNAME` | The mysql user | yes |
| `DB_PASSWORD` | The mysql password for the specified user | yes |
| `CACHE_DRIVER` | The cache driver (see [Cache drivers](#cache-drivers) for detais) | yes |
| `SESSION_DRIVER` | | yes |
| `QUEUE_DRIVER` | | yes |
| `REDIS_HOST` | The hostname or IP address of the redis database | yes |
| `REDIS_PASSWORD` | The password used to secure the redis database | maybe |
| `REDIS_PORT` | The port the redis database is using on the host | maybe |
| `MAIL_DRIVER` | The email driver (see [Mail drivers](#mail-drivers) for details) | yes |
| `MAIL_FROM` | The email that should be used as the sender email | yes |
| `MAIL_HOST` | The host of your mail driver instance | maybe |
| `MAIL_PORT` | The port of your mail driver instance | maybe |
| `MAIL_USERNAME` | The username for your mail driver | maybe |
| `MAIL_PASSWORD` | The password for your mail driver | maybe |
### Cache drivers
You can choose between different cache drivers depending on what you prefer.
We recommend redis when using docker as it can be started in a container easily.
| Driver | Description | Required variables |
| -------- | ------------------------------------ | ------------------------------------------------------ |
| redis | host where redis is running | `REDIS_HOST` |
| redis | port redis is running on | `REDIS_PORT` |
| redis | redis database password | `REDIS_PASSWORD` |
### Mail drivers
You can choose between different mail drivers according to your needs.
Every driver requires `MAIL_FROM` to be set.
| Driver | Description | Required variables |
| -------- | ------------------------------------ | ------------------------------------------------------------- |
| mail | uses the installed php mail | |
| mandrill | [Mandrill](http://www.mandrill.com/) | `MAIL_USERNAME` |
| postmark | [Postmark](https://postmarkapp.com/) | `MAIL_USERNAME` |
| mailgun | [Mailgun](https://www.mailgun.com/) | `MAIL_USERNAME`, `MAIL_HOST` |
| smtp | Any SMTP server can be configured | `MAIL_USERNAME`, `MAIL_HOST`, `MAIL_PASSWORD`, `MAIL_PORT` |

View file

@ -1,51 +0,0 @@
# If using Ubuntu this file should be placed in:
# /etc/nginx/sites-available/
#
# If using CentOS this file should be placed in:
# /etc/nginx/conf.d/
#
server {
listen 80;
server_name _;
root /app/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# the fastcgi_pass path needs to be changed accordingly when using CentOS
fastcgi_pass unix:/var/run/php/php-fpm7.2.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}

View file

@ -1,70 +0,0 @@
# If using Ubuntu this file should be placed in:
# /etc/nginx/sites-available/
#
server {
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name <domain>;
root /app/public;
index index.php;
access_log /var/log/nginx/pterodactyl.app-access.log;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
# strengthen ssl security
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
# See the link below for more SSL information:
# https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
#
# ssl_dhparam /etc/ssl/certs/dhparam.pem;
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php-fpm7.2.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}

View file

@ -1,70 +0,0 @@
#!/bin/ash
## Ensure we are in /app
cd /app
mkdir -p /var/log/panel/logs/ /var/log/supervisord/ /var/log/nginx/ /var/log/php7/ \
&& rmdir /app/storage/logs/ \
&& chmod 777 /var/log/panel/logs/ \
&& ln -s /var/log/panel/logs/ /app/storage/
## check for .env file and generate app keys if missing
if [ -f /app/var/.env ]; then
echo "external vars exist."
rm /app/.env
ln -s /app/var/.env /app/
else
echo "external vars don't exist."
rm /app/.env
touch /app/var/.env
## manually generate a key because key generate --force fails
echo -e "Generating key."
APP_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
echo -e "Generated app key: $APP_KEY"
echo -e "APP_KEY=$APP_KEY" > /app/var/.env
ln -s /app/var/.env /app/
fi
echo "Checking if https is required."
if [ -f /etc/nginx/conf.d/default.conf ]; then
echo "Using nginx config already in place."
else
echo "Checking if letsencrypt email is set."
if [ -z $LE_EMAIL ]; then
echo "No letsencrypt email is set Failing to http."
cp .dev/docker/default.conf /etc/nginx/conf.d/default.conf
else
echo "writing ssl config"
cp .dev/docker/default_ssl.conf /etc/nginx/conf.d/default.conf
echo "updating ssl config for domain"
sed -i "s|<domain>|$(echo $APP_URL | sed 's~http[s]*://~~g')|g" /etc/nginx/conf.d/default.conf
echo "generating certs"
certbot certonly -d $(echo $APP_URL | sed 's~http[s]*://~~g') --standalone -m $LE_EMAIL --agree-tos -n
fi
fi
## check for DB up before starting the panel
echo "Checking database status."
until nc -z -v -w30 $DB_HOST 3306
do
echo "Waiting for database connection..."
# wait for 5 seconds before check again
sleep 5
done
## make sure the db is set up
echo -e "Migrating and Seeding D.B"
php artisan migrate --force
php artisan db:seed --force
## start cronjobs for the queue
echo -e "Starting cron jobs."
crond -L /var/log/crond -l 5
echo -e "Starting supervisord."
exec "$@"

View file

@ -1,39 +0,0 @@
[unix_http_server]
file=/tmp/supervisor.sock ; path to your socket file
[supervisord]
logfile=/var/log/supervisord/supervisord.log ; supervisord log file
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=2 ; number of backed up logfiles
loglevel=error ; info, debug, warn, trace
pidfile=/var/run/supervisord.pid ; pidfile location
nodaemon=false ; run supervisord as a daemon
minfds=1024 ; number of startup file descriptors
minprocs=200 ; number of process descriptors
user=root ; default user
childlogdir=/var/log/supervisord/ ; where child log files will live
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[program:php-fpm]
command=/usr/sbin/php-fpm7 -F
autostart=true
autorestart=true
[program:queue-worker]
command=/usr/bin/php /app/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
user=nginx
autostart=true
autorestart=true
[program:nginx]
command=/usr/sbin/nginx -g 'daemon off;'
autostart=true
autorestart=true
priority=10
stdout_events_enabled=true
stderr_events_enabled=true

View file

@ -1,16 +0,0 @@
[pterodactyl]
user = nginx
group = nginx
listen = /var/run/php/php-fpm7.2.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0750
pm = ondemand
pm.max_children = 9
pm.process_idle_timeout = 10s
pm.max_requests = 200
clear_env = no

View file

@ -1,39 +0,0 @@
APP_ENV=develop
APP_DEBUG=true
APP_KEY=SomeRandomString3232RandomString
APP_THEME=pterodactyl
APP_TIMEZONE=UTC
APP_CLEAR_TASKLOG=720
APP_DELETE_MINUTES=10
APP_URL=http://192.168.50.2/
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=panel
DB_USERNAME=pterodactyl
DB_PASSWORD=pterodactyl
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
SESSION_DRIVER=database
MAIL_DRIVER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=
MAIL_FROM=support@pterodactyl.io
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true
QUEUE_DRIVER=database
QUEUE_HIGH=high
QUEUE_STANDARD=standard
QUEUE_LOW=low
SQS_KEY=aws-public
SQS_SECRET=aws-secret
SQS_QUEUE_PREFIX=aws-queue-prefix

View file

@ -1,13 +0,0 @@
[Unit]
Description=Mailhog
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` as the user and group.
User=www-data
Group=www-data
Restart=on-failure
ExecStart=/usr/bin/mailhog
[Install]
WantedBy=multi-user.target

View file

@ -1,189 +0,0 @@
# MariaDB database server configuration file.
#
# You can copy this file to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages = en_US
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
#
# * Fine Tuning
#
max_connections = 100
connect_timeout = 5
wait_timeout = 600
max_allowed_packet = 16M
thread_cache_size = 128
sort_buffer_size = 4M
bulk_insert_buffer_size = 16M
tmp_table_size = 32M
max_heap_table_size = 32M
#
# * MyISAM
#
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched. On error, make copy and try a repair.
myisam_recover_options = BACKUP
key_buffer_size = 128M
#open-files-limit = 2000
table_open_cache = 400
myisam_sort_buffer_size = 512M
concurrent_insert = 2
read_buffer_size = 2M
read_rnd_buffer_size = 1M
#
# * Query Cache Configuration
#
# Cache only tiny result sets, so we can fit more in the query cache.
query_cache_limit = 128K
query_cache_size = 64M
# for more write intensive setups, set to DEMAND or OFF
#query_cache_type = DEMAND
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# we do want to know about network errors and such
log_warnings = 2
#
# Enable the slow query log to see queries with especially long duration
#slow_query_log[={0|1}]
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 10
#log_slow_rate_limit = 1000
log_slow_verbosity = query_plan
#log-queries-not-using-indexes
#log_slow_admin_statements
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#report_host = master1
#auto_increment_increment = 2
#auto_increment_offset = 1
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
# not fab for performance, but safer
#sync_binlog = 1
expire_logs_days = 10
max_binlog_size = 100M
# slaves
#relay_log = /var/log/mysql/relay-bin
#relay_log_index = /var/log/mysql/relay-bin.index
#relay_log_info_file = /var/log/mysql/relay-bin.info
#log_slave_updates
#read_only
#
# If applications support it, this stricter sql_mode prevents some
# mistakes like inserting invalid dates etc.
#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
default_storage_engine = InnoDB
# you can't just change log file size, requires special procedure
#innodb_log_file_size = 50M
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completion
[isamchk]
key_buffer = 16M
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

View file

@ -1,17 +0,0 @@
#####################################################
Pterodactyl Panel Vagrant VM
Install: /var/www/html/pterodactyl
Ports:
Panel: 80 (50080 on host)
MailHog: 8025 (58025 on host)
MySQL: 3306 (53306 on host)
Default panel users:
user: admin passwd: Ptero123 (admin user)
user: user passwd: Ptero123 (standard user)
MySQL is accessible using root/pterodactyl or pterodactyl/pterodactyl
Service for pteroq and mailhog are running
#####################################################

View file

@ -1,84 +0,0 @@
#!/bin/bash
echo "Provisioning development environment for Pterodactyl Panel."
cp /var/www/html/pterodactyl/.dev/vagrant/motd.txt /etc/motd
chmod -x /etc/update-motd.d/10-help-text /etc/update-motd.d/51-cloudguest
apt-get install -y software-properties-common > /dev/null
echo "Add the ondrej/php ppa repository"
add-apt-repository -y ppa:ondrej/php > /dev/null
echo "Add the mariadb repository"
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash > /dev/null
apt-get update > /dev/null
echo "Install the dependencies"
export DEBIAN_FRONTEND=noninteractive
# set the mariadb root password because mariadb asks for it
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password password pterodactyl'
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password_again password pterodactyl'
# actually install
apt-get install -y php7.2 php7.2-cli php7.2-gd php7.2-mysql php7.2-pdo php7.2-mbstring php7.2-tokenizer php7.2-bcmath php7.2-xml php7.2-fpm php7.2-memcached php7.2-curl php7.2-zip php-xdebug mariadb-server nginx curl tar unzip git memcached > /dev/null
echo "Install composer"
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
echo "Install and run mailhog"
curl -sL -o /usr/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.0/MailHog_linux_amd64
chmod +x /usr/bin/mailhog
cp /var/www/html/pterodactyl/.dev/vagrant/mailhog.service /etc/systemd/system/
systemctl enable mailhog.service
systemctl start mailhog
echo "Configure xDebug"
cp /var/www/html/pterodactyl/.dev/vagrant/xdebug.ini /etc/php/7.2/mods-available/
systemctl restart php7.2-fpm
echo "Configure nginx"
cp /var/www/html/pterodactyl/.dev/vagrant/pterodactyl.conf /etc/nginx/sites-available/
rm /etc/nginx/sites-available/default
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
systemctl restart nginx
echo "Setup database"
# Replace default config with custom one to bind mysql to 0.0.0.0 to make it accessible from the host
cp /var/www/html/pterodactyl/.dev/vagrant/mariadb.cnf /etc/mysql/my.cnf
systemctl restart mariadb
mysql -u root -ppterodactyl << SQL
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'%' IDENTIFIED BY 'pterodactyl' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pterodactyl' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQL
echo "Setup pterodactyl queue worker service"
cp /var/www/html/pterodactyl/.dev/vagrant/pteroq.service /etc/systemd/system/
systemctl enable pteroq.service
echo "Setup panel with base settings"
cp /var/www/html/pterodactyl/.dev/vagrant/.env.vagrant /var/www/html/pterodactyl/.env
cd /var/www/html/pterodactyl
chmod -R 755 storage/* bootstrap/cache
composer install --no-progress
php artisan key:generate --force
php artisan migrate
php artisan db:seed
php artisan p:user:make --name-first Test --name-last Admin --username admin --email testadmin@pterodactyl.io --password Ptero123 --admin 1
php artisan p:user:make --name-first Test --name-last User --username user --email testuser@pterodactyl.io --password Ptero123 --admin 0
echo "Add queue cronjob and start queue worker"
(crontab -l 2>/dev/null; echo "* * * * * php /var/www/html/pterodactyl/artisan schedule:run >> /dev/null 2>&1") | crontab -
systemctl start pteroq
echo " ----------------"
echo "Provisioning is completed."
echo "The panel should be available at http://localhost:50080/"
echo "You may use the default admin user to login: admin/Ptero123"
echo "A normal user has also been created: user/Ptero123"
echo "MailHog is available at http://localhost:58025/"
echo "Connect to the database using root/pterodactyl or pterodactyl/pterodactyl on localhost:53306"
echo "If you want to access the panel using http://pterodactyl.app you can use the vagrant-dns plugin"
echo "Install it with 'vagrant plugin install vagrant-dns', then run 'vagrant dns --install' once"
echo "On first use you'll have to manually start vagrant-dns with 'vagrant dns --start'"

View file

@ -1,51 +0,0 @@
# If using Ubuntu this file should be placed in:
# /etc/nginx/sites-available/
#
# If using CentOS this file should be placed in:
# /etc/nginx/conf.d/
#
server {
listen 80;
server_name 0.0.0.0;
root /var/www/html/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# the fastcgi_pass path needs to be changed accordingly when using CentOS
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}

View file

@ -1,20 +0,0 @@
# Pterodactyl Queue Worker File
# ----------------------------------
# File should be placed in:
# /etc/systemd/system
#
# nano /etc/systemd/system/pteroq.service
[Unit]
Description=Pterodactyl Queue Worker
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` as the user and group.
User=www-data
Group=www-data
Restart=on-failure
ExecStart=/usr/bin/php /var/www/html/pterodactyl/artisan queue:work database --queue=high,standard,low --sleep=3 --tries=3
[Install]
WantedBy=multi-user.target

View file

@ -1,10 +0,0 @@
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.scream=0
xdebug.show_local_vars=1
xdebug.idekey=PHPSTORM
xdebug.remote_log=/tmp/xdebug.log

View file

@ -1,12 +1,17 @@
root = true root = true
[*] [*]
end_of_line = lf
insert_final_newline = true
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
tab_width = 4
end_of_line = lf
charset = utf-8 charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true
[*.md] [*.md]
trim_trailing_whitespace = false trim_trailing_whitespace = false
[*.{md,nix,yml,yaml}]
indent_size = 2
tab_width = 2

View file

@ -1,31 +1,43 @@
APP_ENV=production APP_ENV=production
APP_DEBUG=false APP_DEBUG=false
APP_KEY= APP_KEY=
APP_THEME=pterodactyl APP_TIMEZONE=UTC
APP_TIMEZONE=America/New_York APP_URL=http://panel.example.com
APP_CLEAR_TASKLOG=720
APP_DELETE_MINUTES=10
APP_ENVIRONMENT_ONLY=true
LOG_CHANNEL=daily
APP_LOCALE=en APP_LOCALE=en
APP_ENVIRONMENT_ONLY=true
LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 DB_HOST=127.0.0.1
DB_PORT=3306 DB_PORT=3306
DB_DATABASE=panel DB_DATABASE=panel
DB_USERNAME=pterodactyl DB_USERNAME=pterodactyl
DB_PASSWORD= DB_PASSWORD=
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
CACHE_DRIVER=file
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
HASHIDS_SALT= HASHIDS_SALT=
HASHIDS_LENGTH=8 HASHIDS_LENGTH=8
MAIL_DRIVER=smtp MAIL_MAILER=smtp
MAIL_HOST=mailtrap.io MAIL_HOST=smtp.example.com
MAIL_PORT=2525 MAIL_PORT=25
MAIL_USERNAME= MAIL_USERNAME=
MAIL_PASSWORD= MAIL_PASSWORD=
MAIL_ENCRYPTION=tls MAIL_ENCRYPTION=tls
MAIL_FROM=no-reply@example.com MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Pterodactyl Panel"
QUEUE_HIGH=high # You should set this to your domain to prevent it defaulting to 'localhost', causing
QUEUE_STANDARD=standard # mail servers such as Gmail to reject your mail.
QUEUE_LOW=low #
# @see: https://github.com/pterodactyl/panel/pull/3110
# MAIL_EHLO_DOMAIN=panel.example.com

View file

@ -1,19 +0,0 @@
APP_ENV=testing
APP_DEBUG=true
APP_KEY=SomeRandomString3232RandomString
APP_THEME=pterodactyl
APP_TIMEZONE=UTC
APP_URL=http://localhost/
TESTING_DB_HOST=127.0.0.1
TESTING_DB_DATABASE=travis
TESTING_DB_USERNAME=root
TESTING_DB_PASSWORD=""
CACHE_DRIVER=array
SESSION_DRIVER=array
MAIL_DRIVER=array
QUEUE_DRIVER=sync
HASHIDS_SALT=test123
APP_ENVIRONMENT_ONLY=true

6
.eslintignore Normal file
View file

@ -0,0 +1,6 @@
public
node_modules
resources/views
babel.config.js
tailwind.config.js
webpack.config.js

52
.eslintrc.js Normal file
View file

@ -0,0 +1,52 @@
/** @type {import('eslint').Linter.Config} */
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 6,
ecmaFeatures: {
jsx: true,
},
project: './tsconfig.json',
tsconfigRootDir: './',
},
settings: {
react: {
pragma: 'React',
version: 'detect',
},
linkComponents: [
{ name: 'Link', linkAttribute: 'to' },
{ name: 'NavLink', linkAttribute: 'to' },
],
},
env: {
browser: true,
es6: true,
},
plugins: ['react', 'react-hooks', 'prettier', '@typescript-eslint'],
extends: [
// 'standard',
'eslint:recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:@typescript-eslint/recommended',
],
rules: {
eqeqeq: 'error',
'prettier/prettier': ['error', {}, { usePrettierrc: true }],
// TypeScript can infer this significantly better than eslint ever can.
'react/prop-types': 0,
'react/display-name': 0,
'react/no-unknown-property': ['error', {ignore: ['css']}],
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/no-non-null-assertion': 0,
// This setup is required to avoid a spam of errors when running eslint about React being
// used before it is defined.
//
// @see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md#how-to-use
'no-use-before-define': 0,
'@typescript-eslint/no-use-before-define': 'warn',
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }],
'@typescript-eslint/ban-ts-comment': ['error', { 'ts-expect-error': 'allow-with-description' }],
},
};

1
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1 @@
github: [matthewpi]

View file

@ -1,35 +0,0 @@
---
name: "\U0001F41B Bug Report"
about: For reporting code or design bugs with the software. DO NOT REPORT APACHE/NGINX/PHP CONFIGURATION ISSUES.
---
DO NOT REPORT ISSUES CONFIGURING: SSL, PHP, APACHE, NGINX, YOUR MACHINE, SSH, SFTP, ETC. ON THIS GITHUB TRACKER.
For assistance installating this software, as well as debugging issues with dependencies, please use our discord server: https://discord.gg/pterodactyl
You MUST complete all of the below information when reporting a bug, failure to do so will result in closure of your issue. PLEASE stop spamming our tracker with "bugs" that are not related to this project.
**STOP: READ FIRST, AND THEN DELETE THE ABOVE LINES**
**Background (please complete the following information):**
* Panel or Daemon:
* Version of Panel/Daemon:
* Server's OS:
* Your Computer's OS & Browser:
**Describe the bug**
A clear and concise description of what the bug is.
Please provide additional information too, depending on what you have issues with:
Panel: `php -v` (the php version in use).
Daemon: `uname -a` and `docker info` (your kernel version and information regarding docker)
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen. If applicable, add screenshots or a recording to help explain your problem.

View file

@ -1,17 +0,0 @@
---
name: "\U0001F680 Feature Request"
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -1,14 +0,0 @@
---
name: "⛔ Installation Help"
about: 'Visit our Discord for installation help: https://pterodactyl.io/discord'
---
We use GitHub issues only to discuss about Pterodactyl bugs and new features. For
this kind of questions about using Pterodactyl, please visit our Discord for assistance: https://pterodactyl.io/discord
DO NOT REPORT ISSUES CONFIGURING: SSL, PHP, APACHE, NGINX, YOUR MACHINE, SSH, SFTP, ETC. ON THIS GITHUB TRACKER.
For assistance installating this software, as well as debugging issues with dependencies, please use our discord server: https://discord.gg/pterodactyl
PLEASE stop spamming our tracker with "bugs" that are not related to this project.

87
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View file

@ -0,0 +1,87 @@
name: Bug Report
description: Something isn't working quite right in the software.
labels: [not confirmed]
body:
- type: markdown
attributes:
value: |
Bug reports should only be used for reporting issues with how the software works. For assistance installing this software, as well as debugging issues with dependencies, please use our [Discord server](https://discord.gg/pterodactyl).
- type: textarea
attributes:
label: Current Behavior
description: Please provide a clear & concise description of the issue.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Please describe what you expected to happen.
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: Please be as detailed as possible when providing steps to reproduce, failure to provide steps will result in this issue being closed.
validations:
required: true
- type: input
id: panel-version
attributes:
label: Panel Version
description: Version number of your Panel (latest is not a version)
placeholder: 1.4.0
validations:
required: true
- type: input
id: wings-version
attributes:
label: Wings Version
description: Version number of your Wings (latest is not a version)
placeholder: 1.4.2
validations:
required: true
- type: input
id: egg-details
attributes:
label: Games and/or Eggs Affected
description: Please include the specific game(s) or egg(s) you are running into this bug with.
placeholder: Minecraft (Paper), Minecraft (Forge)
- type: input
id: docker-image
attributes:
label: Docker Image
description: The specific Docker image you are using for the game(s) above.
placeholder: ghcr.io/pterodactyl/yolks:java_17
- type: textarea
id: panel-logs
attributes:
label: Error Logs
description: |
Run the following command to collect logs on your system.
Wings: `sudo wings diagnostics`
Panel: `tail -n 150 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | nc pteropaste.com 99`
placeholder: "https://pteropaste.com/a1h6z"
render: bash
validations:
required: false
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please [search here](https://github.com/pterodactyl/panel/issues) to see if an issue already exists for your problem.
options:
- label: I have searched the existing issues before opening this issue.
required: true
- label: I have provided all relevant details, including the specific game and Docker images I am using if this issue is related to running a server.
required: true
- label: I have checked in the Discord server and believe this is a bug with the software, and not a configuration issue with my specific system.
required: true

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Installation Help
url: https://discord.gg/pterodactyl
about: Please visit our Discord for help with your installation.
- name: General Question
url: https://discord.gg/pterodactyl
about: Please visit our Discord for general questions about Pterodactyl.

View file

@ -0,0 +1,32 @@
name: Feature Request
description: Suggest a new feature or improvement for the software.
labels: [feature request]
body:
- type: checkboxes
attributes:
label: Is there an existing feature request for this?
description: Please [search here](https://github.com/pterodactyl/panel/issues?q=is%3Aissue) to see if someone else has already suggested this.
options:
- label: I have searched the existing issues before opening this feature request.
required: true
- type: textarea
attributes:
label: Describe the feature you would like to see.
description: "A clear & concise description of the feature you'd like to have added, and what issues it would solve."
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like.
description: "You must explain how you'd like to see this feature implemented. Technical implementation details are not necessary, rather an idea of how you'd like to see this feature used."
validations:
required: true
- type: textarea
attributes:
label: Additional context to this request.
description: "Add any other context or screenshots about the feature request."
validations:
required: false

21
.github/docker/Caddyfile vendored Normal file
View file

@ -0,0 +1,21 @@
:8080 {
root * /var/www/pterodactyl/public/
file_server
header {
-Server
-X-Powered-By
Referrer-Policy "same-origin"
X-Frame-Options "deny"
X-XSS-Protection "1; mode=block"
X-Content-Type-Options "nosniff"
}
encode gzip zstd
php_fastcgi 127.0.0.1:9000 {
trusted_proxies 172.20.0.0/16
}
try_files {path} {path}/ /index.php?{query}
}

21
.github/docker/php-fpm.conf vendored Normal file
View file

@ -0,0 +1,21 @@
[global]
error_log = /dev/stderr
daemonize = no
[www]
user = nobody
group = nobody
listen = 127.0.0.1:9000
pm = dynamic
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_children = 64
pm.max_requests = 256
clear_env = no
catch_workers_output = yes
decorate_workers_output = no

57
.github/docker/supervisord.conf vendored Normal file
View file

@ -0,0 +1,57 @@
[supervisord]
logfile=/dev/stdout
logfile_maxbytes=0
loglevel=info
minfds=1024
minprocs=200
nodaemon=true
pidfile=/dev/null
[unix_http_server]
file=/tmp/supervisor.sock
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
[program:caddy]
command=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
autostart=true
autorestart=true
priority=10
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:php-fpm]
command=/usr/sbin/php-fpm --nodaemonize
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=LOG_CHANNEL="stderr"
[program:queue-worker]
command=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=standard --sleep=3 --tries=3
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=LOG_CHANNEL="stderr"
[program:yacron]
command=/usr/local/bin/yacron -c /etc/yacron.yaml
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=LOG_CHANNEL="stderr"

8
.github/docker/yacron.yaml vendored Normal file
View file

@ -0,0 +1,8 @@
jobs:
- name: scheduler
command:
- /usr/bin/php
- /var/www/pterodactyl/artisan
- schedule:run
schedule: "* * * * *"
utc: true

67
.github/workflows/docker.yaml vendored Normal file
View file

@ -0,0 +1,67 @@
name: Docker
on:
push:
branches:
- develop
- 1.0-develop
pull_request:
branches:
- develop
- 1.0-develop
release:
types:
- published
jobs:
push:
name: Push
runs-on: ubuntu-22.04
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Fetch metadata
id: metadata
uses: docker/metadata-action@v4
with:
images: ghcr.io/pterodactyl/panel
flavor: |
latest=false
tags: |
type=raw,value=latest,enable=${{ github.event_name == 'release' && github.event.action == 'published' && github.event.release.prerelease == false }}
type=ref,event=tag
type=ref,event=branch
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
if: "github.event_name != 'pull_request'"
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Update version
if: "github.event_name == 'release' && github.event.action == 'published'"
env:
REF: ${{ github.event.release.tag_name }}
run: |
sed -i "s/ 'version' => 'canary',/ 'version' => '${REF:1}',/" config/app.php
- name: Build and Push
uses: docker/build-push-action@v4
with:
context: .
file: ./Containerfile
push: ${{ github.event_name != 'pull_request' }}
platforms: linux/amd64,linux/arm64
labels: ${{ steps.metadata.outputs.labels }}
tags: ${{ steps.metadata.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max

210
.github/workflows/laravel.yaml vendored Normal file
View file

@ -0,0 +1,210 @@
name: Laravel
on:
push:
branches:
- "develop"
- "1.0-develop"
pull_request:
branches:
- "develop"
- "1.0-develop"
jobs:
analysis:
name: Static Analysis
runs-on: ubuntu-22.04
env:
APP_ENV: testing
APP_DEBUG: "true"
APP_KEY: SomeRandomString3232RandomString
CACHE_DRIVER: array
MAIL_MAILER: array
SESSION_DRIVER: array
QUEUE_CONNECTION: sync
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
extensions: bcmath, cli, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist
- name: Analyze
run: vendor/bin/phpstan analyse
lint:
name: Lint
runs-on: ubuntu-22.04
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
# TODO: Update to 8.2 once php-cs-fixer supports it
php-version: 8.1
extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist
- name: PHP CS Fixer
run: vendor/bin/php-cs-fixer fix --dry-run --diff
mysql:
name: Tests
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
php: [8.1, 8.2]
database: ["mariadb:10.2", "mariadb:10.9", "mysql:8"]
services:
database:
image: docker.io/library/${{ matrix.database }}
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: testing
ports:
- 3306/tcp
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
env:
APP_ENV: testing
APP_DEBUG: "true"
APP_KEY: SomeRandomString3232RandomString
APP_THEME: pterodactyl
APP_TIMEZONE: UTC
APP_URL: http://localhost/
APP_ENVIRONMENT_ONLY: "true"
CACHE_DRIVER: array
MAIL_MAILER: array
SESSION_DRIVER: array
QUEUE_CONNECTION: sync
HASHIDS_SALT: test123
DB_CONNECTION: mysql
DB_HOST: 127.0.0.1
DB_DATABASE: testing
DB_USERNAME: root
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Get cache directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-${{ matrix.php }}-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: bcmath, cli, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist
- name: Unit tests
run: vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit
env:
DB_HOST: UNIT_NO_DB
- name: Integration tests
run: vendor/bin/phpunit tests/Integration
env:
DB_PORT: ${{ job.services.database.ports[3306] }}
postgres:
name: Tests
runs-on: ubuntu-22.04
if: "!contains(github.event.head_commit.message, 'skip ci') && !contains(github.event.head_commit.message, 'ci skip')"
strategy:
fail-fast: false
matrix:
php: [8.1, 8.2]
database: ["postgres:13", "postgres:14", "postgres:15"]
services:
database:
image: docker.io/library/${{ matrix.database }}
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: testing
ports:
- 5432/tcp
options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3
env:
APP_ENV: testing
APP_DEBUG: "true"
APP_KEY: SomeRandomString3232RandomString
APP_THEME: pterodactyl
APP_TIMEZONE: UTC
APP_URL: http://localhost/
APP_ENVIRONMENT_ONLY: "true"
CACHE_DRIVER: array
MAIL_MAILER: array
SESSION_DRIVER: array
QUEUE_CONNECTION: sync
HASHIDS_SALT: test123
DB_CONNECTION: pgsql
DB_HOST: 127.0.0.1
DB_DATABASE: testing
DB_USERNAME: postgres
DB_PASSWORD: postgres
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Get cache directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-${{ matrix.php }}-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: bcmath, cli, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist
- name: Unit tests
run: vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit
env:
DB_HOST: UNIT_NO_DB
- name: Integration tests
run: vendor/bin/phpunit tests/Integration
env:
DB_PORT: ${{ job.services.database.ports[5432] }}

92
.github/workflows/release.yaml vendored Normal file
View file

@ -0,0 +1,92 @@
name: Release
on:
push:
tags:
- "v*"
jobs:
release:
name: Release
runs-on: ubuntu-22.04
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Create release branch and bump version
env:
REF: ${{ github.ref }}
run: |
BRANCH=release/${REF:10}
git config --local user.email "ci@pterodactyl.io"
git config --local user.name "Pterodactyl CI"
git checkout -b $BRANCH
git push -u origin $BRANCH
sed -i "s/ 'version' => 'canary',/ 'version' => '${REF:11}',/" config/app.php
git add config/app.php
git commit -m "ci(release): bump version"
git push
- name: Create release archive
run: |
rm -rf node_modules tests CODE_OF_CONDUCT.md CONTRIBUTING.md flake.lock flake.nix phpstan.neon phpunit.xml shell.nix
tar -czf panel.tar.gz * .editorconfig .env.example .eslintignore .eslintrc.js .gitignore .prettierrc.json
- name: Extract changelog
env:
REF: ${{ github.ref }}
run: |
sed -n "/^## ${REF:10}/,/^## /{/^## /b;p}" CHANGELOG.md > ./RELEASE_CHANGELOG
- name: Create checksum and add to changelog
run: |
SUM=`sha256sum panel.tar.gz`
echo -e "\n#### SHA256 Checksum\n\n\`\`\`\n$SUM\n\`\`\`\n" >> ./RELEASE_CHANGELOG
echo $SUM > checksum.txt
- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
draft: true
prerelease: ${{ contains(github.ref, 'rc') || contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
body_path: ./RELEASE_CHANGELOG
- name: Upload release archive
id: upload-release-archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: panel.tar.gz
asset_name: panel.tar.gz
asset_content_type: application/gzip
- name: Upload release checksum
id: upload-release-checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./checksum.txt
asset_name: checksum.txt
asset_content_type: text/plain

63
.github/workflows/ui.yaml vendored Normal file
View file

@ -0,0 +1,63 @@
name: UI
on:
push:
branches:
- "develop"
- "1.0-develop"
pull_request:
branches:
- "develop"
- "1.0-develop"
jobs:
lint:
name: Lint
runs-on: ubuntu-22.04
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Lint
run: pnpm run lint
tests:
name: Tests
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
node: [16, 18]
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Tests
run: pnpm run test

30
.gitignore vendored
View file

@ -1,34 +1,36 @@
/vendor /vendor
*.DS_Store* *.DS_Store*
.env !.env.ci
!.env.example
.env*
.vagrant/* .vagrant/*
.vscode/* .vscode/*
storage/framework/* storage/framework/*
/.idea /.idea
/nbproject /nbproject
/.direnv
package-lock.json
composer.lock
node_modules node_modules
*.log
_ide_helper_models.php
_ide_helper.php _ide_helper.php
_ide_helper_models.php
sami.phar .phpstorm.meta.php
/.sami .yarn
public/assets/manifest.json
# For local development with docker # For local development with docker
# Remove if we ever put the Dockerfile in the repo # Remove if we ever put the Dockerfile in the repo
.dockerignore .dockerignore
#Dockerfile
docker-compose.yml docker-compose.yml
# for image related files # for image related files
misc misc
.phpstorm.meta.php .php-cs-fixer.cache
.php_cs.cache
coverage.xml coverage.xml
resources/lang/locales.js
.phpunit.result.cache
# Vagrant /public/build
*.log /public/hot
result
docker-compose.yaml

1
.npmrc Normal file
View file

@ -0,0 +1 @@
shamefully-hoist=true

52
.php-cs-fixer.dist.php Normal file
View file

@ -0,0 +1,52 @@
<?php
use PhpCsFixer\Config;
use PhpCsFixer\Finder;
$finder = (new Finder())
->in(__DIR__)
->exclude([
'vendor',
'node_modules',
'storage',
'bootstrap/cache',
])
->notName(['_ide_helper*']);
return (new Config())
->setRiskyAllowed(true)
->setFinder($finder)
->setRules([
'@Symfony' => true,
'@PSR1' => true,
'@PSR2' => true,
'@PSR12' => true,
'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
'combine_consecutive_unsets' => true,
'concat_space' => ['spacing' => 'one'],
'heredoc_to_nowdoc' => true,
'no_alias_functions' => true,
'no_unreachable_default_argument_value' => true,
'no_useless_return' => true,
'ordered_imports' => [
'sort_algorithm' => 'length',
],
'phpdoc_align' => [
'align' => 'left',
'tags' => [
'param',
'property',
'return',
'throws',
'type',
'var',
],
],
'random_api_migration' => true,
'ternary_to_null_coalescing' => true,
'yoda_style' => [
'equal' => false,
'identical' => false,
'less_and_greater' => false,
],
]);

55
.php_cs
View file

@ -1,55 +0,0 @@
<?php
$finder = PhpCsFixer\Finder::create()
->in([
'app',
'bootstrap',
'config',
'database',
'resources/lang',
'routes',
'tests',
]);
return PhpCsFixer\Config::create()
->setRules([
'@Symfony' => true,
'@PSR1' => true,
'@PSR2' => true,
'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
'array_syntax' => ['syntax' => 'short'],
'blank_line_before_return' => true,
'blank_line_before_statement' => false,
'combine_consecutive_unsets' => true,
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'single'],
'heredoc_to_nowdoc' => true,
'increment_style' => ['style' => 'post'],
'linebreak_after_opening_tag' => true,
'method_argument_space' => [
'ensure_fully_multiline' => false,
'keep_multiple_spaces_after_comma' => false,
],
'new_with_braces' => false,
'no_alias_functions' => true,
'no_multiline_whitespace_before_semicolons' => true,
'no_unreachable_default_argument_value' => true,
'no_useless_return' => true,
'not_operator_with_successor_space' => true,
'ordered_imports' => [
'sortAlgorithm' => 'length',
],
'phpdoc_align' => ['tags' => ['param']],
'phpdoc_separation' => false,
'protected_to_private' => false,
'psr0' => ['dir' => 'app'],
'psr4' => true,
'random_api_migration' => true,
'standardize_not_equals' => true,
'ternary_to_null_coalescing' => true,
'yoda_style' => [
'equal' => false,
'identical' => false,
'less_and_greater' => false,
],
])->setRiskyAllowed(true)->setFinder($finder);

4
.prettierignore Normal file
View file

@ -0,0 +1,4 @@
.github
public
node_modules
resources/views

22
.prettierrc.json Normal file
View file

@ -0,0 +1,22 @@
{
"printWidth": 120,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": false,
"trailingComma": "all",
"bracketSpacing": true,
"arrowParens": "avoid",
"endOfLine": "lf",
"overrides": [
{
"files": ["**/*.md"],
"options": {
"tabWidth": 2,
"useTabs": false,
"singleQuote": false
}
}
]
}

View file

@ -1,16 +0,0 @@
<?php
use Sami\Sami;
use Symfony\Component\Finder\Finder;
$iterator = Finder::create()
->files()
->name('*.php')
->in($dir = __DIR__ . '/app');
return new Sami($iterator, array(
'title' => 'Pterodactyl',
'build_dir' => __DIR__ . '/.sami/build',
'cache_dir' => __DIR__ . '/.sami/cache',
'default_opened_level' => 2,
));

View file

@ -1,7 +0,0 @@
preset: laravel
risky: false
disabled:
- concat_without_spaces
enabled:
- concat_with_spaces
- no_unused_imports

View file

@ -1,44 +0,0 @@
language: php
dist: trusty
git:
depth: 3
quiet: true
matrix:
fast_finish: true
allow_failures:
- env: TEST_SUITE=Coverage
env:
matrix:
- TEST_SUITE=Unit
- TEST_SUITE=Coverage
- TEST_SUITE=Integration
php:
- 7.2
sudo: false
cache:
directories:
- $HOME/.composer/cache
services:
- mysql
before_install:
- mysql -e 'CREATE DATABASE IF NOT EXISTS travis;'
before_script:
- echo 'opcache.enable_cli=1' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- cp .env.travis .env
- travis_retry composer install --no-interaction --prefer-dist --no-suggest
script:
- if [ "$TEST_SUITE" = "Unit" ]; then vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit; fi;
- if [ "$TEST_SUITE" = "Coverage" ]; then vendor/bin/phpunit --bootstrap vendor/autoload.php --coverage-clover coverage.xml tests/Unit; fi;
- if [ "$TEST_SUITE" = "Integration" ]; then vendor/bin/phpunit tests/Integration; fi;
notifications:
email: false
webhooks:
urls:
- https://misc.schrej.net/travistodiscord/pterodev.php
on_success: change
on_failure: always
on_error: always
on_cancel: always
on_start: never
after_success:
- bash <(curl -s https://codecov.io/bash)

View file

@ -3,6 +3,645 @@ 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.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 `<DOCTYPE html>` 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) ## v0.7.19 (Derelict Dermodactylus)
### Fixed ### Fixed
* **[Security]** Fixes XSS in the admin area's server owner selection. * **[Security]** Fixes XSS in the admin area's server owner selection.

View file

@ -1,44 +1,31 @@
# Contributing # Contributing
We're glad you want to help us out and make this panel the best that it can be! We have a few simple things to follow when making changes to files and adding new features.
### Project Branches Pterodactyl does not accept Pull Requests (PRs) _for new functionality_ from users that are not currently part of the
This section mainly applies to those with read/write access to our repositories, but can be helpful for others. 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.
The `develop` branch should always be in a runnable state, and not contain any major breaking features. For the most part, this means you will need to create `feature/` branches in order to add new functionality or change how things work. When making a feature branch, if it is referencing something in the issue tracker, please title the branch `feature/PTDL-###` where `###` is the issue number. 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
Moving forward all commits from contributors should be in the form of a PR, unless it is something we have previously discussed as being able to be pushed right into `develop`. logic.
All new code should contain unit tests at a minimum (where applicable). There is a lot of uncovered code currently, so as you are doing things please be looking for places that you can write tests.
### Update the CHANGELOG
When adding something that is new, fixed, changed, or security-related for the next release you should be adding a note to the CHANGELOG. If something is changing within the same version (i.e. fixing a bug introduced but not released) it should _not_ go into the CHANGELOG.
### Code Guidelines
We are a `PSR-4` and `PSR-0` compliant project, so please follow those guidelines at a minimum. In addition, StyleCI runs on all of our code to ensure the formatting is standardized across everything. When a PR is made StyleCI will analyze your code and make a pull to that branch if necessary to fix any formatting issues. This project also ships with a PHP-CS configuration file and you are welcome to configure your local environment to make use of that.
All class variable declarations should be in alphabetical order, and constructor arguments should be in alphabetical order based on the classname. See the example below for how this should look, or check out any of the `app/Service` files for examples.
```php
class ProcessScheduleService
{
protected $repository;
protected $runnerService;
public function __construct(RunTaskService $runnerService, ScheduleRepositoryInterface $repository)
{
$this->repository = $repository;
$this->runnerService = $runnerService;
}
```
### Responsible Disclosure ### 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. 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.
If you've found what you believe is a security issue please email us at `support@pterodactyl.io`. 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.
### Where to find Us If you've found what you believe is a security issue please email `matthew@pterodactyl.io`. Please check
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. [SECURITY.md](/SECURITY.md) for additional details.
You can also find us on [Discord](https://pterodactyl.io/discord). In the event that you need to get in contact with us privately feel free to contact us at `support@pterodactyl.io`. Try not to email us with requests for support regarding the panel, we'll probably just direct you to our Discord. ### 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).

View file

@ -1,14 +0,0 @@
# Pterodactyl Panel Contributors
This panel would not be possible without the support of our wonderful community of
developers who provide code enhancements, new features, and bug fixes to make this panel
the best that is can be. You can view a full listing of contributors [here](https://github.com/Pterodactyl/Panel/graphs/contributors).
Dane Everitt [@DaneEveritt](https://github.com/Pterodactyl/Panel/commits?author=DaneEveritt)
Dylan Seidt [@DDynamic](https://github.com/Pterodactyl/Panel/commits?author=DDynamic)
[@nikkiii](https://github.com/Pterodactyl/Panel/commits?author=nikkiii)
# Get Involved
See our `CONTRIBUTING.md` document for information on how to get started. Once you've submitted some code feel free to
modify this file and add your name to the list. Please follow the format above for your name and linking to your contributions.

77
Containerfile Normal file
View file

@ -0,0 +1,77 @@
# Stage 1 - Builder
FROM --platform=$TARGETOS/$TARGETARCH registry.access.redhat.com/ubi9/nodejs-18-minimal AS builder
USER 0
RUN npm install -g pnpm
WORKDIR /var/www/pterodactyl
COPY --chown=1001:0 public ./public
COPY --chown=1001:0 resources/scripts ./resources/scripts
COPY --chown=1001:0 .eslintignore .eslintrc.js .npmrc .prettierrc.json package.json pnpm-lock.yaml tailwind.config.js tsconfig.json vite.config.ts .
RUN /opt/app-root/src/.npm-global/bin/pnpm install \
&& /opt/app-root/src/.npm-global/bin/pnpm build \
&& rm -rf resources/scripts .eslintignore .eslintrc.yml .npmrc package.json pnpm-lock.yaml tailwind.config.js tsconfig.json vite.config.ts node_modules
USER 1001
COPY --chown=1001:0 app ./app
COPY --chown=1001:0 bootstrap ./bootstrap
COPY --chown=1001:0 config ./config
COPY --chown=1001:0 database ./database
COPY --chown=1001:0 resources/lang ./resources/lang
COPY --chown=1001:0 resources/views ./resources/views
COPY --chown=1001:0 routes ./routes
COPY --chown=1001:0 .env.example ./.env
COPY --chown=1001:0 artisan CHANGELOG.md composer.json composer.lock LICENSE.md README.md SECURITY.md .
# Stage 2 - Final
FROM --platform=$TARGETOS/$TARGETARCH registry.access.redhat.com/ubi9/ubi-minimal
RUN microdnf update -y \
&& rpm --install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
&& rpm --install https://rpms.remirepo.net/enterprise/remi-release-9.rpm \
&& microdnf update -y \
&& microdnf install -y ca-certificates shadow-utils tar tzdata unzip wget \
# ref; https://bugzilla.redhat.com/show_bug.cgi?id=1870814
&& microdnf reinstall -y tzdata \
&& microdnf module -y reset php \
&& microdnf module -y enable php:remi-8.2 \
&& microdnf install -y composer cronie php-{bcmath,cli,common,fpm,gd,gmp,intl,json,mbstring,mysqlnd,opcache,pdo,pecl-redis5,pecl-zip,phpiredis,pgsql,process,sodium,xml,zstd} supervisor \
&& rm /etc/php-fpm.d/www.conf \
&& useradd --home-dir /var/lib/caddy --create-home caddy \
&& mkdir /etc/caddy \
&& wget -O /usr/local/bin/yacron https://github.com/gjcarneiro/yacron/releases/download/0.17.0/yacron-0.17.0-x86_64-unknown-linux-gnu \
&& chmod 755 /usr/local/bin/yacron \
&& microdnf remove -y tar wget \
&& microdnf clean all
COPY --chown=caddy:caddy --from=builder /var/www/pterodactyl /var/www/pterodactyl
WORKDIR /var/www/pterodactyl
RUN mkdir -p /tmp/pterodactyl/cache /tmp/pterodactyl/framework/{cache,sessions,views} storage/framework \
&& rm -rf bootstrap/cache storage/framework/sessions storage/framework/views storage/framework/cache \
&& ln -s /tmp/pterodactyl/cache /var/www/pterodactyl/bootstrap/cache \
&& ln -s /tmp/pterodactyl/framework/cache /var/www/pterodactyl/storage/framework/cache \
&& ln -s /tmp/pterodactyl/framework/sessions /var/www/pterodactyl/storage/framework/sessions \
&& ln -s /tmp/pterodactyl/framework/views /var/www/pterodactyl/storage/framework/views \
&& chmod -R 755 /var/www/pterodactyl/storage/* /tmp/pterodactyl/cache \
&& chown -R caddy:caddy /var/www/pterodactyl /tmp/pterodactyl/{cache,framework}
USER caddy
ENV USER=caddy
RUN composer install --no-dev --optimize-autoloader \
&& rm -rf bootstrap/cache/*.php \
&& rm -rf .env storage/logs/*.log
COPY --from=docker.io/library/caddy:latest /usr/bin/caddy /usr/local/bin/caddy
COPY .github/docker/Caddyfile /etc/caddy/Caddyfile
COPY .github/docker/php-fpm.conf /etc/php-fpm.conf
COPY .github/docker/supervisord.conf /etc/supervisord.conf
COPY .github/docker/yacron.yaml /etc/yacron.yaml
EXPOSE 8080
CMD ["/usr/bin/supervisord", "--configuration=/etc/supervisord.conf"]

View file

@ -1,26 +0,0 @@
FROM alpine:3.8
WORKDIR /app
RUN apk add --no-cache --update ca-certificates certbot nginx dcron curl tini php7 php7-bcmath php7-common php7-dom php7-fpm php7-gd php7-mbstring php7-openssl php7-zip php7-pdo php7-phar php7-json php7-pdo_mysql php7-session php7-ctype php7-tokenizer php7-zlib php7-simplexml php7-fileinfo supervisor \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
COPY . ./
RUN cp .env.example .env \
&& composer install --no-dev --optimize-autoloader \
&& rm .env \
&& chown -R nginx:nginx . && chmod -R 777 storage/* bootstrap/cache
RUN cp .dev/docker/default.conf /etc/nginx/conf.d/default.conf \
&& cp .dev/docker/www.conf /etc/php7/php-fpm.d/www.conf \
&& cat .dev/docker/supervisord.conf > /etc/supervisord.conf \
&& echo "* * * * * /usr/bin/php /app/artisan schedule:run >> /dev/null 2>&1" >> /var/spool/cron/crontabs/root \
&& sed -i s/ssl_session_cache/#ssl_session_cache/g /etc/nginx/nginx.conf \
&& mkdir -p /var/run/php /var/run/nginx
EXPOSE 80 443
ENTRYPOINT ["/bin/ash", ".dev/docker/entrypoint.sh"]
CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ]

9
LICENSE Normal file
View file

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2024 Skynet
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.

View file

@ -1,7 +1,8 @@
# The MIT License (MIT) # The MIT License (MIT)
``` ```
Copyright (c) 2015 - 2020 Dane Everitt <dane@daneeveritt.com> Pterodactyl®
Copyright © Dane Everitt <dane@daneeveritt.com> and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -1,26 +1,52 @@
[![Logo Image](https://cdn.pterodactyl.io/logos/new/pterodactyl_logo.png)](https://pterodactyl.io) [![Logo Image](https://cdn.pterodactyl.io/logos/new/pterodactyl_logo.png)](https://pterodactyl.io)
[![Build status](https://img.shields.io/travis/pterodactyl/panel/develop.svg?style=flat-square)](https://travis-ci.org/pterodactyl/panel) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/pterodactyl/panel/laravel.yaml?label=Tests&style=for-the-badge&branch=develop)
[![StyleCI](https://styleci.io/repos/47508644/shield?branch=develop)](https://styleci.io/repos/47508644) ![Discord](https://img.shields.io/discord/122900397965705216?label=Discord&logo=Discord&logoColor=white&style=for-the-badge)
[![Codecov](https://img.shields.io/codecov/c/github/pterodactyl/panel/develop.svg?style=flat-square)](https://codecov.io/gh/Pterodactyl/Panel) ![GitHub Releases](https://img.shields.io/github/downloads/pterodactyl/panel/latest/total?style=for-the-badge)
[![Discord](https://img.shields.io/discord/122900397965705216.svg?style=flat-square&label=Discord)](https://pterodactyl.io/discord) ![GitHub contributors](https://img.shields.io/github/contributors/pterodactyl/panel?style=for-the-badge)
# Pterodactyl Panel # Pterodactyl Panel
Pterodactyl is the open-source game server management panel built with PHP7, Nodejs, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to administrators and users. Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go. Designed with security
What more are you waiting for? Make game servers a first class citizen on your platform today. in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive
UI to end users.
![Image](https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey.png) Stop settling for less. Make game servers a first class citizen on your platform.
## Support & Documentation ![Image](https://cdn.pterodactyl.io/site-assets/pterodactyl_v1_demo.gif)
Support for using Pterodactyl can be found on our [Documentation Website](https://pterodactyl.io/project/introduction.html), [Guides Website](https://guides.pterodactyl.io), or via our [Discord Chat](https://discord.gg/QRDZvVm).
## 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 |
|-----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [**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. |
| [**WemX**](https://wemx.net/) | WemX helps automate your hosting company or SaaS business by automating billing, user management, authentication, and much more. |
| [**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. |
| [**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
We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power to host your games across the world without having to bloat each physical machine with additional dependencies.
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: Some of our core supported games include:
* Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more * Minecraft — including Paper, Sponge, Bungeecord, Waterfall, and more
* Rust * Rust
* Terraria * Terraria
* Teamspeak * Teamspeak
@ -30,46 +56,20 @@ Some of our core supported games include:
* Garry's Mod * Garry's Mod
* ARK: Survival Evolved * 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: 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 * Factorio
* San Andreas: MP * San Andreas: MP
* Pocketmine MP * Pocketmine MP
* Squad * Squad
* FiveM
* Xonotic * Xonotic
* Discord ATLBot * Starmade
* Discord ATLBot, and most other Node.js/Python discord bots
## Credits * [and many more...](https://github.com/parkervcp/eggs)
This software would not be possible without the work of other open-source authors who provide tools such as:
[Ace Editor](https://ace.c9.io), [AdminLTE](https://almsaeedstudio.com), [Animate.css](http://daneden.github.io/animate.css/), [AnsiUp](https://github.com/drudru/ansi_up), [Async.js](https://github.com/caolan/async),
[Bootstrap](http://getbootstrap.com), [Bootstrap Notify](http://bootstrap-notify.remabledesigns.com), [Chart.js](http://www.chartjs.org), [FontAwesome](http://fontawesome.io),
[FontAwesome Animations](https://github.com/l-lin/font-awesome-animation), [jQuery](http://jquery.com), [Laravel](https://laravel.com), [Lodash](https://lodash.com),
[Select2](https://select2.github.io), [Socket.io](http://socket.io), [Socket.io File Upload](https://github.com/vote539/socketio-file-upload), [SweetAlert](http://t4t5.github.io/sweetalert),
[Typeahead](https://github.com/bassjobsen/Bootstrap-3-Typeahead), and [Particles.js](http://vincentgarreau.com/particles.js).
Some Javascript and CSS used within the panel is licensed under a `MIT` or `Apache 2.0` license. Please check their respective header files for more information.
## License ## License
```
Copyright (c) 2015 - 2018 Dane Everitt <dane@daneeveritt.com>.
Permission is hereby granted, free of charge, to any person obtaining a copy Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors.
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 Code released under the [MIT License](./LICENSE.md).
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.
```

20
SECURITY.md Normal file
View file

@ -0,0 +1,20 @@
# 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.

17
Vagrantfile vendored
View file

@ -1,17 +0,0 @@
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.synced_folder "./", "/var/www/html/pterodactyl",
owner: "www-data", group: "www-data"
config.vm.provision :shell, path: ".dev/vagrant/provision.sh"
config.vm.network :private_network, ip: "192.168.50.2"
config.vm.network :forwarded_port, guest: 80, host: 50080
config.vm.network :forwarded_port, guest: 8025, host: 58025
config.vm.network :forwarded_port, guest: 3306, host: 53306
# Config for the vagrant-dns plugin (https://github.com/BerlinVagrant/vagrant-dns)
config.dns.tld = "test"
config.dns.patterns = [/^pterodactyl.test$/]
end

View file

@ -1,31 +1,22 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Environment; namespace Pterodactyl\Console\Commands\Environment;
use DateTimeZone;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Contracts\Console\Kernel; use Illuminate\Contracts\Console\Kernel;
use Pterodactyl\Traits\Commands\EnvironmentWriterTrait; use Pterodactyl\Traits\Commands\EnvironmentWriterTrait;
use Illuminate\Contracts\Config\Repository as ConfigRepository;
class AppSettingsCommand extends Command class AppSettingsCommand extends Command
{ {
use EnvironmentWriterTrait; use EnvironmentWriterTrait;
const ALLOWED_CACHE_DRIVERS = [ public const CACHE_DRIVERS = [
'redis' => 'Redis (recommended)', 'redis' => 'Redis (recommended)',
'memcached' => 'Memcached', 'memcached' => 'Memcached',
'file' => 'Filesystem', 'file' => 'Filesystem',
]; ];
const ALLOWED_SESSION_DRIVERS = [ public const SESSION_DRIVERS = [
'redis' => 'Redis (recommended)', 'redis' => 'Redis (recommended)',
'memcached' => 'Memcached', 'memcached' => 'Memcached',
'database' => 'MySQL Database', 'database' => 'MySQL Database',
@ -33,30 +24,14 @@ class AppSettingsCommand extends Command
'cookie' => 'Cookie', 'cookie' => 'Cookie',
]; ];
const ALLOWED_QUEUE_DRIVERS = [ public const QUEUE_DRIVERS = [
'redis' => 'Redis (recommended)', 'redis' => 'Redis (recommended)',
'database' => 'MySQL Database', 'database' => 'MySQL Database',
'sync' => 'Sync', 'sync' => 'Sync',
]; ];
/**
* @var \Illuminate\Contracts\Console\Kernel
*/
protected $command;
/**
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* @var string
*/
protected $description = 'Configure basic environment settings for the Panel.'; protected $description = 'Configure basic environment settings for the Panel.';
/**
* @var string
*/
protected $signature = 'p:environment:setup protected $signature = 'p:environment:setup
{--new-salt : Whether or not to generate a new salt for Hashids.} {--new-salt : Whether or not to generate a new salt for Hashids.}
{--author= : The email that services created on this instance should be linked to.} {--author= : The email that services created on this instance should be linked to.}
@ -68,25 +43,17 @@ class AppSettingsCommand extends Command
{--redis-host= : Redis host to use for connections.} {--redis-host= : Redis host to use for connections.}
{--redis-pass= : Password used to connect to redis.} {--redis-pass= : Password used to connect to redis.}
{--redis-port= : Port to connect to redis over.} {--redis-port= : Port to connect to redis over.}
{--disable-settings-ui}'; {--settings-ui= : Enable or disable the settings UI.}
{--telemetry= : Enable or disable anonymous telemetry.}';
/** protected array $variables = [];
* @var array
*/
protected $variables = [];
/** /**
* AppSettingsCommand constructor. * AppSettingsCommand constructor.
*
* @param \Illuminate\Contracts\Config\Repository $config
* @param \Illuminate\Contracts\Console\Kernel $command
*/ */
public function __construct(ConfigRepository $config, Kernel $command) public function __construct(private Kernel $console)
{ {
parent::__construct(); parent::__construct();
$this->command = $command;
$this->config = $config;
} }
/** /**
@ -94,60 +61,81 @@ class AppSettingsCommand extends Command
* *
* @throws \Pterodactyl\Exceptions\PterodactylException * @throws \Pterodactyl\Exceptions\PterodactylException
*/ */
public function handle() public function handle(): int
{ {
if (empty($this->config->get('hashids.salt')) || $this->option('new-salt')) { if (empty(config('hashids.salt')) || $this->option('new-salt')) {
$this->variables['HASHIDS_SALT'] = str_random(20); $this->variables['HASHIDS_SALT'] = str_random(20);
} }
$this->output->comment(trans('command/messages.environment.app.author_help')); $this->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( $this->variables['APP_SERVICE_AUTHOR'] = $this->option('author') ?? $this->ask(
trans('command/messages.environment.app.author'), $this->config->get('pterodactyl.service.author', 'unknown@unknown.com') 'Egg Author Email',
config('pterodactyl.service.author', 'unknown@unknown.com')
); );
$this->output->comment(trans('command/messages.environment.app.app_url_help')); if (!filter_var($this->variables['APP_SERVICE_AUTHOR'], FILTER_VALIDATE_EMAIL)) {
$this->output->error('The service author email provided is invalid.');
return 1;
}
$this->output->comment('The application URL MUST begin with https:// or http:// depending on if you are using SSL or not. If you do not include the scheme your emails and other content will link to the wrong location.');
$this->variables['APP_URL'] = $this->option('url') ?? $this->ask( $this->variables['APP_URL'] = $this->option('url') ?? $this->ask(
trans('command/messages.environment.app.app_url'), $this->config->get('app.url', 'http://example.org') 'Application URL',
config('app.url', 'https://example.com')
); );
$this->output->comment(trans('command/messages.environment.app.timezone_help')); $this->output->comment('The timezone should match one of PHP\'s supported timezones. If you are unsure, please reference https://php.net/manual/en/timezones.php.');
$this->variables['APP_TIMEZONE'] = $this->option('timezone') ?? $this->anticipate( $this->variables['APP_TIMEZONE'] = $this->option('timezone') ?? $this->anticipate(
trans('command/messages.environment.app.timezone'), 'Application Timezone',
DateTimeZone::listIdentifiers(DateTimeZone::ALL), \DateTimeZone::listIdentifiers(),
$this->config->get('app.timezone') config('app.timezone')
); );
$selected = $this->config->get('cache.default', 'redis'); $selected = config('cache.default', 'redis');
$this->variables['CACHE_DRIVER'] = $this->option('cache') ?? $this->choice( $this->variables['CACHE_DRIVER'] = $this->option('cache') ?? $this->choice(
trans('command/messages.environment.app.cache_driver'), 'Cache Driver',
self::ALLOWED_CACHE_DRIVERS, self::CACHE_DRIVERS,
array_key_exists($selected, self::ALLOWED_CACHE_DRIVERS) ? $selected : null array_key_exists($selected, self::CACHE_DRIVERS) ? $selected : null
); );
$selected = $this->config->get('session.driver', 'redis'); $selected = config('session.driver', 'redis');
$this->variables['SESSION_DRIVER'] = $this->option('session') ?? $this->choice( $this->variables['SESSION_DRIVER'] = $this->option('session') ?? $this->choice(
trans('command/messages.environment.app.session_driver'), 'Session Driver',
self::ALLOWED_SESSION_DRIVERS, self::SESSION_DRIVERS,
array_key_exists($selected, self::ALLOWED_SESSION_DRIVERS) ? $selected : null array_key_exists($selected, self::SESSION_DRIVERS) ? $selected : null
); );
$selected = $this->config->get('queue.default', 'redis'); $selected = config('queue.default', 'redis');
$this->variables['QUEUE_CONNECTION'] = $this->option('queue') ?? $this->choice( $this->variables['QUEUE_CONNECTION'] = $this->option('queue') ?? $this->choice(
trans('command/messages.environment.app.queue_driver'), 'Queue Driver',
self::ALLOWED_QUEUE_DRIVERS, self::QUEUE_DRIVERS,
array_key_exists($selected, self::ALLOWED_QUEUE_DRIVERS) ? $selected : null array_key_exists($selected, self::QUEUE_DRIVERS) ? $selected : null
); );
if ($this->option('disable-settings-ui')) { if (!is_null($this->option('settings-ui'))) {
$this->variables['APP_ENVIRONMENT_ONLY'] = 'true'; $this->variables['APP_ENVIRONMENT_ONLY'] = $this->option('settings-ui') == 'true' ? 'false' : 'true';
} else { } else {
$this->variables['APP_ENVIRONMENT_ONLY'] = $this->confirm(trans('command/messages.environment.app.settings'), true) ? 'false' : 'true'; $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(
'Enable sending anonymous telemetry data?',
config('pterodactyl.telemetry.enabled', true)
) ? 'true' : 'false';
// Make sure session cookies are set as "secure" when using HTTPS
if (str_starts_with($this->variables['APP_URL'], 'https://')) {
$this->variables['SESSION_SECURE_COOKIE'] = 'true';
} }
$this->checkForRedis(); $this->checkForRedis();
$this->writeToEnvironment($this->variables); $this->writeToEnvironment($this->variables);
$this->info($this->command->output()); $this->info($this->console->output());
return 0;
} }
/** /**
@ -164,21 +152,22 @@ class AppSettingsCommand extends Command
return; return;
} }
$this->output->note(trans('command/messages.environment.app.using_redis')); $this->output->note('You\'ve selected the Redis driver for one or more options, please provide valid connection information below. In most cases you can use the defaults provided unless you have modified your setup.');
$this->variables['REDIS_HOST'] = $this->option('redis-host') ?? $this->ask( $this->variables['REDIS_HOST'] = $this->option('redis-host') ?? $this->ask(
trans('command/messages.environment.app.redis_host'), $this->config->get('database.redis.default.host') 'Redis Host',
config('database.redis.default.host')
); );
$askForRedisPassword = true; $askForRedisPassword = true;
if (! empty($this->config->get('database.redis.default.password'))) { if (!empty(config('database.redis.default.password'))) {
$this->variables['REDIS_PASSWORD'] = $this->config->get('database.redis.default.password'); $this->variables['REDIS_PASSWORD'] = config('database.redis.default.password');
$askForRedisPassword = $this->confirm(trans('command/messages.environment.app.redis_pass_defined')); $askForRedisPassword = $this->confirm('It seems a password is already defined for Redis, would you like to change it?');
} }
if ($askForRedisPassword) { if ($askForRedisPassword) {
$this->output->comment(trans('command/messages.environment.app.redis_pass_help')); $this->output->comment('By default a Redis server instance has no password as it is running locally and inaccessible to the outside world. If this is the case, simply hit enter without entering a value.');
$this->variables['REDIS_PASSWORD'] = $this->option('redis-pass') ?? $this->output->askHidden( $this->variables['REDIS_PASSWORD'] = $this->option('redis-pass') ?? $this->output->askHidden(
trans('command/messages.environment.app.redis_password') 'Redis Password'
); );
} }
@ -187,7 +176,8 @@ class AppSettingsCommand extends Command
} }
$this->variables['REDIS_PORT'] = $this->option('redis-port') ?? $this->ask( $this->variables['REDIS_PORT'] = $this->option('redis-port') ?? $this->ask(
trans('command/messages.environment.app.redis_port'), $this->config->get('database.redis.default.port') 'Redis Port',
config('database.redis.default.port')
); );
} }
} }

View file

@ -1,48 +1,18 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Environment; namespace Pterodactyl\Console\Commands\Environment;
use PDOException;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Contracts\Console\Kernel; use Illuminate\Contracts\Console\Kernel;
use Illuminate\Database\DatabaseManager; use Illuminate\Database\DatabaseManager;
use Pterodactyl\Traits\Commands\EnvironmentWriterTrait; use Pterodactyl\Traits\Commands\EnvironmentWriterTrait;
use Illuminate\Contracts\Config\Repository as ConfigRepository;
class DatabaseSettingsCommand extends Command class DatabaseSettingsCommand extends Command
{ {
use EnvironmentWriterTrait; use EnvironmentWriterTrait;
/**
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* @var \Illuminate\Contracts\Console\Kernel
*/
protected $console;
/**
* @var \Illuminate\Database\DatabaseManager
*/
protected $database;
/**
* @var string
*/
protected $description = 'Configure database settings for the Panel.'; protected $description = 'Configure database settings for the Panel.';
/**
* @var string
*/
protected $signature = 'p:environment:database protected $signature = 'p:environment:database
{--host= : The connection address for the MySQL server.} {--host= : The connection address for the MySQL server.}
{--port= : The connection port for the MySQL server.} {--port= : The connection port for the MySQL server.}
@ -50,71 +20,62 @@ class DatabaseSettingsCommand extends Command
{--username= : Username to use when connecting.} {--username= : Username to use when connecting.}
{--password= : Password to use for this database.}'; {--password= : Password to use for this database.}';
/** protected array $variables = [];
* @var array
*/
protected $variables = [];
/** /**
* DatabaseSettingsCommand constructor. * DatabaseSettingsCommand constructor.
*
* @param \Illuminate\Contracts\Config\Repository $config
* @param \Illuminate\Database\DatabaseManager $database
* @param \Illuminate\Contracts\Console\Kernel $console
*/ */
public function __construct(ConfigRepository $config, DatabaseManager $database, Kernel $console) public function __construct(private DatabaseManager $database, private Kernel $console)
{ {
parent::__construct(); parent::__construct();
$this->config = $config;
$this->console = $console;
$this->database = $database;
} }
/** /**
* Handle command execution. * Handle command execution.
* *
* @return int
*
* @throws \Pterodactyl\Exceptions\PterodactylException * @throws \Pterodactyl\Exceptions\PterodactylException
*/ */
public function handle() public function handle(): int
{ {
$this->output->note(trans('command/messages.environment.database.host_warning')); $this->output->note('It is highly recommended to not use "localhost" as your database host as we have seen frequent socket connection issues. If you want to use a local connection you should be using "127.0.0.1".');
$this->variables['DB_HOST'] = $this->option('host') ?? $this->ask( $this->variables['DB_HOST'] = $this->option('host') ?? $this->ask(
trans('command/messages.environment.database.host'), $this->config->get('database.connections.mysql.host', '127.0.0.1') 'Database Host',
config('database.connections.mysql.host', '127.0.0.1')
); );
$this->variables['DB_PORT'] = $this->option('port') ?? $this->ask( $this->variables['DB_PORT'] = $this->option('port') ?? $this->ask(
trans('command/messages.environment.database.port'), $this->config->get('database.connections.mysql.port', 3306) 'Database Port',
config('database.connections.mysql.port', 3306)
); );
$this->variables['DB_DATABASE'] = $this->option('database') ?? $this->ask( $this->variables['DB_DATABASE'] = $this->option('database') ?? $this->ask(
trans('command/messages.environment.database.database'), $this->config->get('database.connections.mysql.database', 'panel') 'Database Name',
config('database.connections.mysql.database', 'panel')
); );
$this->output->note(trans('command/messages.environment.database.username_warning')); $this->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( $this->variables['DB_USERNAME'] = $this->option('username') ?? $this->ask(
trans('command/messages.environment.database.username'), $this->config->get('database.connections.mysql.username', 'pterodactyl') 'Database Username',
config('database.connections.mysql.username', 'pterodactyl')
); );
$askForMySQLPassword = true; $askForMySQLPassword = true;
if (! empty($this->config->get('database.connections.mysql.password')) && $this->input->isInteractive()) { if (!empty(config('database.connections.mysql.password')) && $this->input->isInteractive()) {
$this->variables['DB_PASSWORD'] = $this->config->get('database.connections.mysql.password'); $this->variables['DB_PASSWORD'] = config('database.connections.mysql.password');
$askForMySQLPassword = $this->confirm(trans('command/messages.environment.database.password_defined')); $askForMySQLPassword = $this->confirm('It appears you already have a MySQL connection password defined, would you like to change it?');
} }
if ($askForMySQLPassword) { if ($askForMySQLPassword) {
$this->variables['DB_PASSWORD'] = $this->option('password') ?? $this->secret(trans('command/messages.environment.database.password')); $this->variables['DB_PASSWORD'] = $this->option('password') ?? $this->secret('Database Password');
} }
try { try {
$this->testMySQLConnection(); $this->testMySQLConnection();
} catch (PDOException $exception) { } catch (\PDOException $exception) {
$this->output->error(trans('command/messages.environment.database.connection_error', ['error' => $exception->getMessage()])); $this->output->error(sprintf('Unable to connect to the MySQL server using the provided credentials. The error returned was "%s".', $exception->getMessage()));
$this->output->error(trans('command/messages.environment.database.creds_not_saved')); $this->output->error('Your connection credentials have NOT been saved. You will need to provide valid connection information before proceeding.');
if ($this->confirm(trans('command/messages.environment.database.try_again'))) { if ($this->confirm('Go back and try again?')) {
$this->database->disconnect('_pterodactyl_command_test'); $this->database->disconnect('_pterodactyl_command_test');
return $this->handle(); return $this->handle();
@ -135,7 +96,7 @@ class DatabaseSettingsCommand extends Command
*/ */
private function testMySQLConnection() private function testMySQLConnection()
{ {
$this->config->set('database.connections._pterodactyl_command_test', [ config()->set('database.connections._pterodactyl_command_test', [
'driver' => 'mysql', 'driver' => 'mysql',
'host' => $this->variables['DB_HOST'], 'host' => $this->variables['DB_HOST'],
'port' => $this->variables['DB_PORT'], 'port' => $this->variables['DB_PORT'],

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Environment; namespace Pterodactyl\Console\Commands\Environment;
@ -17,19 +10,8 @@ class EmailSettingsCommand extends Command
{ {
use EnvironmentWriterTrait; use EnvironmentWriterTrait;
/**
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* @var string
*/
protected $description = 'Set or update the email sending configuration for the Panel.'; protected $description = 'Set or update the email sending configuration for the Panel.';
/**
* @var string
*/
protected $signature = 'p:environment:mail protected $signature = 'p:environment:mail
{--driver= : The mail driver to use.} {--driver= : The mail driver to use.}
{--email= : Email address that messages from the Panel will originate from.} {--email= : Email address that messages from the Panel will originate from.}
@ -37,40 +19,37 @@ class EmailSettingsCommand extends Command
{--encryption=} {--encryption=}
{--host=} {--host=}
{--port=} {--port=}
{--endpoint=}
{--username=} {--username=}
{--password=}'; {--password=}';
/** protected array $variables = [];
* @var array
*/
protected $variables = [];
/** /**
* EmailSettingsCommand constructor. * EmailSettingsCommand constructor.
*
* @param \Illuminate\Contracts\Config\Repository $config
*/ */
public function __construct(ConfigRepository $config) public function __construct(private ConfigRepository $config)
{ {
parent::__construct(); parent::__construct();
$this->config = $config;
} }
/** /**
* Handle command execution. * Handle command execution.
*
* @throws \Pterodactyl\Exceptions\PterodactylException * @throws \Pterodactyl\Exceptions\PterodactylException
*/ */
public function handle() public function handle()
{ {
$this->variables['MAIL_DRIVER'] = $this->option('driver') ?? $this->choice( $this->variables['MAIL_DRIVER'] = $this->option('driver') ?? $this->choice(
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' => 'Postmarkapp Transactional Email', 'postmark' => 'Postmark Transactional Email',
], $this->config->get('mail.driver', 'smtp') ],
$this->config->get('mail.default', 'smtp')
); );
$method = 'setup' . studly_case($this->variables['MAIL_DRIVER']) . 'DriverVariables'; $method = 'setup' . studly_case($this->variables['MAIL_DRIVER']) . 'DriverVariables';
@ -78,16 +57,14 @@ class EmailSettingsCommand extends Command
$this->{$method}(); $this->{$method}();
} }
$this->variables['MAIL_FROM'] = $this->option('email') ?? $this->ask( $this->variables['MAIL_FROM_ADDRESS'] = $this->option('email') ?? $this->ask(
trans('command/messages.environment.mail.ask_mail_from'), $this->config->get('mail.from.address') trans('command/messages.environment.mail.ask_mail_from'),
$this->config->get('mail.from.address')
); );
$this->variables['MAIL_FROM_NAME'] = $this->option('from') ?? $this->ask( $this->variables['MAIL_FROM_NAME'] = $this->option('from') ?? $this->ask(
trans('command/messages.environment.mail.ask_mail_name'), $this->config->get('mail.from.name') trans('command/messages.environment.mail.ask_mail_name'),
); $this->config->get('mail.from.name')
$this->variables['MAIL_ENCRYPTION'] = $this->option('encryption') ?? $this->choice(
trans('command/messages.environment.mail.ask_encryption'), ['tls' => 'TLS', 'ssl' => 'SSL', '' => 'None'], $this->config->get('mail.encryption', 'tls')
); );
$this->writeToEnvironment($this->variables); $this->writeToEnvironment($this->variables);
@ -102,20 +79,29 @@ class EmailSettingsCommand extends Command
private function setupSmtpDriverVariables() private function setupSmtpDriverVariables()
{ {
$this->variables['MAIL_HOST'] = $this->option('host') ?? $this->ask( $this->variables['MAIL_HOST'] = $this->option('host') ?? $this->ask(
trans('command/messages.environment.mail.ask_smtp_host'), $this->config->get('mail.host') trans('command/messages.environment.mail.ask_smtp_host'),
$this->config->get('mail.mailers.smtp.host')
); );
$this->variables['MAIL_PORT'] = $this->option('port') ?? $this->ask( $this->variables['MAIL_PORT'] = $this->option('port') ?? $this->ask(
trans('command/messages.environment.mail.ask_smtp_port'), $this->config->get('mail.port') trans('command/messages.environment.mail.ask_smtp_port'),
$this->config->get('mail.mailers.smtp.port')
); );
$this->variables['MAIL_USERNAME'] = $this->option('username') ?? $this->ask( $this->variables['MAIL_USERNAME'] = $this->option('username') ?? $this->ask(
trans('command/messages.environment.mail.ask_smtp_username'), $this->config->get('mail.username') trans('command/messages.environment.mail.ask_smtp_username'),
$this->config->get('mail.mailers.smtp.username')
); );
$this->variables['MAIL_PASSWORD'] = $this->option('password') ?? $this->secret( $this->variables['MAIL_PASSWORD'] = $this->option('password') ?? $this->secret(
trans('command/messages.environment.mail.ask_smtp_password') trans('command/messages.environment.mail.ask_smtp_password')
); );
$this->variables['MAIL_ENCRYPTION'] = $this->option('encryption') ?? $this->choice(
trans('command/messages.environment.mail.ask_encryption'),
['tls' => 'TLS', 'ssl' => 'SSL', '' => 'None'],
$this->config->get('mail.mailers.smtp.encryption', 'tls')
);
} }
/** /**
@ -124,11 +110,18 @@ class EmailSettingsCommand extends Command
private function setupMailgunDriverVariables() private function setupMailgunDriverVariables()
{ {
$this->variables['MAILGUN_DOMAIN'] = $this->option('host') ?? $this->ask( $this->variables['MAILGUN_DOMAIN'] = $this->option('host') ?? $this->ask(
trans('command/messages.environment.mail.ask_mailgun_domain'), $this->config->get('services.mailgun.domain') trans('command/messages.environment.mail.ask_mailgun_domain'),
$this->config->get('services.mailgun.domain')
); );
$this->variables['MAILGUN_SECRET'] = $this->option('password') ?? $this->ask( $this->variables['MAILGUN_SECRET'] = $this->option('password') ?? $this->ask(
trans('command/messages.environment.mail.ask_mailgun_secret'), $this->config->get('services.mailgun.secret') trans('command/messages.environment.mail.ask_mailgun_secret'),
$this->config->get('services.mailgun.secret')
);
$this->variables['MAILGUN_ENDPOINT'] = $this->option('endpoint') ?? $this->ask(
trans('command/messages.environment.mail.ask_mailgun_endpoint'),
$this->config->get('services.mailgun.endpoint')
); );
} }
@ -138,7 +131,8 @@ class EmailSettingsCommand extends Command
private function setupMandrillDriverVariables() private function setupMandrillDriverVariables()
{ {
$this->variables['MANDRILL_SECRET'] = $this->option('password') ?? $this->ask( $this->variables['MANDRILL_SECRET'] = $this->option('password') ?? $this->ask(
trans('command/messages.environment.mail.ask_mandrill_secret'), $this->config->get('services.mandrill.secret') trans('command/messages.environment.mail.ask_mandrill_secret'),
$this->config->get('services.mandrill.secret')
); );
} }
@ -151,7 +145,8 @@ class EmailSettingsCommand extends Command
$this->variables['MAIL_HOST'] = 'smtp.postmarkapp.com'; $this->variables['MAIL_HOST'] = 'smtp.postmarkapp.com';
$this->variables['MAIL_PORT'] = 587; $this->variables['MAIL_PORT'] = 587;
$this->variables['MAIL_USERNAME'] = $this->variables['MAIL_PASSWORD'] = $this->option('username') ?? $this->ask( $this->variables['MAIL_USERNAME'] = $this->variables['MAIL_PASSWORD'] = $this->option('username') ?? $this->ask(
trans('command/messages.environment.mail.ask_postmark_username'), $this->config->get('mail.username') trans('command/messages.environment.mail.ask_postmark_username'),
$this->config->get('mail.username')
); );
} }
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands; namespace Pterodactyl\Console\Commands;
@ -15,38 +8,16 @@ use Illuminate\Contracts\Config\Repository as ConfigRepository;
class InfoCommand extends Command class InfoCommand extends Command
{ {
/**
* @var string
*/
protected $description = 'Displays the application, database, and email configurations along with the panel version.'; protected $description = 'Displays the application, database, and email configurations along with the panel version.';
/**
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* @var string
*/
protected $signature = 'p:info'; protected $signature = 'p:info';
/**
* @var \Pterodactyl\Services\Helpers\SoftwareVersionService
*/
protected $versionService;
/** /**
* VersionCommand constructor. * VersionCommand constructor.
*
* @param \Illuminate\Contracts\Config\Repository $config
* @param \Pterodactyl\Services\Helpers\SoftwareVersionService $versionService
*/ */
public function __construct(ConfigRepository $config, SoftwareVersionService $versionService) public function __construct(private ConfigRepository $config, private SoftwareVersionService $softwareVersionService)
{ {
parent::__construct(); parent::__construct();
$this->config = $config;
$this->versionService = $versionService;
} }
/** /**
@ -56,9 +27,9 @@ class InfoCommand extends Command
{ {
$this->output->title('Version Information'); $this->output->title('Version Information');
$this->table([], [ $this->table([], [
['Panel Version', $this->config->get('app.version')], ['Panel Version', $this->softwareVersionService->getCurrentVersion()],
['Latest Version', $this->versionService->getPanel()], ['Latest Version', $this->softwareVersionService->getLatestPanel()],
['Up-to-Date', $this->versionService->isLatestPanel() ? 'Yes' : $this->formatText('No', 'bg=red')], ['Up-to-Date', $this->softwareVersionService->isLatestPanel() ? 'Yes' : $this->formatText('No', 'bg=red')],
['Unique Identifier', $this->config->get('pterodactyl.service.author')], ['Unique Identifier', $this->config->get('pterodactyl.service.author')],
], 'compact'); ], 'compact');
@ -81,32 +52,29 @@ class InfoCommand extends Command
$driver = $this->config->get('database.default'); $driver = $this->config->get('database.default');
$this->table([], [ $this->table([], [
['Driver', $driver], ['Driver', $driver],
['Host', $this->config->get("database.connections.{$driver}.host")], ['Host', $this->config->get("database.connections.$driver.host")],
['Port', $this->config->get("database.connections.{$driver}.port")], ['Port', $this->config->get("database.connections.$driver.port")],
['Database', $this->config->get("database.connections.{$driver}.database")], ['Database', $this->config->get("database.connections.$driver.database")],
['Username', $this->config->get("database.connections.{$driver}.username")], ['Username', $this->config->get("database.connections.$driver.username")],
], 'compact'); ], 'compact');
// TODO: Update this to handle other mail drivers
$this->output->title('Email Configuration'); $this->output->title('Email Configuration');
$this->table([], [ $this->table([], [
['Driver', $this->config->get('mail.driver')], ['Driver', $this->config->get('mail.default')],
['Host', $this->config->get('mail.host')], ['Host', $this->config->get('mail.mailers.smtp.host')],
['Port', $this->config->get('mail.port')], ['Port', $this->config->get('mail.mailers.smtp.port')],
['Username', $this->config->get('mail.username')], ['Username', $this->config->get('mail.mailers.smtp.username')],
['From Address', $this->config->get('mail.from.address')], ['From Address', $this->config->get('mail.from.address')],
['From Name', $this->config->get('mail.from.name')], ['From Name', $this->config->get('mail.from.name')],
['Encryption', $this->config->get('mail.encryption')], ['Encryption', $this->config->get('mail.mailers.smtp.encryption')],
], 'compact'); ], 'compact');
} }
/** /**
* Format output in a Name: Value manner. * Format output in a Name: Value manner.
*
* @param string $value
* @param string $opts
* @return string
*/ */
private function formatText($value, $opts = '') private function formatText(string $value, string $opts = ''): string
{ {
return sprintf('<%s>%s</>', $opts, $value); return sprintf('<%s>%s</>', $opts, $value);
} }

View file

@ -1,59 +1,28 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Location; namespace Pterodactyl\Console\Commands\Location;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Collection;
use Pterodactyl\Services\Locations\LocationDeletionService; use Pterodactyl\Services\Locations\LocationDeletionService;
use Pterodactyl\Contracts\Repository\LocationRepositoryInterface; use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
class DeleteLocationCommand extends Command class DeleteLocationCommand extends Command
{ {
/**
* @var \Pterodactyl\Services\Locations\LocationDeletionService
*/
protected $deletionService;
/**
* @var string
*/
protected $description = 'Deletes a location from the Panel.'; protected $description = 'Deletes a location from the Panel.';
/**
* @var \Illuminate\Support\Collection
*/
protected $locations;
/**
* @var \Pterodactyl\Contracts\Repository\LocationRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:location:delete {--short= : The short code of the location to delete.}'; protected $signature = 'p:location:delete {--short= : The short code of the location to delete.}';
protected Collection $locations;
/** /**
* DeleteLocationCommand constructor. * DeleteLocationCommand constructor.
*
* @param \Pterodactyl\Contracts\Repository\LocationRepositoryInterface $repository
* @param \Pterodactyl\Services\Locations\LocationDeletionService $deletionService
*/ */
public function __construct( public function __construct(
LocationDeletionService $deletionService, private LocationDeletionService $deletionService,
LocationRepositoryInterface $repository private LocationRepositoryInterface $repository
) { ) {
parent::__construct(); parent::__construct();
$this->deletionService = $deletionService;
$this->repository = $repository;
} }
/** /**
@ -66,7 +35,8 @@ class DeleteLocationCommand extends Command
{ {
$this->locations = $this->locations ?? $this->repository->all(); $this->locations = $this->locations ?? $this->repository->all();
$short = $this->option('short') ?? $this->anticipate( $short = $this->option('short') ?? $this->anticipate(
trans('command/messages.location.ask_short'), $this->locations->pluck('short')->toArray() trans('command/messages.location.ask_short'),
$this->locations->pluck('short')->toArray()
); );
$location = $this->locations->where('short', $short)->first(); $location = $this->locations->where('short', $short)->first();

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Location; namespace Pterodactyl\Console\Commands\Location;
@ -14,33 +7,18 @@ use Pterodactyl\Services\Locations\LocationCreationService;
class MakeLocationCommand extends Command class MakeLocationCommand extends Command
{ {
/**
* @var \Pterodactyl\Services\Locations\LocationCreationService
*/
protected $creationService;
/**
* @var string
*/
protected $signature = 'p:location:make protected $signature = 'p:location:make
{--short= : The shortcode name of this location (ex. us1).} {--short= : The shortcode name of this location (ex. us1).}
{--long= : A longer description of this location.}'; {--long= : A longer description of this location.}';
/**
* @var string
*/
protected $description = 'Creates a new location on the system via the CLI.'; protected $description = 'Creates a new location on the system via the CLI.';
/** /**
* Create a new command instance. * Create a new command instance.
*
* @param \Pterodactyl\Services\Locations\LocationCreationService $creationService
*/ */
public function __construct(LocationCreationService $creationService) public function __construct(private LocationCreationService $creationService)
{ {
parent::__construct(); parent::__construct();
$this->creationService = $creationService;
} }
/** /**

View file

@ -2,34 +2,23 @@
namespace Pterodactyl\Console\Commands\Maintenance; namespace Pterodactyl\Console\Commands\Maintenance;
use SplFileInfo;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Contracts\Filesystem\Filesystem;
use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory; use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory;
class CleanServiceBackupFilesCommand extends Command class CleanServiceBackupFilesCommand extends Command
{ {
const BACKUP_THRESHOLD_MINUTES = 5; public const BACKUP_THRESHOLD_MINUTES = 5;
/**
* @var string
*/
protected $description = 'Clean orphaned .bak files created when modifying services.'; protected $description = 'Clean orphaned .bak files created when modifying services.';
/**
* @var \Illuminate\Contracts\Filesystem\Filesystem
*/
protected $disk;
/**
* @var string
*/
protected $signature = 'p:maintenance:clean-service-backups'; protected $signature = 'p:maintenance:clean-service-backups';
protected Filesystem $disk;
/** /**
* CleanServiceBackupFilesCommand constructor. * CleanServiceBackupFilesCommand constructor.
*
* @param \Illuminate\Contracts\Filesystem\Factory $filesystem
*/ */
public function __construct(FilesystemFactory $filesystem) public function __construct(FilesystemFactory $filesystem)
{ {
@ -45,7 +34,7 @@ class CleanServiceBackupFilesCommand extends Command
{ {
$files = $this->disk->files('services/.bak'); $files = $this->disk->files('services/.bak');
collect($files)->each(function (SplFileInfo $file) { collect($files)->each(function (\SplFileInfo $file) {
$lastModified = Carbon::createFromTimestamp($this->disk->lastModified($file->getPath())); $lastModified = Carbon::createFromTimestamp($this->disk->lastModified($file->getPath()));
if ($lastModified->diffInMinutes(Carbon::now()) > self::BACKUP_THRESHOLD_MINUTES) { if ($lastModified->diffInMinutes(Carbon::now()) > self::BACKUP_THRESHOLD_MINUTES) {
$this->disk->delete($file->getPath()); $this->disk->delete($file->getPath());

View file

@ -0,0 +1,49 @@
<?php
namespace Pterodactyl\Console\Commands\Maintenance;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use Pterodactyl\Repositories\Eloquent\BackupRepository;
class PruneOrphanedBackupsCommand extends Command
{
protected $signature = 'p:maintenance:prune-backups {--prune-age=}';
protected $description = 'Marks all backups older than "n" minutes that have not yet completed as being failed.';
/**
* PruneOrphanedBackupsCommand constructor.
*/
public function __construct(private BackupRepository $backupRepository)
{
parent::__construct();
}
public function handle()
{
$since = $this->option('prune-age') ?? config('backups.prune_age', 360);
if (!$since || !is_digit($since)) {
throw new \InvalidArgumentException('The "--prune-age" argument must be a value greater than 0.');
}
$query = $this->backupRepository->getBuilder()
->whereNull('completed_at')
->where('created_at', '<=', CarbonImmutable::now()->subMinutes($since)->toDateTimeString());
$count = $query->count();
if (!$count) {
$this->info('There are no orphaned backups to be marked as failed.');
return;
}
$this->warn("Marking $count uncompleted backups that are older than $since minutes as failed.");
$query->update([
'is_successful' => false,
'completed_at' => CarbonImmutable::now(),
'updated_at' => CarbonImmutable::now(),
]);
}
}

View file

@ -1,58 +0,0 @@
<?php
namespace Pterodactyl\Console\Commands\Migration;
use Pterodactyl\Models\ApiKey;
use Illuminate\Console\Command;
use Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface;
class CleanOrphanedApiKeysCommand extends Command
{
/**
* @var \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface
*/
private $repository;
/**
* @var string
*/
protected $signature = 'p:migration:clean-orphaned-keys';
/**
* @var string
*/
protected $description = 'Cleans API keys from the database that are not assigned a specific role.';
/**
* CleanOrphanedApiKeysCommand constructor.
*
* @param \Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface $repository
*/
public function __construct(ApiKeyRepositoryInterface $repository)
{
parent::__construct();
$this->repository = $repository;
}
/**
* Delete all orphaned API keys from the database when upgrading from 0.6 to 0.7.
*
* @return null|void
*/
public function handle()
{
$count = $this->repository->findCountWhere([['key_type', '=', ApiKey::TYPE_NONE]]);
$continue = $this->confirm(
'This action will remove ' . $count . ' keys from the database. Are you sure you wish to continue?', false
);
if (! $continue) {
return null;
}
$this->info('Deleting keys...');
$this->repository->deleteWhere([['key_type', '=', ApiKey::TYPE_NONE]]);
$this->info('Keys were successfully deleted.');
}
}

View file

@ -0,0 +1,69 @@
<?php
namespace Pterodactyl\Console\Commands\Node;
use Illuminate\Console\Command;
use Pterodactyl\Services\Nodes\NodeCreationService;
class MakeNodeCommand extends Command
{
protected $signature = 'p:node:make
{--name= : A name to identify the node.}
{--description= : A description to identify the node.}
{--locationId= : A valid locationId.}
{--fqdn= : The domain name (e.g node.example.com) to be used for connecting to the daemon. An IP address may only be used if you are not using SSL for this node.}
{--public= : Should the node be public or private? (public=1 / private=0).}
{--scheme= : Which scheme should be used? (Enable SSL=https / Disable SSL=http).}
{--proxy= : Is the daemon behind a proxy? (Yes=1 / No=0).}
{--maintenance= : Should maintenance mode be enabled? (Enable Maintenance mode=1 / Disable Maintenance mode=0).}
{--maxMemory= : Set the max memory amount.}
{--overallocateMemory= : Enter the amount of ram to overallocate (% or -1 to overallocate the maximum).}
{--maxDisk= : Set the max disk amount.}
{--overallocateDisk= : Enter the amount of disk to overallocate (% or -1 to overallocate the maximum).}
{--uploadSize= : Enter the maximum upload filesize.}
{--daemonListeningPort= : Enter the wings listening port.}
{--daemonSFTPPort= : Enter the wings SFTP listening port.}
{--daemonBase= : Enter the base folder.}';
protected $description = 'Creates a new node on the system via the CLI.';
/**
* MakeNodeCommand constructor.
*/
public function __construct(private NodeCreationService $creationService)
{
parent::__construct();
}
/**
* Handle the command execution process.
*
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
*/
public function handle()
{
$data['name'] = $this->option('name') ?? $this->ask('Enter a short identifier used to distinguish this node from others');
$data['description'] = $this->option('description') ?? $this->ask('Enter a description to identify the node');
$data['location_id'] = $this->option('locationId') ?? $this->ask('Enter a valid location id');
$data['scheme'] = $this->option('scheme') ?? $this->anticipate(
'Please either enter https for SSL or http for a non-ssl connection',
['https', 'http'],
'https'
);
$data['fqdn'] = $this->option('fqdn') ?? $this->ask('Enter a domain name (e.g node.example.com) to be used for connecting to the daemon. An IP address may only be used if you are not using SSL for this node');
$data['public'] = $this->option('public') ?? $this->confirm('Should this node be public? As a note, setting a node to private you will be denying the ability to auto-deploy to this node.', true);
$data['behind_proxy'] = $this->option('proxy') ?? $this->confirm('Is your FQDN behind a proxy?');
$data['maintenance_mode'] = $this->option('maintenance') ?? $this->confirm('Should maintenance mode be enabled?');
$data['memory'] = $this->option('maxMemory') ?? $this->ask('Enter the maximum amount of memory');
$data['memory_overallocate'] = $this->option('overallocateMemory') ?? $this->ask('Enter the amount of memory to over allocate by, -1 will disable checking and 0 will prevent creating new servers');
$data['disk'] = $this->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');
$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 . '.');
}
}

View file

@ -0,0 +1,44 @@
<?php
namespace Pterodactyl\Console\Commands\Node;
use Pterodactyl\Models\Node;
use Illuminate\Console\Command;
class NodeConfigurationCommand extends Command
{
protected $signature = 'p:node:configuration
{node : The ID or UUID of the node to return the configuration for.}
{--format=yaml : The output format. Options are "yaml" and "json".}';
protected $description = 'Displays the configuration for the specified node.';
public function handle(): int
{
$column = ctype_digit((string) $this->argument('node')) ? 'id' : 'uuid';
/** @var \Pterodactyl\Models\Node $node */
$node = Node::query()->where($column, $this->argument('node'))->firstOr(function () {
$this->error('The selected node does not exist.');
exit(1);
});
$format = $this->option('format');
if (!in_array($format, ['yaml', 'yml', 'json'])) {
$this->error('Invalid format specified. Valid options are "yaml" and "json".');
return 1;
}
if ($format === 'json') {
$this->output->write($node->getJsonConfiguration(true));
} else {
$this->output->write($node->getYamlConfiguration());
}
$this->output->newLine();
return 0;
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace Pterodactyl\Console\Commands\Node;
use Pterodactyl\Models\Node;
use Illuminate\Console\Command;
class NodeListCommand extends Command
{
protected $signature = 'p:node:list {--format=text : The output format: "text" or "json". }';
public function handle(): int
{
$nodes = Node::query()->with('location')->get()->map(function (Node $node) {
return [
'id' => $node->id,
'uuid' => $node->uuid,
'name' => $node->name,
'location' => $node->location->short,
'host' => $node->getConnectionAddress(),
];
});
if ($this->option('format') === 'json') {
$this->output->write($nodes->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
} else {
$this->table(['ID', 'UUID', 'Name', 'Location', 'Host'], $nodes->toArray());
}
$this->output->newLine();
return 0;
}
}

View file

@ -13,12 +13,12 @@ class KeyGenerateCommand extends BaseKeyGenerateCommand
public function handle() public function handle()
{ {
if (!empty(config('app.key')) && $this->input->isInteractive()) { if (!empty(config('app.key')) && $this->input->isInteractive()) {
$this->output->warning(trans('command/messages.key.warning')); $this->output->warning('It appears you have already configured an application encryption key. Continuing with this process with overwrite that key and cause data corruption for any existing encrypted data. DO NOT CONTINUE UNLESS YOU KNOW WHAT YOU ARE DOING.');
if (! $this->confirm(trans('command/messages.key.confirm'))) { if (!$this->confirm('I understand the consequences of performing this command and accept all responsibility for the loss of encrypted data.')) {
return; return;
} }
if (! $this->confirm(trans('command/messages.key.final_confirm'))) { if (!$this->confirm('Are you sure you wish to continue? Changing the application encryption key WILL CAUSE DATA LOSS.')) {
return; return;
} }
} }

View file

@ -0,0 +1,26 @@
<?php
namespace Pterodactyl\Console\Commands\Overrides;
use Pterodactyl\Console\RequiresDatabaseMigrations;
use Illuminate\Database\Console\Seeds\SeedCommand as BaseSeedCommand;
class SeedCommand extends BaseSeedCommand
{
use RequiresDatabaseMigrations;
/**
* Block someone from running this seed command if they have not completed
* the migration process.
*/
public function handle(): int
{
if (!$this->hasCompletedMigrations()) {
$this->showMigrationWarning();
return 1;
}
return parent::handle();
}
}

View file

@ -0,0 +1,26 @@
<?php
namespace Pterodactyl\Console\Commands\Overrides;
use Pterodactyl\Console\RequiresDatabaseMigrations;
use Illuminate\Foundation\Console\UpCommand as BaseUpCommand;
class UpCommand extends BaseUpCommand
{
use RequiresDatabaseMigrations;
/**
* Block someone from running this up command if they have not completed
* the migration process.
*/
public function handle(): int
{
if (!$this->hasCompletedMigrations()) {
$this->showMigrationWarning();
return 1;
}
return parent::handle();
}
}

View file

@ -1,86 +1,76 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Schedule; namespace Pterodactyl\Console\Commands\Schedule;
use Cake\Chronos\Chronos; use Exception;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Collection; use Pterodactyl\Models\Schedule;
use Illuminate\Support\Facades\Log;
use Illuminate\Database\Eloquent\Builder;
use Pterodactyl\Services\Schedules\ProcessScheduleService; use Pterodactyl\Services\Schedules\ProcessScheduleService;
use Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface;
class ProcessRunnableCommand extends Command class ProcessRunnableCommand extends Command
{ {
/**
* @var string
*/
protected $description = 'Process schedules in the database and determine which are ready to run.';
/**
* @var \Pterodactyl\Services\Schedules\ProcessScheduleService
*/
protected $processScheduleService;
/**
* @var \Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:schedule:process'; protected $signature = 'p:schedule:process';
/** protected $description = 'Process schedules in the database and determine which are ready to run.';
* ProcessRunnableCommand constructor.
*
* @param \Pterodactyl\Services\Schedules\ProcessScheduleService $processScheduleService
* @param \Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface $repository
*/
public function __construct(ProcessScheduleService $processScheduleService, ScheduleRepositoryInterface $repository)
{
parent::__construct();
$this->processScheduleService = $processScheduleService;
$this->repository = $repository;
}
/** /**
* Handle command execution. * Handle command execution.
*/ */
public function handle() public function handle(): int
{ {
$schedules = $this->repository->getSchedulesToProcess(Chronos::now()->toAtomString()); $schedules = Schedule::query()
->with('tasks')
->whereRelation('server', fn (Builder $builder) => $builder->whereNull('status'))
->where('is_active', true)
->where('is_processing', false)
->whereRaw('next_run_at <= NOW()')
->get();
if ($schedules->count() < 1) { if ($schedules->count() < 1) {
$this->line('There are no scheduled tasks for servers that need to be run.'); $this->line('There are no scheduled tasks for servers that need to be run.');
return; return 0;
} }
$bar = $this->output->createProgressBar(count($schedules)); $bar = $this->output->createProgressBar(count($schedules));
$schedules->each(function ($schedule) use ($bar) { foreach ($schedules as $schedule) {
if ($schedule->tasks instanceof Collection && count($schedule->tasks) > 0) {
$this->processScheduleService->handle($schedule);
if ($this->input->isInteractive()) {
$bar->clear(); $bar->clear();
$this->processSchedule($schedule);
$bar->advance();
$bar->display();
}
$this->line('');
return 0;
}
/**
* Processes a given schedule and logs and errors encountered the console output. This should
* never throw an exception out, otherwise you'll end up killing the entire run group causing
* any other schedules to not process correctly.
*
* @see https://github.com/pterodactyl/panel/issues/2609
*/
protected function processSchedule(Schedule $schedule)
{
if ($schedule->tasks->isEmpty()) {
return;
}
try {
$this->getLaravel()->make(ProcessScheduleService::class)->handle($schedule);
$this->line(trans('command/messages.schedule.output_line', [ $this->line(trans('command/messages.schedule.output_line', [
'schedule' => $schedule->name, 'schedule' => $schedule->name,
'hash' => $schedule->hashid, 'hash' => $schedule->hashid,
])); ]));
} } catch (\Throwable|\Exception $exception) {
} Log::error($exception, ['schedule_id' => $schedule->id]);
$bar->advance(); $this->error("An error was encountered while processing Schedule #$schedule->id: " . $exception->getMessage());
$bar->display(); }
});
$this->line('');
} }
} }

View file

@ -2,67 +2,35 @@
namespace Pterodactyl\Console\Commands\Server; namespace Pterodactyl\Console\Commands\Server;
use Pterodactyl\Models\Server;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use GuzzleHttp\Exception\RequestException; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Illuminate\Validation\Factory as ValidatorFactory; use Illuminate\Validation\Factory as ValidatorFactory;
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface; use Pterodactyl\Repositories\Wings\DaemonPowerRepository;
use Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface; use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
class BulkPowerActionCommand extends Command class BulkPowerActionCommand extends Command
{ {
/**
* @var \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface
*/
private $powerRepository;
/**
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
*/
private $repository;
/**
* @var \Illuminate\Validation\Factory
*/
private $validator;
/**
* @var string
*/
protected $signature = 'p:server:bulk-power protected $signature = 'p:server:bulk-power
{action : The action to perform (start, stop, restart, kill)} {action : The action to perform (start, stop, restart, kill)}
{--servers= : A comma separated list of servers.} {--servers= : A comma separated list of servers.}
{--nodes= : A comma separated list of nodes.}'; {--nodes= : A comma separated list of nodes.}';
/**
* @var string
*/
protected $description = 'Perform bulk power management on large groupings of servers or nodes at once.'; protected $description = 'Perform bulk power management on large groupings of servers or nodes at once.';
/** /**
* BulkPowerActionCommand constructor. * BulkPowerActionCommand constructor.
*
* @param \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface $powerRepository
* @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
* @param \Illuminate\Validation\Factory $validator
*/ */
public function __construct( public function __construct(private DaemonPowerRepository $powerRepository, private ValidatorFactory $validator)
PowerRepositoryInterface $powerRepository, {
ServerRepositoryInterface $repository,
ValidatorFactory $validator
) {
parent::__construct(); parent::__construct();
$this->powerRepository = $powerRepository;
$this->repository = $repository;
$this->validator = $validator;
} }
/** /**
* Handle the bulk power request. * Handle the bulk power request.
* *
* @throws \Illuminate\Validation\ValidationException * @throws \Illuminate\Validation\ValidationException
* @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
*/ */
public function handle() public function handle()
{ {
@ -90,23 +58,19 @@ class BulkPowerActionCommand extends Command
throw new ValidationException($validator); throw new ValidationException($validator);
} }
$count = $this->repository->getServersForPowerActionCount($servers, $nodes); $count = $this->getQueryBuilder($servers, $nodes)->count();
if (! $this->confirm(trans('command/messages.server.power.confirm', ['action' => $action, 'count' => $count]))) { if (!$this->confirm(trans('command/messages.server.power.confirm', ['action' => $action, 'count' => $count])) && $this->input->isInteractive()) {
return; return;
} }
$bar = $this->output->createProgressBar($count); $bar = $this->output->createProgressBar($count);
$servers = $this->repository->getServersForPowerAction($servers, $nodes); $powerRepository = $this->powerRepository;
$this->getQueryBuilder($servers, $nodes)->each(function (Server $server) use ($action, $powerRepository, &$bar) {
foreach ($servers as $server) {
$bar->clear(); $bar->clear();
try { try {
$this->powerRepository $powerRepository->setServer($server)->send($action);
->setNode($server->node) } catch (DaemonConnectionException $exception) {
->setServer($server)
->sendSignal($action);
} catch (RequestException $exception) {
$this->output->error(trans('command/messages.server.power.action_failed', [ $this->output->error(trans('command/messages.server.power.action_failed', [
'name' => $server->name, 'name' => $server->name,
'id' => $server->id, 'id' => $server->id,
@ -117,8 +81,26 @@ class BulkPowerActionCommand extends Command
$bar->advance(); $bar->advance();
$bar->display(); $bar->display();
} });
$this->line(''); $this->line('');
} }
/**
* Returns the query builder instance that will return the servers that should be affected.
*/
protected function getQueryBuilder(array $servers, array $nodes): Builder
{
$instance = Server::query()->whereNull('status');
if (!empty($nodes) && !empty($servers)) {
$instance->whereIn('id', $servers)->orWhereIn('node_id', $nodes);
} elseif (empty($nodes) && !empty($servers)) {
$instance->whereIn('id', $servers);
} elseif (!empty($nodes) && empty($servers)) {
$instance->whereIn('node_id', $nodes);
}
return $instance->with('node');
}
} }

View file

@ -1,109 +0,0 @@
<?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\Server;
use Webmozart\Assert\Assert;
use Illuminate\Console\Command;
use GuzzleHttp\Exception\RequestException;
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
use Pterodactyl\Services\Servers\ServerConfigurationStructureService;
use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
class RebuildServerCommand extends Command
{
/**
* @var \Pterodactyl\Services\Servers\ServerConfigurationStructureService
*/
protected $configurationStructureService;
/**
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
*/
protected $daemonRepository;
/**
* @var string
*/
protected $description = 'Rebuild a single server, all servers on a node, or all servers on the panel.';
/**
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:server:rebuild
{server? : The ID of the server to rebuild.}
{--node= : ID of the node to rebuild all servers on. Ignored if server is passed.}';
/**
* RebuildServerCommand constructor.
*
* @param \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface $daemonRepository
* @param \Pterodactyl\Services\Servers\ServerConfigurationStructureService $configurationStructureService
* @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
*/
public function __construct(
DaemonServerRepositoryInterface $daemonRepository,
ServerConfigurationStructureService $configurationStructureService,
ServerRepositoryInterface $repository
) {
parent::__construct();
$this->configurationStructureService = $configurationStructureService;
$this->daemonRepository = $daemonRepository;
$this->repository = $repository;
}
/**
* Handle command execution.
*/
public function handle()
{
$servers = $this->getServersToProcess();
$bar = $this->output->createProgressBar(count($servers));
$servers->each(function ($server) use ($bar) {
$bar->clear();
$json = array_merge($this->configurationStructureService->handle($server), ['rebuild' => true]);
try {
$this->daemonRepository->setServer($server)->update($json);
} catch (RequestException $exception) {
$this->output->error(trans('command/messages.server.rebuild_failed', [
'name' => $server->name,
'id' => $server->id,
'node' => $server->node->name,
'message' => $exception->getMessage(),
]));
}
$bar->advance();
$bar->display();
});
$this->line('');
}
/**
* Return the servers to be rebuilt.
*
* @return \Illuminate\Database\Eloquent\Collection
*/
private function getServersToProcess()
{
Assert::nullOrIntegerish($this->argument('server'), 'Value passed in server argument must be null or an integer, received %s.');
Assert::nullOrIntegerish($this->option('node'), 'Value passed in node option must be null or integer, received %s.');
return $this->repository->getDataForRebuild($this->argument('server'), $this->option('node'));
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace Pterodactyl\Console\Commands;
use Illuminate\Console\Command;
use Symfony\Component\VarDumper\VarDumper;
use Pterodactyl\Services\Telemetry\TelemetryCollectionService;
class TelemetryCommand extends Command
{
protected $description = 'Displays all the data that would be sent to the Pterodactyl Telemetry Service if telemetry collection is enabled.';
protected $signature = 'p:telemetry';
/**
* TelemetryCommand constructor.
*/
public function __construct(private TelemetryCollectionService $telemetryCollectionService)
{
parent::__construct();
}
/**
* Handle execution of command.
*
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
*/
public function handle()
{
$this->output->info('Collecting telemetry data, this may take a while...');
VarDumper::dump($this->telemetryCollectionService->collect());
}
}

View file

@ -0,0 +1,195 @@
<?php
namespace Pterodactyl\Console\Commands;
use Illuminate\Console\Command;
use Pterodactyl\Console\Kernel;
use Symfony\Component\Process\Process;
use Symfony\Component\Console\Helper\ProgressBar;
class UpgradeCommand extends Command
{
protected const DEFAULT_URL = 'https://github.com/pterodactyl/panel/releases/%s/panel.tar.gz';
protected $signature = 'p:upgrade
{--user= : The user that PHP runs under. All files will be owned by this user.}
{--group= : The group that PHP runs under. All files will be owned by this group.}
{--url= : The specific archive to download.}
{--release= : A specific Pterodactyl version to download from GitHub. Leave blank to use latest.}
{--skip-download : If set no archive will be downloaded.}';
protected $description = 'Downloads a new archive for Pterodactyl from GitHub and then executes the normal upgrade commands.';
/**
* Executes an upgrade command which will run through all of our standard
* commands for Pterodactyl and enable users to basically just download
* the archive and execute this and be done.
*
* This places the application in maintenance mode as well while the commands
* are being executed.
*
* @throws \Exception
*/
public function handle()
{
$skipDownload = $this->option('skip-download');
if (!$skipDownload) {
$this->output->warning('This command does not verify the integrity of downloaded assets. Please ensure that you trust the download source before continuing. If you do not wish to download an archive, please indicate that using the --skip-download flag, or answering "no" to the question below.');
$this->output->comment('Download Source (set with --url=):');
$this->line($this->getUrl());
}
if (version_compare(PHP_VERSION, '7.4.0') < 0) {
$this->error('Cannot execute self-upgrade process. The minimum required PHP version required is 7.4.0, you have [' . PHP_VERSION . '].');
}
$user = 'www-data';
$group = 'www-data';
if ($this->input->isInteractive()) {
if (!$skipDownload) {
$skipDownload = !$this->confirm('Would you like to download and unpack the archive files for the latest version?', true);
}
if (is_null($this->option('user'))) {
$userDetails = posix_getpwuid(fileowner('public'));
$user = $userDetails['name'] ?? 'www-data';
if (!$this->confirm("Your webserver user has been detected as <fg=blue>[{$user}]:</> is this correct?", true)) {
$user = $this->anticipate(
'Please enter the name of the user running your webserver process. This varies from system to system, but is generally "www-data", "nginx", or "apache".',
[
'www-data',
'nginx',
'apache',
]
);
}
}
if (is_null($this->option('group'))) {
$groupDetails = posix_getgrgid(filegroup('public'));
$group = $groupDetails['name'] ?? 'www-data';
if (!$this->confirm("Your webserver group has been detected as <fg=blue>[{$group}]:</> is this correct?", true)) {
$group = $this->anticipate(
'Please enter the name of the group running your webserver process. Normally this is the same as your user.',
[
'www-data',
'nginx',
'apache',
]
);
}
}
if (!$this->confirm('Are you sure you want to run the upgrade process for your Panel?')) {
$this->warn('Upgrade process terminated by user.');
return;
}
}
ini_set('output_buffering', '0');
$bar = $this->output->createProgressBar($skipDownload ? 9 : 10);
$bar->start();
if (!$skipDownload) {
$this->withProgress($bar, function () {
$this->line("\$upgrader> curl -L \"{$this->getUrl()}\" | tar -xzv");
$process = Process::fromShellCommandline("curl -L \"{$this->getUrl()}\" | tar -xzv");
$process->run(function ($type, $buffer) {
$this->{$type === Process::ERR ? 'error' : 'line'}($buffer);
});
});
}
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan down');
$this->call('down');
});
$this->withProgress($bar, function () {
$this->line('$upgrader> chmod -R 755 storage bootstrap/cache');
$process = new Process(['chmod', '-R', '755', 'storage', 'bootstrap/cache']);
$process->run(function ($type, $buffer) {
$this->{$type === Process::ERR ? 'error' : 'line'}($buffer);
});
});
$this->withProgress($bar, function () {
$command = ['composer', 'install', '--no-ansi'];
if (config('app.env') === 'production' && !config('app.debug')) {
$command[] = '--optimize-autoloader';
$command[] = '--no-dev';
}
$this->line('$upgrader> ' . implode(' ', $command));
$process = new Process($command);
$process->setTimeout(10 * 60);
$process->run(function ($type, $buffer) {
$this->line($buffer);
});
});
/** @var \Illuminate\Foundation\Application $app */
$app = require __DIR__ . '/../../../bootstrap/app.php';
/** @var \Pterodactyl\Console\Kernel $kernel */
$kernel = $app->make(Kernel::class);
$kernel->bootstrap();
$this->setLaravel($app);
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan view:clear');
$this->call('view:clear');
});
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan config:clear');
$this->call('config:clear');
});
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan migrate --force --seed');
$this->call('migrate', ['--force' => true, '--seed' => true]);
});
$this->withProgress($bar, function () use ($user, $group) {
$this->line("\$upgrader> chown -R {$user}:{$group} *");
$process = Process::fromShellCommandline("chown -R {$user}:{$group} *", $this->getLaravel()->basePath());
$process->setTimeout(10 * 60);
$process->run(function ($type, $buffer) {
$this->{$type === Process::ERR ? 'error' : 'line'}($buffer);
});
});
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan queue:restart');
$this->call('queue:restart');
});
$this->withProgress($bar, function () {
$this->line('$upgrader> php artisan up');
$this->call('up');
});
$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');
}
protected function withProgress(ProgressBar $bar, \Closure $callback)
{
$bar->clear();
$callback();
$bar->advance();
$bar->display();
}
protected function getUrl(): string
{
if ($this->option('url')) {
return $this->option('url');
}
return sprintf(self::DEFAULT_URL, $this->option('release') ? 'download/v' . $this->option('release') : 'latest/download');
}
}

View file

@ -1,83 +1,53 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\User; namespace Pterodactyl\Console\Commands\User;
use Pterodactyl\Models\User;
use Webmozart\Assert\Assert; use Webmozart\Assert\Assert;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Pterodactyl\Services\Users\UserDeletionService; use Pterodactyl\Services\Users\UserDeletionService;
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
class DeleteUserCommand extends Command class DeleteUserCommand extends Command
{ {
/**
* @var \Pterodactyl\Services\Users\UserDeletionService
*/
protected $deletionService;
/**
* @var string
*/
protected $description = 'Deletes a user from the Panel if no servers are attached to their account.'; protected $description = 'Deletes a user from the Panel if no servers are attached to their account.';
/**
* @var \Pterodactyl\Contracts\Repository\UserRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:user:delete {--user=}'; protected $signature = 'p:user:delete {--user=}';
/** /**
* DeleteUserCommand constructor. * DeleteUserCommand constructor.
*
* @param \Pterodactyl\Services\Users\UserDeletionService $deletionService
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
*/ */
public function __construct( public function __construct(private UserDeletionService $deletionService)
UserDeletionService $deletionService, {
UserRepositoryInterface $repository
) {
parent::__construct(); parent::__construct();
$this->deletionService = $deletionService;
$this->repository = $repository;
} }
/** public function handle(): int
* @return bool
* @throws \Pterodactyl\Exceptions\DisplayException
*/
public function handle()
{ {
$search = $this->option('user') ?? $this->ask(trans('command/messages.user.search_users')); $search = $this->option('user') ?? $this->ask(trans('command/messages.user.search_users'));
Assert::notEmpty($search, 'Search term must be a non-null value, received %s.'); Assert::notEmpty($search, 'Search term should be an email address, got: %s.');
$results = User::query()
->where('id', 'LIKE', "$search%")
->orWhere('username', 'LIKE', "$search%")
->orWhere('email', 'LIKE', "$search%")
->get();
$results = $this->repository->setSearchTerm($search)->all();
if (count($results) < 1) { if (count($results) < 1) {
$this->error(trans('command/messages.user.no_users_found')); $this->error(trans('command/messages.user.no_users_found'));
if ($this->input->isInteractive()) { if ($this->input->isInteractive()) {
return $this->handle(); return $this->handle();
} }
return false; return 1;
} }
if ($this->input->isInteractive()) { if ($this->input->isInteractive()) {
$tableValues = []; $tableValues = [];
foreach ($results as $user) { foreach ($results as $user) {
$tableValues[] = [$user->id, $user->email, $user->name]; $tableValues[] = [$user->id, $user->email, $user->username];
} }
$this->table(['User ID', 'Email', 'Name'], $tableValues); $this->table(['User ID', 'Email', 'Username'], $tableValues);
if (!$deleteUser = $this->ask(trans('command/messages.user.select_search_user'))) { if (!$deleteUser = $this->ask(trans('command/messages.user.select_search_user'))) {
return $this->handle(); return $this->handle();
} }
@ -85,7 +55,7 @@ class DeleteUserCommand extends Command
if (count($results) > 1) { if (count($results) > 1) {
$this->error(trans('command/messages.user.multiple_found')); $this->error(trans('command/messages.user.multiple_found'));
return false; return 1;
} }
$deleteUser = $results->first(); $deleteUser = $results->first();
@ -95,5 +65,7 @@ class DeleteUserCommand extends Command
$this->deletionService->handle($deleteUser); $this->deletionService->handle($deleteUser);
$this->info(trans('command/messages.user.deleted')); $this->info(trans('command/messages.user.deleted'));
} }
return 0;
} }
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\User; namespace Pterodactyl\Console\Commands\User;
@ -14,31 +7,16 @@ use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
class DisableTwoFactorCommand extends Command class DisableTwoFactorCommand extends Command
{ {
/**
* @var string
*/
protected $description = 'Disable two-factor authentication for a specific user in the Panel.'; protected $description = 'Disable two-factor authentication for a specific user in the Panel.';
/**
* @var \Pterodactyl\Contracts\Repository\UserRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:user:disable2fa {--email= : The email of the user to disable 2-Factor for.}'; protected $signature = 'p:user:disable2fa {--email= : The email of the user to disable 2-Factor for.}';
/** /**
* DisableTwoFactorCommand constructor. * DisableTwoFactorCommand constructor.
*
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
*/ */
public function __construct(UserRepositoryInterface $repository) public function __construct(private UserRepositoryInterface $repository)
{ {
parent::__construct(); parent::__construct();
$this->repository = $repository;
} }
/** /**

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Console\Commands\User; namespace Pterodactyl\Console\Commands\User;
@ -14,31 +7,16 @@ use Pterodactyl\Services\Users\UserCreationService;
class MakeUserCommand extends Command class MakeUserCommand extends Command
{ {
/**
* @var \Pterodactyl\Services\Users\UserCreationService
*/
protected $creationService;
/**
* @var string
*/
protected $description = 'Creates a user on the system via the CLI.'; protected $description = 'Creates a user on the system via the CLI.';
/**
* @var string
*/
protected $signature = 'p:user:make {--email=} {--username=} {--name-first=} {--name-last=} {--password=} {--admin=} {--no-password}'; protected $signature = 'p:user:make {--email=} {--username=} {--name-first=} {--name-last=} {--password=} {--admin=} {--no-password}';
/** /**
* MakeUserCommand constructor. * MakeUserCommand constructor.
*
* @param \Pterodactyl\Services\Users\UserCreationService $creationService
*/ */
public function __construct(UserCreationService $creationService) public function __construct(private UserCreationService $creationService)
{ {
parent::__construct(); parent::__construct();
$this->creationService = $creationService;
} }
/** /**
@ -52,8 +30,6 @@ class MakeUserCommand extends Command
$root_admin = $this->option('admin') ?? $this->confirm(trans('command/messages.user.ask_admin')); $root_admin = $this->option('admin') ?? $this->confirm(trans('command/messages.user.ask_admin'));
$email = $this->option('email') ?? $this->ask(trans('command/messages.user.ask_email')); $email = $this->option('email') ?? $this->ask(trans('command/messages.user.ask_email'));
$username = $this->option('username') ?? $this->ask(trans('command/messages.user.ask_username')); $username = $this->option('username') ?? $this->ask(trans('command/messages.user.ask_username'));
$name_first = $this->option('name-first') ?? $this->ask(trans('command/messages.user.ask_name_first'));
$name_last = $this->option('name-last') ?? $this->ask(trans('command/messages.user.ask_name_last'));
if (is_null($password = $this->option('password')) && !$this->option('no-password')) { if (is_null($password = $this->option('password')) && !$this->option('no-password')) {
$this->warn(trans('command/messages.user.ask_password_help')); $this->warn(trans('command/messages.user.ask_password_help'));
@ -61,12 +37,11 @@ class MakeUserCommand extends Command
$password = $this->secret(trans('command/messages.user.ask_password')); $password = $this->secret(trans('command/messages.user.ask_password'));
} }
$user = $this->creationService->handle(compact('email', 'username', 'name_first', 'name_last', 'password', 'root_admin')); $user = $this->creationService->handle(compact('email', 'username', 'password', 'root_admin'));
$this->table(['Field', 'Value'], [ $this->table(['Field', 'Value'], [
['UUID', $user->uuid], ['UUID', $user->uuid],
['Email', $user->email], ['Email', $user->email],
['Username', $user->username], ['Username', $user->username],
['Name', $user->name],
['Admin', $user->root_admin ? 'Yes' : 'No'], ['Admin', $user->root_admin ? 'Yes' : 'No'],
]); ]);
} }

View file

@ -2,27 +2,75 @@
namespace Pterodactyl\Console; namespace Pterodactyl\Console;
use Ramsey\Uuid\Uuid;
use Pterodactyl\Models\ActivityLog;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Database\Console\PruneCommand;
use Pterodactyl\Repositories\Eloquent\SettingsRepository;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Pterodactyl\Services\Telemetry\TelemetryCollectionService;
use Pterodactyl\Console\Commands\Schedule\ProcessRunnableCommand;
use Pterodactyl\Console\Commands\Maintenance\PruneOrphanedBackupsCommand;
use Pterodactyl\Console\Commands\Maintenance\CleanServiceBackupFilesCommand;
class Kernel extends ConsoleKernel class Kernel extends ConsoleKernel
{ {
/** /**
* Register the commands for the application. * Register the commands for the application.
*/ */
protected function commands() protected function commands(): void
{ {
$this->load(__DIR__ . '/Commands'); $this->load(__DIR__ . '/Commands');
} }
/** /**
* Define the application's command schedule. * Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
*/ */
protected function schedule(Schedule $schedule) protected function schedule(Schedule $schedule): void
{ {
$schedule->command('p:schedule:process')->everyMinute()->withoutOverlapping(); // https://laravel.com/docs/10.x/upgrade#redis-cache-tags
$schedule->command('p:maintenance:clean-service-backups')->daily(); $schedule->command('cache:prune-stale-tags')->hourly();
// Execute scheduled commands for servers every minute, as if there was a normal cron running.
$schedule->command(ProcessRunnableCommand::class)->everyMinute()->withoutOverlapping();
$schedule->command(CleanServiceBackupFilesCommand::class)->daily();
if (config('backups.prune_age')) {
// Every 30 minutes, run the backup pruning command so that any abandoned backups can be deleted.
$schedule->command(PruneOrphanedBackupsCommand::class)->everyThirtyMinutes();
}
if (config('activity.prune_days')) {
$schedule->command(PruneCommand::class, ['--model' => [ActivityLog::class]])->daily();
}
if (config('pterodactyl.telemetry.enabled')) {
$this->registerTelemetry($schedule);
}
}
/**
* I wonder what this does.
*
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
private function registerTelemetry(Schedule $schedule): void
{
$settingsRepository = app()->make(SettingsRepository::class);
$uuid = $settingsRepository->get('app:telemetry:uuid');
if (is_null($uuid)) {
$uuid = Uuid::uuid4()->toString();
$settingsRepository->set('app:telemetry:uuid', $uuid);
}
// Calculate a fixed time to run the data push at, this will be the same time every day.
$time = hexdec(str_replace('-', '', substr($uuid, 27))) % 1440;
$hour = floor($time / 60);
$minute = $time % 60;
// Run the telemetry collector.
$schedule->call(app()->make(TelemetryCollectionService::class))->description('Collect Telemetry')->dailyAt("$hour:$minute");
} }
} }

View file

@ -0,0 +1,55 @@
<?php
namespace Pterodactyl\Console;
/**
* @mixin \Illuminate\Console\Command
*/
trait RequiresDatabaseMigrations
{
/**
* Checks if the migrations have finished running by comparing the last migration file.
*/
protected function hasCompletedMigrations(): bool
{
/** @var \Illuminate\Database\Migrations\Migrator $migrator */
$migrator = $this->getLaravel()->make('migrator');
$files = $migrator->getMigrationFiles(database_path('migrations'));
if (!$migrator->repositoryExists()) {
return false;
}
if (array_diff(array_keys($files), $migrator->getRepository()->getRan())) {
return false;
}
return true;
}
/**
* Throw a massive error into the console to hopefully catch the users attention and get
* them to properly run the migrations rather than ignoring all of the other previous
* errors...
*/
protected function showMigrationWarning(): void
{
$this->getOutput()->writeln('<options=bold>
| @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
| |
| Your database has not been properly migrated! |
| |
| @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |</>
You must run the following command to finish migrating your database:
<fg=green;options=bold>php artisan migrate --step --force</>
You will not be able to use Pterodactyl Panel as expected without fixing your
database state by running the command above.
');
$this->getOutput()->error('You must correct the error above before continuing.');
}
}

View file

@ -8,8 +8,6 @@ interface ReceivesEvents
{ {
/** /**
* Handles receiving an event from the application. * Handles receiving an event from the application.
*
* @param \Pterodactyl\Events\Event $notification
*/ */
public function handle(Event $notification): void; public function handle(Event $notification): void;
} }

View file

@ -1,24 +1,14 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Criteria; namespace Pterodactyl\Contracts\Criteria;
use Illuminate\Database\Eloquent\Model;
use Pterodactyl\Repositories\Repository; use Pterodactyl\Repositories\Repository;
interface CriteriaInterface interface CriteriaInterface
{ {
/** /**
* Apply selected criteria to a repository call. * Apply selected criteria to a repository call.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param \Pterodactyl\Repositories\Repository $repository
* @return mixed
*/ */
public function apply($model, Repository $repository); public function apply(Model $model, Repository $repository): mixed;
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Extensions; namespace Pterodactyl\Contracts\Extensions;
@ -16,11 +9,7 @@ interface HashidsInterface extends VendorHashidsInterface
/** /**
* Decode an encoded hashid and return the first result. * Decode an encoded hashid and return the first result.
* *
* @param string $encoded
* @param null $default
* @return mixed
*
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
*/ */
public function decodeFirst($encoded, $default = null); public function decodeFirst(string $encoded, string $default = null): mixed;
} }

View file

@ -0,0 +1,13 @@
<?php
namespace Pterodactyl\Contracts\Http;
interface ClientPermissionsRequest
{
/**
* Returns the permissions string indicating which permission should be used to
* validate that the authenticated user has permission to perform this action against
* the given resource (server).
*/
public function permission(): string;
}

View file

@ -2,82 +2,18 @@
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
use Illuminate\Support\Collection; use Pterodactyl\Models\Allocation;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
interface AllocationRepositoryInterface extends RepositoryInterface interface AllocationRepositoryInterface extends RepositoryInterface
{ {
/** /**
* Set an array of allocation IDs to be assigned to a specific server. * Return all the allocations that exist for a node that are not currently
*
* @param int|null $server
* @param array $ids
* @return int
*/
public function assignAllocationsToServer(int $server = null, array $ids): int;
/**
* Return all of the allocations for a specific node.
*
* @param int $node
* @return \Illuminate\Support\Collection
*/
public function getAllocationsForNode(int $node): Collection;
/**
* Return all of the allocations for a node in a paginated format.
*
* @param int $node
* @param int $perPage
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/
public function getPaginatedAllocationsForNode(int $node, int $perPage = 100): LengthAwarePaginator;
/**
* Return all of the unique IPs that exist for a given node.
*
* @param int $node
* @return \Illuminate\Support\Collection
*/
public function getUniqueAllocationIpsForNode(int $node): Collection;
/**
* Return all of the allocations that exist for a node that are not currently
* allocated. * allocated.
*
* @param int $node
* @return array
*/ */
public function getUnassignedAllocationIds(int $node): array; public function getUnassignedAllocationIds(int $node): array;
/**
* Get an array of all allocations that are currently assigned to a given server.
*
* @param int $server
* @return array
*/
public function getAssignedAllocationIds(int $server): array;
/**
* Return a concatenated result set of node ips that already have at least one
* server assigned to that IP. This allows for filtering out sets for
* dedicated allocation IPs.
*
* If an array of nodes is passed the results will be limited to allocations
* in those nodes.
*
* @param array $nodes
* @return array
*/
public function getDiscardableDedicatedAllocations(array $nodes = []): array;
/** /**
* Return a single allocation from those meeting the requirements. * Return a single allocation from those meeting the requirements.
*
* @param array $nodes
* @param array $ports
* @param bool $dedicated
* @return \Pterodactyl\Models\Allocation|null
*/ */
public function getRandomAllocation(array $nodes, array $ports, bool $dedicated = false); public function getRandomAllocation(array $nodes, array $ports, bool $dedicated = false): ?Allocation;
} }

View file

@ -8,36 +8,22 @@ use Illuminate\Support\Collection;
interface ApiKeyRepositoryInterface extends RepositoryInterface interface ApiKeyRepositoryInterface extends RepositoryInterface
{ {
/** /**
* Get all of the account API keys that exist for a specific user. * Get all the account API keys that exist for a specific user.
*
* @param \Pterodactyl\Models\User $user
* @return \Illuminate\Support\Collection
*/ */
public function getAccountKeys(User $user): Collection; public function getAccountKeys(User $user): Collection;
/** /**
* Get all of the application API keys that exist for a specific user. * Get all the application API keys that exist for a specific user.
*
* @param \Pterodactyl\Models\User $user
* @return \Illuminate\Support\Collection
*/ */
public function getApplicationKeys(User $user): Collection; public function getApplicationKeys(User $user): Collection;
/** /**
* Delete an account API key from the panel for a specific user. * Delete an account API key from the panel for a specific user.
*
* @param \Pterodactyl\Models\User $user
* @param string $identifier
* @return int
*/ */
public function deleteAccountKey(User $user, string $identifier): int; public function deleteAccountKey(User $user, string $identifier): int;
/** /**
* Delete an application API key from the panel for a specific user. * Delete an application API key from the panel for a specific user.
*
* @param \Pterodactyl\Models\User $user
* @param string $identifier
* @return int
*/ */
public function deleteApplicationKey(User $user, string $identifier): int; public function deleteApplicationKey(User $user, string $identifier): int;
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;

View file

@ -1,38 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Attributes;
interface SearchableInterface
{
/**
* Set the search term.
*
* @param string|null $term
* @return $this
* @deprecated
*/
public function search($term);
/**
* Set the search term to use when requesting all records from
* the model.
*
* @param string|null $term
* @return $this
*/
public function setSearchTerm(string $term = null);
/**
* Determine if a valid search term is set on this repository.
*
* @return bool
*/
public function hasSearchTerm(): bool;
/**
* Return the search term.
*
* @return string|null
*/
public function getSearchTerm();
}

View file

@ -1,65 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use GuzzleHttp\Client;
use Pterodactyl\Models\Node;
use Pterodactyl\Models\Server;
interface BaseRepositoryInterface
{
/**
* Set the node model to be used for this daemon connection.
*
* @param \Pterodactyl\Models\Node $node
* @return $this
*/
public function setNode(Node $node);
/**
* Return the node model being used.
*
* @return \Pterodactyl\Models\Node|null
*/
public function getNode();
/**
* Set the Server model to use when requesting information from the Daemon.
*
* @param \Pterodactyl\Models\Server $server
* @return $this
*/
public function setServer(Server $server);
/**
* Return the Server model.
*
* @return \Pterodactyl\Models\Server|null
*/
public function getServer();
/**
* Set the token to be used in the X-Access-Token header for requests to the daemon.
*
* @param string $token
* @return $this
*/
public function setToken(string $token);
/**
* Return the access token being used for requests.
*
* @return string|null
*/
public function getToken();
/**
* Return an instance of the Guzzle HTTP Client to be used for requests.
*
* @param array $headers
* @return \GuzzleHttp\Client
*
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/
public function getHttpClient(array $headers = []): Client;
}

View file

@ -1,16 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use Psr\Http\Message\ResponseInterface;
interface CommandRepositoryInterface extends BaseRepositoryInterface
{
/**
* Send a command to a server.
*
* @param string $command
* @return \Psr\Http\Message\ResponseInterface
*/
public function send(string $command): ResponseInterface;
}

View file

@ -1,16 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use Psr\Http\Message\ResponseInterface;
interface ConfigurationRepositoryInterface extends BaseRepositoryInterface
{
/**
* Update the configuration details for the specified node using data from the database.
*
* @param array $overrides
* @return \Psr\Http\Message\ResponseInterface
*/
public function update(array $overrides = []): ResponseInterface;
}

View file

@ -1,50 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use stdClass;
use Psr\Http\Message\ResponseInterface;
interface FileRepositoryInterface extends BaseRepositoryInterface
{
/**
* Return stat information for a given file.
*
* @param string $path
* @return \stdClass
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function getFileStat(string $path): stdClass;
/**
* Return the contents of a given file if it can be edited in the Panel.
*
* @param string $path
* @return string
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function getContent(string $path): string;
/**
* Save new contents to a given file.
*
* @param string $path
* @param string $content
* @return \Psr\Http\Message\ResponseInterface
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function putContent(string $path, string $content): ResponseInterface;
/**
* Return a directory listing for a given path.
*
* @param string $path
* @return array
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function getDirectory(string $path): array;
}

View file

@ -1,23 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use Psr\Http\Message\ResponseInterface;
interface PowerRepositoryInterface extends BaseRepositoryInterface
{
const SIGNAL_START = 'start';
const SIGNAL_STOP = 'stop';
const SIGNAL_RESTART = 'restart';
const SIGNAL_KILL = 'kill';
/**
* Send a power signal to a server.
*
* @param string $signal
* @return \Psr\Http\Message\ResponseInterface
*
* @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
*/
public function sendSignal(string $signal): ResponseInterface;
}

View file

@ -1,80 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository\Daemon;
use Psr\Http\Message\ResponseInterface;
interface ServerRepositoryInterface extends BaseRepositoryInterface
{
/**
* Create a new server on the daemon for the panel.
*
* @param array $structure
* @param array $overrides
* @return \Psr\Http\Message\ResponseInterface
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function create(array $structure, array $overrides = []): ResponseInterface;
/**
* Update server details on the daemon.
*
* @param array $data
* @return \Psr\Http\Message\ResponseInterface
*/
public function update(array $data): ResponseInterface;
/**
* Mark a server to be reinstalled on the system.
*
* @param array|null $data
* @return \Psr\Http\Message\ResponseInterface
*/
public function reinstall(array $data = null): ResponseInterface;
/**
* Mark a server as needing a container rebuild the next time the server is booted.
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function rebuild(): ResponseInterface;
/**
* Suspend a server on the daemon.
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function suspend(): ResponseInterface;
/**
* Un-suspend a server on the daemon.
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function unsuspend(): ResponseInterface;
/**
* Delete a server on the daemon.
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function delete(): ResponseInterface;
/**
* Return details on a specific server.
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function details(): ResponseInterface;
/**
* Revoke an access key on the daemon before the time is expired.
*
* @param string|array $key
* @return \Psr\Http\Message\ResponseInterface
*
* @throws \GuzzleHttp\Exception\RequestException
*/
public function revokeAccessKey($key): ResponseInterface;
}

View file

@ -1,52 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository;
use Pterodactyl\Models\User;
use Pterodactyl\Models\DaemonKey;
use Illuminate\Support\Collection;
interface DaemonKeyRepositoryInterface extends RepositoryInterface
{
/**
* String prepended to keys to identify that they are managed internally and not part of the user API.
*/
const INTERNAL_KEY_IDENTIFIER = 'i_';
/**
* Load the server and user relations onto a key model.
*
* @param \Pterodactyl\Models\DaemonKey $key
* @param bool $refresh
* @return \Pterodactyl\Models\DaemonKey
*/
public function loadServerAndUserRelations(DaemonKey $key, bool $refresh = false): DaemonKey;
/**
* Return a daemon key with the associated server relation attached.
*
* @param string $key
* @return \Pterodactyl\Models\DaemonKey
*
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/
public function getKeyWithServer(string $key): DaemonKey;
/**
* Get all of the keys for a specific user including the information needed
* from their server relation for revocation on the daemon.
*
* @param \Pterodactyl\Models\User $user
* @return \Illuminate\Support\Collection
*/
public function getKeysForRevocation(User $user): Collection;
/**
* Delete an array of daemon keys from the database. Used primarily in
* conjunction with getKeysForRevocation.
*
* @param array $ids
* @return bool|int
*/
public function deleteKeys(array $ids);
}

View file

@ -9,8 +9,6 @@ interface DatabaseHostRepositoryInterface extends RepositoryInterface
/** /**
* Return database hosts with a count of databases and the node * Return database hosts with a count of databases and the node
* information for which it is attached. * information for which it is attached.
*
* @return \Illuminate\Support\Collection
*/ */
public function getWithViewDetails(): Collection; public function getWithViewDetails(): Collection;
} }

View file

@ -2,107 +2,60 @@
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
use Pterodactyl\Models\Database;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Pagination\LengthAwarePaginator;
interface DatabaseRepositoryInterface extends RepositoryInterface interface DatabaseRepositoryInterface extends RepositoryInterface
{ {
const DEFAULT_CONNECTION_NAME = 'dynamic'; public const DEFAULT_CONNECTION_NAME = 'dynamic';
/** /**
* Set the connection name to execute statements against. * Set the connection name to execute statements against.
*
* @param string $connection
* @return $this
*/ */
public function setConnection(string $connection); public function setConnection(string $connection): self;
/** /**
* Return the connection to execute statements against. * Return the connection to execute statements against.
*
* @return string
*/ */
public function getConnection(): string; public function getConnection(): string;
/** /**
* Return all of the databases belonging to a server. * Return all the databases belonging to a server.
*
* @param int $server
* @return \Illuminate\Support\Collection
*/ */
public function getDatabasesForServer(int $server): Collection; public function getDatabasesForServer(int $server): Collection;
/** /**
* Return all of the databases for a given host with the server relationship loaded. * Return all the databases for a given host with the server relationship loaded.
*
* @param int $host
* @param int $count
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/ */
public function getDatabasesForHost(int $host, int $count = 25): LengthAwarePaginator; public function getDatabasesForHost(int $host, int $count = 25): LengthAwarePaginator;
/**
* Create a new database if it does not already exist on the host with
* the provided details.
*
* @param array $data
* @return \Pterodactyl\Models\Database
*
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
* @throws \Pterodactyl\Exceptions\Repository\DuplicateDatabaseNameException
*/
public function createIfNotExists(array $data): Database;
/** /**
* Create a new database on a given connection. * Create a new database on a given connection.
*
* @param string $database
* @return bool
*/ */
public function createDatabase(string $database): bool; public function createDatabase(string $database): bool;
/** /**
* Create a new database user on a given connection. * Create a new database user on a given connection.
*
* @param string $username
* @param string $remote
* @param string $password
* @return bool
*/ */
public function createUser(string $username, string $remote, string $password): bool; public function createUser(string $username, string $remote, string $password, ?int $max_connections): bool;
/** /**
* Give a specific user access to a given database. * Give a specific user access to a given database.
*
* @param string $database
* @param string $username
* @param string $remote
* @return bool
*/ */
public function assignUserToDatabase(string $database, string $username, string $remote): bool; public function assignUserToDatabase(string $database, string $username, string $remote): bool;
/** /**
* Flush the privileges for a given connection. * Flush the privileges for a given connection.
*
* @return bool
*/ */
public function flush(): bool; public function flush(): bool;
/** /**
* Drop a given database on a specific connection. * Drop a given database on a specific connection.
*
* @param string $database
* @return bool
*/ */
public function dropDatabase(string $database): bool; public function dropDatabase(string $database): bool;
/** /**
* Drop a given user on a specific connection. * Drop a given user on a specific connection.
*
* @param string $username
* @param string $remote
* @return mixed
*/ */
public function dropUser(string $username, string $remote): bool; public function dropUser(string $username, string $remote): bool;
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
@ -17,34 +10,22 @@ interface EggRepositoryInterface extends RepositoryInterface
/** /**
* Return an egg with the variables relation attached. * Return an egg with the variables relation attached.
* *
* @param int $id
* @return \Pterodactyl\Models\Egg
*
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
public function getWithVariables(int $id): Egg; public function getWithVariables(int $id): Egg;
/** /**
* Return all eggs and their relations to be used in the daemon API. * Return all eggs and their relations to be used in the daemon API.
*
* @return \Illuminate\Database\Eloquent\Collection
*/ */
public function getAllWithCopyAttributes(): Collection; public function getAllWithCopyAttributes(): Collection;
/** /**
* Return an egg with the scriptFrom and configFrom relations loaded onto the model. * Return an egg with the scriptFrom and configFrom relations loaded onto the model.
*
* @param int|string $value
* @param string $column
* @return \Pterodactyl\Models\Egg
*/ */
public function getWithCopyAttributes($value, string $column = 'id'): Egg; public function getWithCopyAttributes(int|string $value, string $column = 'id'): Egg;
/** /**
* Return all of the data needed to export a service. * Return all the data needed to export a service.
*
* @param int $id
* @return \Pterodactyl\Models\Egg
* *
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
@ -52,10 +33,6 @@ interface EggRepositoryInterface extends RepositoryInterface
/** /**
* Confirm a copy script belongs to the same nest as the item trying to use it. * Confirm a copy script belongs to the same nest as the item trying to use it.
*
* @param int $copyFromId
* @param int $service
* @return bool
*/ */
public function isCopyableScript(int $copyFromId, int $service): bool; public function isCopyableScript(int $copyFromId, int $service): bool;
} }

View file

@ -1,11 +1,4 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
@ -16,9 +9,6 @@ interface EggVariableRepositoryInterface extends RepositoryInterface
/** /**
* Return editable variables for a given egg. Editable variables must be set to * Return editable variables for a given egg. Editable variables must be set to
* user viewable in order to be picked up by this function. * user viewable in order to be picked up by this function.
*
* @param int $egg
* @return \Illuminate\Support\Collection
*/ */
public function getEditableVariables(int $egg): Collection; public function getEditableVariables(int $egg): Collection;
} }

View file

@ -4,29 +4,21 @@ namespace Pterodactyl\Contracts\Repository;
use Pterodactyl\Models\Location; use Pterodactyl\Models\Location;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Pterodactyl\Contracts\Repository\Attributes\SearchableInterface;
interface LocationRepositoryInterface extends RepositoryInterface, SearchableInterface interface LocationRepositoryInterface extends RepositoryInterface
{ {
/** /**
* Return locations with a count of nodes and servers attached to it. * Return locations with a count of nodes and servers attached to it.
*
* @return \Illuminate\Support\Collection
*/ */
public function getAllWithDetails(): Collection; public function getAllWithDetails(): Collection;
/** /**
* Return all of the available locations with the nodes as a relationship. * Return all the available locations with the nodes as a relationship.
*
* @return \Illuminate\Support\Collection
*/ */
public function getAllWithNodes(): Collection; public function getAllWithNodes(): Collection;
/** /**
* Return all of the nodes and their respective count of servers for a location. * Return all the nodes and their respective count of servers for a location.
*
* @param int $id
* @return mixed
* *
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
@ -35,9 +27,6 @@ interface LocationRepositoryInterface extends RepositoryInterface, SearchableInt
/** /**
* Return a location and the count of nodes in that location. * Return a location and the count of nodes in that location.
* *
* @param int $id
* @return mixed
*
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
public function getWithNodeCount(int $id): Location; public function getWithNodeCount(int $id): Location;

View file

@ -1,44 +1,29 @@
<?php <?php
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
*/
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
use Pterodactyl\Models\Nest; use Pterodactyl\Models\Nest;
use Illuminate\Database\Eloquent\Collection;
interface NestRepositoryInterface extends RepositoryInterface interface NestRepositoryInterface extends RepositoryInterface
{ {
/** /**
* Return a nest or all nests with their associated eggs, variables, and packs. * Return a nest or all nests with their associated eggs and variables.
*
* @param int $id
* @return \Illuminate\Database\Eloquent\Collection|\Pterodactyl\Models\Nest
* *
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
public function getWithEggs(int $id = null); public function getWithEggs(int $id = null): Collection|Nest;
/** /**
* Return a nest or all nests and the count of eggs, packs, and servers for that nest. * Return a nest or all nests and the count of eggs and servers for that nest.
*
* @param int|null $id
* @return \Pterodactyl\Models\Nest|\Illuminate\Database\Eloquent\Collection
* *
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
public function getWithCounts(int $id = null); public function getWithCounts(int $id = null): Collection|Nest;
/** /**
* Return a nest along with its associated eggs and the servers relation on those eggs. * Return a nest along with its associated eggs and the servers relation on those eggs.
* *
* @param int $id
* @return \Pterodactyl\Models\Nest
*
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/ */
public function getWithEggServers(int $id): Nest; public function getWithEggServers(int $id): Nest;

Some files were not shown because too many files have changed in this diff Show more