Compare commits

...

2489 Commits

Author SHA1 Message Date
Angelillo15 c332151c9a Merge branch 'release/v1.11.7' of https://github.com/pterodactyl/panel into release/v1.11.5 2024-05-11 17:11:39 +02:00
Angelillo15 235e1007f7
Update README.md 2024-05-08 16:18:24 +02:00
Pterodactyl CI 62b8a53165 ci(release): bump version 2024-05-08 04:17:09 +00:00
Matthew Penner 3a0b7d13a9
Update CHANGELOG.md 2024-05-07 22:13:13 -06:00
Matthew Penner a96d87cf23
Update README.md 2024-05-07 22:12:15 -06:00
Daniel Barton 049ad838e3
egg(minecraft): add Java 21 to image list (#5093) 2024-05-07 21:52:33 -06:00
Daniel Barton dbd7f31c41
Update Minecraft Eula link (#5090)
Co-authored-by: Alan Escarcha <alanescarcha11@gmail.com>
2024-05-06 18:50:06 -06:00
Daniel Barton 2ffe019675
ui(server): support for decompressing .7z files (#5016) 2024-05-04 17:16:00 -06:00
Matthew Penner 7bfc265a7e
api(remote): fix use of missing `node_id` field
Fixes #5088
2024-05-04 16:06:13 -06:00
Matthew Penner b7b2413f3d
Update CHANGELOG.md 2024-05-02 13:37:18 -06:00
Matthew Penner 96e6c66040
Update README.md 2024-05-02 13:22:31 -06:00
Matthew Penner 6dc85c731e
chore: update `SECURITY.md`
ref; https://github.com/pterodactyl/panel/pull/5074 which targets the
wrong branch
2024-04-16 15:17:36 -06:00
Matthew Penner 0dad4c5a48
ui(admin): better handling of manual HTML rendering 2024-04-11 10:47:00 -06:00
Matthew Penner b1fa3927c1
api(remote): fix oops in BackupStatusController 2024-04-11 10:42:18 -06:00
Matthew Penner f671046947
admin: tweaks to validation and rendering 2024-04-10 18:13:25 -06:00
Matthew Penner 319ca683f8
api(remote): ensure requesting node is checked 2024-04-10 17:38:09 -06:00
Matthew Penner 1172d71d31
app: improve `docker_image` validation 2024-04-10 17:22:29 -06:00
Matthew Penner 2497819ca7
Update README.md 2024-03-16 14:02:07 -06:00
Matthew Penner 787bf34a59
nix: update to php 8.2 2024-03-16 14:01:51 -06:00
Angelillo15 6592e8e1cb
release 1.11.5 2024-01-16 19:44:02 +01:00
Angelillo15 a5c52e1af5
Update docker.yaml 2024-01-16 18:58:28 +01:00
Matthew Penner f0489f677b
Update README.md 2023-12-29 22:09:21 -07:00
Matthew Penner 8abf2d8106
ui(server): fix defaultValue not being used with VariableBox select 2023-10-20 19:30:25 -06:00
Matthew Penner 341eda7855
egg(rust): change ordering of mod frameworks 2023-10-20 19:29:21 -06:00
Angelillo15 9678ae0037 Bump version 2023-10-17 22:33:15 +02:00
Angelillo15 d4ac089be8 Fix height 2023-10-17 22:32:54 +02:00
Angelillo15 7dcfb4426a Add release script 2023-10-17 22:25:08 +02:00
Angelillo15 7d58952a9b Put fork version 2023-10-17 21:51:44 +02:00
Angelillo15 5cea017833 Change branding in admin 2023-10-17 21:51:34 +02:00
Angelillo15 9979521c3a Change wheelchar -> cogs 2023-10-17 21:51:21 +02:00
Angelillo15 6b9dd72815 Fix progess bar 2023-10-17 21:51:04 +02:00
Angelillo15 fae1ac5ae8 Fix ProgressBar 2023-10-17 21:50:57 +02:00
Angelillo15 9c054b7af3 Change branding 2023-10-17 21:49:21 +02:00
Angelillo15 5694e2ae0c Make sidebar toggle button to only appear in sidebar pages 2023-10-17 21:49:14 +02:00
Angelillo15 7935e9f4a8 Fix sidebar css 2023-10-17 21:48:35 +02:00
Angelillo15 91364425ad Add NookTheme version 2023-10-17 21:48:24 +02:00
Angelillo15 f6cf39fb99 Disable host check 2023-10-17 21:48:15 +02:00
Angelillo15 54b1793e2d Merge remote-tracking branch 'upstream/release/v1.11.5' into release/v1.11.5 2023-10-16 16:32:56 +02:00
Angelillo15 40dd354b18 Merge branch 'release/v1.11.4' into release/v1.11.3 2023-10-14 21:02:03 +02:00
Pterodactyl CI 22629f4ab8 ci(release): bump version 2023-10-12 20:00:25 +00:00
Matthew Penner 742e352c67
Update CHANGELOG.md 2023-10-12 13:55:53 -06:00
Matthew Penner a62e8b1a67
egg(rust): use yolk image instead of the deprecated one 2023-10-12 13:54:42 -06:00
Angelillo15 6837384c19
Merge branch 'release/v1.10.4' into release/v1.11.3 2023-10-11 22:49:51 +02:00
Pterodactyl CI 35d49d3caa ci(release): bump version 2023-10-10 19:25:34 +00:00
Matthew Penner 35159b3715
Update CHANGELOG.md 2023-10-10 13:13:00 -06:00
Matthew Penner 7fa0c26d80
Update README.md 2023-10-02 17:06:05 -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
Angelillo15 a3b81929ab Fix navigation bar in mobile devices 2023-08-07 21:47:02 +02:00
Angelillo15 6169663f16 Fix readme.md 2023-08-07 16:08:00 +02:00
Angelillo15 da6f027324 Fix height of progress bar 2023-08-07 15:58:51 +02:00
Angelillo15 f173a5e496 Fix height and make smaller the icons height 2023-08-07 15:58:16 +02:00
Angelillo15 9b00a38d3c Added a clean before the build 2023-08-07 15:54:01 +02:00
Angelillo15 883bb53c5c Changed scrollbar color 2023-08-07 15:53:43 +02:00
Angelillo15 34a559f3e8 Added json clean command 2023-08-06 18:57:05 +02:00
Angelillo15 a6db4e2382 Edited the readme.md 2023-08-06 18:34:25 +02:00
Angelillo15 f5fda554fa Added icon bg 2023-08-06 18:10:29 +02:00
Angelillo15 bab2b21098 Edited colors of Networking statics 2023-08-05 13:37:01 +02:00
Angelillo15 f92af06eda Edited load bar 2023-08-05 13:36:39 +02:00
Angelillo15 6c624fd31b Added margin top of 4 2023-08-05 13:36:23 +02:00
Angelillo15 36ea087179 added topbar classname 2023-08-05 13:35:59 +02:00
Angelillo15 64dc2500a1 Added class nook-container 2023-08-05 13:35:42 +02:00
Angelillo15 d68c63c401 Remove margin and added top of 6vh 2023-08-05 13:35:27 +02:00
Angelillo15 7601e3fe76 added orange color 2023-08-05 13:35:01 +02:00
Angelillo15 4ac857da5b Added console 2023-08-04 23:53:40 +02:00
Angelillo15 8595f2a09a Added love command 2023-08-04 23:46:42 +02:00
Angelillo15 d2984af12c Change colors of Stat element in the panel 2023-08-04 23:27:50 +02:00
Angelillo15 f8312b1cb2 Added new icons to router 2023-08-04 20:33:10 +02:00
Angelillo15 d777b3b55e Change account router 2023-08-04 20:32:58 +02:00
Angelillo15 6c04718c35 Change content container class to use sidebar 2023-08-04 20:24:08 +02:00
Angelillo15 099cda8ebb Change className 2023-08-04 20:23:27 +02:00
Angelillo15 72d086d292 Added sidebar id to the id list 2023-08-04 20:23:14 +02:00
Angelillo15 860b337b1f Added NavBar buttons 2023-08-04 20:22:50 +02:00
Angelillo15 638bf4cb59 added content container 2023-08-04 20:22:31 +02:00
Angelillo15 aa13ce4698 Implements new ServerRouter 2023-08-04 19:23:13 +02:00
Angelillo15 da0be11d29 Deleted Sidebar from dashboard 2023-08-04 19:22:54 +02:00
Angelillo15 dc6b5e704f Create SideBar with Children props 2023-08-04 19:22:32 +02:00
Angelillo15 cc4c5eac21 Added icon prop 2023-08-04 19:22:12 +02:00
Angelillo15 ae53bd8034 Added icon 2023-08-04 19:21:53 +02:00
Matthew Penner 3cd15d6f21
ci(docker): skip login on pull requests 2023-07-11 20:52:09 -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
Angelillo15 37b9ef5585 Add sidebar base logic 2023-07-09 03:02:17 +02:00
Angelillo15 6d8f76dec5 Change background colors 2023-07-08 22:54:58 +02:00
Angelillo15 80f51e0af2 Addapt dev settings 2023-07-08 22:48:06 +02:00
Matthew Penner 7c8bdfc4d8
Update README.md 2023-06-28 20:23:53 -06:00
Matthew Penner b23f3114e4
Update README.md 2023-05-12 23:08:43 -06:00
Matthew Penner 8bfcffc477
Update README.md 2023-03-11 14:11:34 -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 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
Pterodactyl CI a99941eb2b ci(release): bump version 2023-01-27 19:26:50 +00:00
Matthew Penner 43f7c10617
Update CHANGELOG.md 2023-01-27 12:24:55 -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 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 a2fb319ff5
Update README.md sponsors 2023-01-01 15:26:38 -07:00
Omar Kamel e43da311fe
api(client): keep existing server description when empty (#4619) 2022-12-14 14:19:45 -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 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 73b27aea8e
Update CHANGELOG.md 2022-12-04 15:27:21 -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
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
Charles Morgan a4e547dc67
ui(server): fix console searchbar z-index (#4587) 2022-11-27 19:38:28 -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
Pterodactyl CI d0974b0066 bump version for release 2022-10-16 18:23:08 +00: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
1605 changed files with 66537 additions and 55107 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,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 @@
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

@ -4,11 +4,13 @@ APP_KEY=SomeRandomString3232RandomString
APP_THEME=pterodactyl APP_THEME=pterodactyl
APP_TIMEZONE=UTC APP_TIMEZONE=UTC
APP_URL=http://localhost/ APP_URL=http://localhost/
APP_ENVIRONMENT_ONLY=true
TESTING_DB_HOST=127.0.0.1 DB_CONNECTION=mysql
TESTING_DB_DATABASE=travis DB_HOST=127.0.0.1
TESTING_DB_USERNAME=root DB_DATABASE=testing
TESTING_DB_PASSWORD="" DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array CACHE_DRIVER=array
SESSION_DRIVER=array SESSION_DRIVER=array
@ -16,4 +18,3 @@ MAIL_DRIVER=array
QUEUE_DRIVER=sync QUEUE_DRIVER=sync
HASHIDS_SALT=test123 HASHIDS_SALT=test123
APP_ENVIRONMENT_ONLY=true

View File

@ -2,30 +2,43 @@ APP_ENV=production
APP_DEBUG=false APP_DEBUG=false
APP_KEY= APP_KEY=
APP_THEME=pterodactyl APP_THEME=pterodactyl
APP_TIMEZONE=America/New_York APP_TIMEZONE=UTC
APP_CLEAR_TASKLOG=720 APP_URL=http://panel.example.com
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

6
.eslintignore Normal file
View File

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

51
.eslintrc.js Normal file
View File

@ -0,0 +1,51 @@
/** @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:@typescript-eslint/recommended',
'plugin:jest-dom/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,
'@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

View File

@ -2,7 +2,7 @@
This is a ready to use docker image for the panel. This is a ready to use docker image for the panel.
## Requirements ## 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. This docker image requires some additional software to function. The software can either be provided in other containers (see the [docker-compose.yml](https://github.com/pterodactyl/panel/blob/develop/docker-compose.example.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 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.
@ -12,7 +12,7 @@ You can provide additional settings using a custom `.env` file or by setting the
## Setup ## 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). Start the docker container and the required dependencies (either provide existing ones or start containers as well, see the [docker-compose.yml](https://github.com/pterodactyl/panel/blob/develop/docker-compose.example.yml) file as an example.
After the startup is complete you'll need to create a user. After the startup is complete you'll need to create a user.
If you are running the docker container without docker-compose, use: If you are running the docker container without docker-compose, use:
@ -27,13 +27,13 @@ docker-compose exec panel php artisan p:user:make
## Environment Variables ## 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. 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. Note: If your `APP_URL` starts with `https://` you need to provide an `LE_EMAIL` as well so Certificates can be generated.
| Variable | Description | Required | | Variable | Description | Required |
| ------------------- | ------------------------------------------------------------------------------ | -------- | | ------------------- | ------------------------------------------------------------------------------ | -------- |
| `APP_URL` | The URL the panel will be reachable with (including protocol) | yes | | `APP_URL` | The URL the panel will be reachable with (including protocol) | yes |
| `APP_TIMEZONE` | The timezone to use for the panel | yes | | `APP_TIMEZONE` | The timezone to use for the panel | yes |
| `LETSENCRYPT_EMAIL` | The email used for letsencrypt certificate generation | yes | | `LE_EMAIL` | The email used for letsencrypt certificate generation | yes |
| `DB_HOST` | The host of the mysql instance | yes | | `DB_HOST` | The host of the mysql instance | yes |
| `DB_PORT` | The port of the mysql instance | yes | | `DB_PORT` | The port of the mysql instance | yes |
| `DB_DATABASE` | The name of the mysql database | yes | | `DB_DATABASE` | The name of the mysql database | yes |

View File

@ -31,7 +31,7 @@ server {
location ~ \.php$ { location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_split_path_info ^(.+\.php)(/.+)$;
# the fastcgi_pass path needs to be changed accordingly when using CentOS # the fastcgi_pass path needs to be changed accordingly when using CentOS
fastcgi_pass unix:/var/run/php/php-fpm7.2.sock; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi_params; include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";

View File

@ -49,7 +49,7 @@ server {
location ~ \.php$ { location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php-fpm7.2.sock; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi_params; include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";

81
.github/docker/entrypoint.sh vendored Normal file
View File

@ -0,0 +1,81 @@
#!/bin/ash -e
cd /app
mkdir -p /var/log/panel/logs/ /var/log/supervisord/ /var/log/nginx/ /var/log/php7/ \
&& chmod 777 /var/log/panel/logs/ \
&& ln -s /app/storage/logs/ /var/log/panel/
## check for .env file and generate app keys if missing
if [ -f /app/var/.env ]; then
echo "external vars exist."
rm -rf /app/.env
ln -s /app/var/.env /app/
else
echo "external vars don't exist."
rm -rf /app/.env
touch /app/var/.env
## manually generate a key because key generate --force fails
if [ -z $APP_KEY ]; then
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
else
echo -e "APP_KEY exists in environment, using that."
echo -e "APP_KEY=$APP_KEY" > /app/var/.env
fi
ln -s /app/var/.env /app/
fi
echo "Checking if https is required."
if [ -f /etc/nginx/http.d/panel.conf ]; then
echo "Using nginx config already in place."
if [ $LE_EMAIL ]; then
echo "Checking for cert update"
certbot certonly -d $(echo $APP_URL | sed 's~http[s]*://~~g') --standalone -m $LE_EMAIL --agree-tos -n
else
echo "No letsencrypt email is set"
fi
else
echo "Checking if letsencrypt email is set."
if [ -z $LE_EMAIL ]; then
echo "No letsencrypt email is set using http config."
cp .github/docker/default.conf /etc/nginx/http.d/panel.conf
else
echo "writing ssl config"
cp .github/docker/default_ssl.conf /etc/nginx/http.d/panel.conf
echo "updating ssl config for domain"
sed -i "s|<domain>|$(echo $APP_URL | sed 's~http[s]*://~~g')|g" /etc/nginx/http.d/panel.conf
echo "generating certs"
certbot certonly -d $(echo $APP_URL | sed 's~http[s]*://~~g') --standalone -m $LE_EMAIL --agree-tos -n
fi
echo "Removing the default nginx config"
rm -rf /etc/nginx/http.d/default.conf
fi
if [[ -z $DB_PORT ]]; then
echo -e "DB_PORT not specified, defaulting to 3306"
DB_PORT=3306
fi
## check for DB up before starting the panel
echo "Checking database status."
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Waiting for database connection..."
# wait for 1 seconds before check again
sleep 1
done
## make sure the db is set up
echo -e "Migrating and Seeding D.B"
php artisan migrate --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

@ -20,12 +20,12 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[program:php-fpm] [program:php-fpm]
command=/usr/sbin/php-fpm7 -F command=/usr/local/sbin/php-fpm -F
autostart=true autostart=true
autorestart=true autorestart=true
[program:queue-worker] [program:queue-worker]
command=/usr/bin/php /app/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3 command=/usr/local/bin/php /app/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
user=nginx user=nginx
autostart=true autostart=true
autorestart=true autorestart=true

View File

@ -1,9 +1,9 @@
[pterodactyl] [www]
user = nginx user = nginx
group = nginx group = nginx
listen = /var/run/php/php-fpm7.2.sock listen = 127.0.0.1:9000
listen.owner = nginx listen.owner = nginx
listen.group = nginx listen.group = nginx
listen.mode = 0750 listen.mode = 0750

35
.github/workflows/build.yaml vendored Normal file
View File

@ -0,0 +1,35 @@
name: Build
on:
push:
branches:
- "develop"
- "1.0-develop"
pull_request:
branches:
- "develop"
- "1.0-develop"
jobs:
ui:
name: UI
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
node-version: [16]
steps:
- name: Code Checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Build
run: yarn build:production

72
.github/workflows/ci.yaml vendored Normal file
View File

@ -0,0 +1,72 @@
name: Tests
on:
push:
branches:
- "develop"
- "1.0-develop"
pull_request:
branches:
- "develop"
- "1.0-develop"
jobs:
tests:
name: Tests
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
php: [8.1, 8.2]
database: ["mariadb:10.2", "mysql:8"]
services:
database:
image: ${{ matrix.database }}
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: testing
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
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: Setup .env
run: cp .env.ci .env
- 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
if: ${{ always() }}
env:
DB_HOST: UNIT_NO_DB
- name: Integration tests
run: vendor/bin/phpunit tests/Integration
env:
DB_PORT: ${{ job.services.database.ports[3306] }}
DB_USERNAME: root

69
.github/workflows/docker.yaml vendored Normal file
View File

@ -0,0 +1,69 @@
name: Docker
on:
push:
branches:
- develop
- 1.0-develop
- release/v1.11.5
pull_request:
branches:
- develop
- 1.0-develop
release:
types:
- published
jobs:
push:
name: Push
runs-on: ubuntu-20.04
if: "!contains(github.ref, 'develop') || (!contains(github.event.head_commit.message, 'skip docker') && !contains(github.event.head_commit.message, 'docker skip'))"
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Docker metadata
id: docker_meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/nookure/nooktheme
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: ./Dockerfile
push: ${{ github.event_name != 'pull_request' }}
platforms: linux/amd64,linux/arm64
labels: ${{ steps.docker_meta.outputs.labels }}
tags: ${{ steps.docker_meta.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max

36
.github/workflows/lint.yaml vendored Normal file
View File

@ -0,0 +1,36 @@
name: Lint
on:
push:
branches:
- "develop"
- "1.0-develop"
pull_request:
branches:
- "develop"
- "1.0-develop"
jobs:
lint:
name: Lint
runs-on: ubuntu-20.04
steps:
- name: Code Checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.1"
extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip
tools: composer:v2
coverage: none
- name: Setup .env
run: cp .env.ci .env
- 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

89
.github/workflows/release.yaml vendored Normal file
View File

@ -0,0 +1,89 @@
name: Release
on:
push:
tags:
- "v*"
jobs:
release:
name: Release
runs-on: ubuntu-20.04
steps:
- name: Code checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16
cache: "yarn"
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Build
run: yarn build:production
- 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 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

31
.gitignore vendored
View File

@ -1,34 +1,37 @@
/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
release

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);

9
.prettierrc.json Normal file
View File

@ -0,0 +1,9 @@
{
"printWidth": 120,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": true,
"endOfLine": "lf"
}

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)

63
BUILDING.md Normal file
View File

@ -0,0 +1,63 @@
# Local Development
Pterodactyl is now powered by React, Typescript, and Tailwindcss using webpack at its core to generate compiled assets.
Release versions of Pterodactyl will include pre-compiled, minified, and hashed assets ready-to-go.
However, if you are interested in running custom themes or making modifications to the React files you'll need a build
system in place to generate these compiled assets. To get your environment setup you'll need at minimum:
* [Node.js](https://nodejs.org/en/) v14.x.x
* [Yarn](https://classic.yarnpkg.com/lang/en/) v1.x.x
* [Go](https://golang.org/) 1.17.x
### Install Dependencies
```bash
yarn install
```
The command above will download all of the dependencies necessary to get Pterodactyl assets building. After that, its as
simple as running the command below to generate assets while you're developing. Until you've run this command at least
once you'll likely see a 500 error on your Panel about a missing `manifest.json` file. This is generated by the commands
below.
```bash
# Build the compiled set of assets for development.
yarn run build
# Build the assets automatically as they are changed. This allows you to refresh
# the page and see the changes immediately.
yarn run watch
```
### Hot Module Reloading
For more advanced users, we also support 'Hot Module Reloading', allowing you to quickly see changes you're making
to the Vue template files without having to reload the page you're on. To Get started with this, you just need
to run the command below.
```bash
PUBLIC_PATH=http://192.168.1.1:8080 yarn run serve --host 192.168.1.1
```
There are two _very important_ parts of this command to take note of and change for your specific environment. The first
is the `--host` flag, which is required and should point to the machine where the `webpack-serve` server will be running.
The second is the `PUBLIC_PATH` environment variable which is the URL pointing to the HMR server and is appended to all of
the asset URLs used in Pterodactyl.
#### Development Environment
If you're using the [`pterodactyl/development`](https://github.com/pterodactyl/development) environments, which are
highly recommended, you can just run `yarn run serve` to run the HMR server, no additional configuration is necessary.
### Building for Production
Once you have your files squared away and ready for the live server, you'll be needing to generate compiled, minified,
and hashed assets to push live. To do so, run the command below:
```bash
yarn run build:production
```
This will generate a production JS bundle and associated assets, all located in `public/assets/` which will need to
be uploaded to your server or CDN for clients to use.
### Running Wings
To run `wings` in development all you need to do is set up the configuration file as normal when adding a new node, and
then you can build and run a local version of Wings by executing `make debug` in the Wings code directory. This must
be run on a Linux VM of some sort, you cannot run this locally on macOS or Windows.

View File

@ -3,6 +3,702 @@ 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.7
### Added
* Java 21 to Minecraft eggs
### Changed
* Updated Minecraft EULA link
### Fixed
* Fixed backups not ever being marked as completed (#5088)
* Fixed `.7z` files not being detected as a compressed file (#5016)
## v1.11.6
### Changed
* Better node ownership checks for internal backup endpoints
* Improved validation rules on `docker_image` fields to prevent invalid inputs
### Fixed
* Multiple XSS vulnerabilities in the admin area ([GHSA-384w-wffr-x63q](https://github.com/pterodactyl/panel/security/advisories/GHSA-384w-wffr-x63q))
## v1.11.5
### Fixed
* Rust egg using the wrong Docker image, breaking Rust modding frameworks.
## v1.11.4
### Added
* Added support for the `server.queryport` option on the Rust egg.
* Added support for the Carbon modding framework to the Rust egg.
### Changed
* Upgraded to Laravel 10.
* Sensitive data is no longer shown in the CopyOnClick toast notification.
### Fixed
* Allow SVGs to be edited in the server's file manager.
* Properly validate the request body when creating a backup.
* Fixed issue with schedules running at the wrong time when the panel utilized a timezone with non-hour offsets (such as `Australia/Darwin`).
* Fixes the log directory when running the Panel in a container.
* Fixes the permission name used to check if a user has permission to read files/folders.
* Fixes the ability to unset a server's description through the client API.
* Fixed the MassActionBar on the server's file manager blocking elements below it, preventing them from being interacted with.
## v1.11.3
### Changed
* When updating a server's description through the client API, if no value is specified, the description will now remain unchanged.
* When installing the Panel for the first time, the queue driver will now all default to `redis` instead of `sync`.
### Fixed
* `php artisan p:environment:mail` not correctly setting the right variable for `MAIL_FROM_ADDRESS`.
* Fixed the conflict state rendering on the UI for a server showing `reinstall_failed` as `restoring_backup`.
* Fixed the unknown column `uuid` error when jobs fail, causing them not to get stored correctly.
* Fixed the server task endpoints in the client API not allowing `sequence_id` and `continue_on_failure` to be set.
## v1.11.2
### Changed
* Telemetry no longer sends a map of Egg and Nest UUIDs to the number of servers using them.
* Increased the timeout for the decompress files endpoint in the client API from 15 seconds to 15 minutes.
### Fixed
* Fixed Panel Docker image having a `v` prefix in the version displayed in the admin area.
* Fixed emails using the wrong queue name, causing them to not be sent.
* Fixed the settings keys used for configuring SMTP settings, causing settings to not save properly.
* Fixed the `MAIL_EHLO_DOMAIN` environment variable not being properly backwards compatible with the old `SERVER_NAME` variable.
## v1.11.1
### Fixed
* Fixed Panel Docker image showing `canary` as it's version.
## v1.11.0
### Changed (since 1.10.4)
* Changed minimum PHP version requirement from `7.4` to `8.0`.
* Upgraded from Laravel 8 to Laravel 9.
* This release requires Wings v1.11.x in order for Server Transfers to work.
* `MB` byte suffixes are now displayed as `MiB` to more accurately reflect the actual value.
* Server re-installation failures are tracked independently of the initial installation process.
### Fixed (since 1.10.4)
* Node maintenance mode now properly blocks access to servers.
* Fixed the length validation on the Minecraft Forge egg.
* Fixed the password in the JDBC string not being properly URL encoded.
* Fixed an issue where Wings would throw a validation error while attempting to upload activity logs.
* Properly handle a missing `Content-Length` header in the response from the daemon.
* Ensure activity log properties are always returned as an object instead of an empty array.
### Added (since 1.10.4)
* Added the `server:settings.description` activity log event for when a server description is changed.
* Added the ability to cancel file uploads in the file manager for a server.
* Added a telemetry service to collect anonymous metrics from the panel, this feature is *enabled* by default and can be toggled using the `PTERODACTYL_TELEMETRY_ENABLED` environment variable.
## v1.11.0-rc.2
### Changed
* `MB` byte suffixes are now displayed as `MiB` to more accurately reflect the actual value.
* Server re-installation failures are tracked independently of the initial installation process.
### Fixed
* Properly handle a missing `Content-Length` header in the response from the daemon.
* Ensure activity log properties are always returned as an object instead of an empty array.
### Added
* Added the `server:settings.description` activity log event for when a server description is changed.
* Added the ability to cancel file uploads in the file manager for a server.
* Added a telemetry service to collect anonymous metrics from the panel, this feature is disabled by default and can be toggled using the `PTERODACTYL_TELEMETRY_ENABLED` environment variable.
## v1.11.0-rc.1
### Changed
* Changed minimum PHP version requirement from `7.4` to `8.0`.
* Upgraded from Laravel 8 to Laravel 9.
* This release requires Wings v1.11.x in order for Server Transfers to work.
### Fixed
* Node maintenance mode now properly blocks access to servers.
* Fixed the length validation on the Minecraft Forge egg.
* Fixed the password in the JDBC string not being properly URL encoded.
* Fixed an issue where Wings would throw a validation error while attempting to upload activity logs.
## v1.10.4
### Fixed
* Fixed an issue where subusers could be given permissions that are not actually registered or used.
* Fixed an issue where node FQDNs could not just be IP addresses.
### Changed
* Change maximum number of API keys per user from `10` to `25`.
* Change byte unit prefix from `B` to `iB` to better reflect our usage of base 2 (multiples of 1024).
## v1.10.3
### Fixed
* S3 Backup driver now supports Cloudflare R2.
* Node FQDNs can now be used with AAAA records with no A records present.
* Server transfers can no longer be initiated if the server is being installed, transferred, or restoring a backup.
* Fixed an issue relating to the use of arrays in the `config_files` field with eggs.
* Fixed `oom_disabled` not being mapped in the Application API when creating a new server.
### Added
* File manager now supports selecting multiple files for upload (when using the upload button).
* Added a configuration option for specifying the S3 storage class for backups.
### Changed
* Servers will now show the current uptime when the server is starting rather than only showing when the server is marked as online.
## v1.10.2
### Fixed
* Fixes a rendering issue with egg descriptions in the admin area
* Fixes the page title on the SSH Keys page
### Changed
* Additional validation rules will now show a toggle switch rather than an input when editing server variables
* The eggs endpoint will now always return an empty JSON object for the `config_files` field, even if the field is completely empty
### Added
* Adds a `Force Outgoing IP` option for eggs that can be used to ensure servers making outgoing connections use their allocation IP rather than the node's primary ip
* Adds options to configure sending of email (re)install notifications
* Add an option to configure the part size for backups uploaded to S3
## v1.10.1
### Fixed
* Fixes a surprise `clock()` function that was used for debugging and should not have made it into the release. This was causing activity events to not properly sync between the Panel and Wings.
## v1.10.0
### Fixed
* Fixes improper cache key naming on the frontend causing server activity logs to be duplicated across server page views.
* Fixes overflow issues on dialogs when the internal content is too long.
* Fixes spinner overlay on console improperly taking up the entire page making it impossible to use navigation controls.
* Fixes 2FA QR code background being too dark for some phones to properly scan.
* File manager now properly displays an error message if a user attempts to upload a folder rather than files.
* Fixes the "Create Directory" dialog persisting the previously entered value when it is re-opened.
### Changed
* IP addresses in activity logs are now always displayed to administrators, regardless of if they own the server or not.
* Scroll down indicator on the console has been changed to a down arrow to be clearer.
* Docker builds have been updated to use `PHP 8.1`.
* Recaptcha validation domain is now configurable using the `RECAPTCHA_DOMAIN` environment variable.
* Drag and drop overlay on the file manager has been tweaked to be slightly more consistent with the frontend style and be a little easier to read.
### Added
* Adds support for the `user_uuid` claim on all generated JWTs which allows Wings to properly identify the user performing each action.
* Adds support for recieving external activity log events from Wings instances (power state, commands, SFTP, and uploads).
* Adds support for tracking failed password-based SFTP logins.
* Server name and description are now passed along to Wings making them available in egg variables for parsing and including.
* Adds support for displaying all active file uploads in the file manager.
## v1.9.2
### Fixed
* Fixes rouding in sidebar of CPU usage graph that was causing an excessive number of zeros to be rendered.
* Fixes the Java Version selector modal having the wrong default value selected initially.
* Fixes console rendering in Safari that was causing the console to resize excessively and graphs to overlay content.
* Fixes missing "Starting"/"Stopping" status display in the server uptime block.
* Fixes incorrect formatting of activity log when viewing certain file actions.
### Changed
* Updated the UI for the two-step authorization setup on accounts to use new Dialog UI and provide better clarity to new users.
### Added
* Added missing `<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)
### Fixed
* **[Security]** Fixes XSS in the admin area's server owner selection.
## v0.7.18 (Derelict Dermodactylus)
### Fixed
* **[Security]** Re-addressed missed endpoint that would not properly limit a user account to 5 API keys.
* **[Security]** Addresses a Client API vulnerability that would allow a user to list all servers on the system ([`GHSA-6888-7f3w-92jx`](https://github.com/pterodactyl/panel/security/advisories/GHSA-6888-7f3w-92jx))
## v0.7.17 (Derelict Dermodactylus) ## v0.7.17 (Derelict Dermodactylus)
### Fixed ### Fixed
* Limited accounts to 5 API keys at a time. * Limited accounts to 5 API keys at a time.

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.

View File

@ -1,26 +1,41 @@
FROM alpine:3.8 # Stage 0:
# Build the assets that are needed for the frontend. This build stage is then discarded
# since we won't need NodeJS anymore in the future. This Docker image ships a final production
# level distribution of Pterodactyl.
FROM --platform=$TARGETOS/$TARGETARCH mhart/alpine-node:14
WORKDIR /app 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 . ./ COPY . ./
RUN yarn install --frozen-lockfile \
&& yarn run build:production
RUN cp .env.example .env \ # Stage 1:
&& composer install --no-dev --optimize-autoloader \ # Build the actual container with all of the needed PHP dependencies that will run the application.
&& rm .env \ FROM --platform=$TARGETOS/$TARGETARCH php:8.1-fpm-alpine
&& chown -R nginx:nginx . && chmod -R 777 storage/* bootstrap/cache WORKDIR /app
COPY . ./
COPY --from=0 /app/public/assets ./public/assets
RUN apk add --no-cache --update ca-certificates dcron curl git supervisor tar unzip nginx libpng-dev libxml2-dev libzip-dev certbot certbot-nginx \
&& docker-php-ext-configure zip \
&& docker-php-ext-install bcmath gd pdo_mysql zip \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& cp .env.example .env \
&& mkdir -p bootstrap/cache/ storage/logs storage/framework/sessions storage/framework/views storage/framework/cache \
&& chmod 777 -R bootstrap storage \
&& composer install --no-dev --optimize-autoloader \
&& rm -rf .env bootstrap/cache/*.php \
&& mkdir -p /app/storage/logs/ \
&& chown -R nginx:nginx .
RUN cp .dev/docker/default.conf /etc/nginx/conf.d/default.conf \ RUN rm /usr/local/etc/php-fpm.conf \
&& cp .dev/docker/www.conf /etc/php7/php-fpm.d/www.conf \ && echo "* * * * * /usr/local/bin/php /app/artisan schedule:run >> /dev/null 2>&1" >> /var/spool/cron/crontabs/root \
&& cat .dev/docker/supervisord.conf > /etc/supervisord.conf \ && echo "0 23 * * * certbot renew --nginx --quiet" >> /var/spool/cron/crontabs/root \
&& 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 \
&& sed -i s/ssl_session_cache/#ssl_session_cache/g /etc/nginx/nginx.conf \ && mkdir -p /var/run/php /var/run/nginx
&& mkdir -p /var/run/php /var/run/nginx
COPY .github/docker/default.conf /etc/nginx/http.d/default.conf
COPY .github/docker/www.conf /usr/local/etc/php-fpm.conf
COPY .github/docker/supervisord.conf /etc/supervisord.conf
EXPOSE 80 443 EXPOSE 80 443
ENTRYPOINT [ "/bin/ash", ".github/docker/entrypoint.sh" ]
ENTRYPOINT ["/bin/ash", ".dev/docker/entrypoint.sh"]
CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ] CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ]

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

674
NookLicense.md Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

174
README.md
View File

@ -1,75 +1,135 @@
[![Logo Image](https://cdn.pterodactyl.io/logos/new/pterodactyl_logo.png)](https://pterodactyl.io) # Nook Theme
NookTheme is a free and open source [Pterodactyl theme](https://pterodactyl.io) designed to be simple, clean, and modern.
[![Build status](https://img.shields.io/travis/pterodactyl/panel/develop.svg?style=flat-square)](https://travis-ci.org/pterodactyl/panel) ![Image](https://i.imgur.com/AFjHGBr.png)
[![StyleCI](https://styleci.io/repos/47508644/shield?branch=develop)](https://styleci.io/repos/47508644)
[![Codecov](https://img.shields.io/codecov/c/github/pterodactyl/panel/develop.svg?style=flat-square)](https://codecov.io/gh/Pterodactyl/Panel)
[![Discord](https://img.shields.io/discord/122900397965705216.svg?style=flat-square&label=Discord)](https://pterodactyl.io/discord)
# Pterodactyl Panel <details>
<summary>View Screnshots</summary>
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. ![Image](https://i.imgur.com/CNxF3iT.png)
What more are you waiting for? Make game servers a first class citizen on your platform today. ![Image](https://i.imgur.com/IflRtEX.png)
![Image](https://i.imgur.com/vNLK5jP.png)
![Image](https://i.imgur.com/dnxV2CS.png)
</details>
![Image](https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey.png) ## Installation
## Support & Documentation This will update your panel to the latest version of NookTheme panel is based. <br>
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). You can see the version in the current branch name.
### Enter Maintenance Mode
### Supported Games Whenever you are performing an update you should be sure to place your Panel into maintenance mode. This will prevent
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. users from encountering unexpected errors and ensure everything can be updated before users encounter
potentially new features.
Some of our core supported games include: ```bash
cd /var/www/pterodactyl
* Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more php artisan down
* Rust ```
* Terraria
* Teamspeak
* Mumble
* Team Fortress 2
* Counter Strike: Global Offensive
* Garry's Mod
* ARK: Survival Evolved
In addition to our standard nest of supported games, our community is constantly pushing the limits of this software and there are plenty more games available provided by the community. Some of these games include: ### Download the theme
* Factorio The first step in the update process is to download the new panel files from GitHub. The command below will download
* San Andreas: MP the release archive for the most recent version of Pterodactyl, save it in the current directory and will automatically
* Pocketmine MP unpack the archive into your current folder.
* Squad
* FiveM
* Xonotic
* Discord ATLBot
## Credits ```bash
This software would not be possible without the work of other open-source authors who provide tools such as: curl -L https://github.com/Nookure/NookTheme/releases/latest/download/panel.tar.gz | tar -xzv
```
[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), Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid
[Bootstrap](http://getbootstrap.com), [Bootstrap Notify](http://bootstrap-notify.remabledesigns.com), [Chart.js](http://www.chartjs.org), [FontAwesome](http://fontawesome.io), any webserver related errors.
[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. ```bash
chmod -R 755 storage/* bootstrap/cache
```
### Update Dependencies
After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,
simply run the commands below and follow any prompts.
```bash
composer install --no-dev --optimize-autoloader
```
### Clear Compiled Template Cache
You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for
users.
```bash
php artisan view:clear
php artisan config:clear
```
### Database Updates
You'll also need to update your database schema for the newest version of Pterodactyl. Running the command below
will update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just
remember, _never edit core eggs we ship_! They will be overwritten by this update process.
```bash
php artisan migrate --seed --force
```
### Set Permissions
The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this
is `www-data` but can vary from system to system &mdash; sometimes being `nginx`, `caddy`, `apache`, or even `nobody`.
```bash
# If using NGINX or Apache (not on CentOS):
chown -R www-data:www-data /var/www/pterodactyl/*
# If using NGINX on CentOS:
chown -R nginx:nginx /var/www/pterodactyl/*
# If using Apache on CentOS
chown -R apache:apache /var/www/pterodactyl/*
```
### Restarting Queue Workers
After _every_ update you should restart the queue worker to ensure that the new code is loaded in and used.
```bash
php artisan queue:restart
```
### Exit Maintenance Mode
Now that everything has been updated you need to exit maintenance mode so that the Panel can resume accepting
connections.
```bash
php artisan up
```
## 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.nookure.com/)
## Star History
<a href="https://star-history.com/#Nookure/NookTheme&Timeline">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Nookure/NookTheme&type=Timeline&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Nookure/NookTheme&type=Timeline" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Nookure/NookTheme&type=Timeline" />
</picture>
</a>
## 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 - 2023 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 > Nookure is not affiliated with Pterodactyl® Panel or its contributors.
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR Pterodactyl code released under the [MIT License](./LICENSE.md).
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE NookTheme code edits released under the [GNU GPLv3 License](./NookLicense.md).
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.
```

19
SECURITY.md Normal file
View File

@ -0,0 +1,19 @@
# 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.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,16 +96,16 @@ 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'],
'database' => $this->variables['DB_DATABASE'], 'database' => $this->variables['DB_DATABASE'],
'username' => $this->variables['DB_USERNAME'], 'username' => $this->variables['DB_USERNAME'],
'password' => $this->variables['DB_PASSWORD'], 'password' => $this->variables['DB_PASSWORD'],
'charset' => 'utf8mb4', 'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci', 'collation' => 'utf8mb4_unicode_ci',
'strict' => true, 'strict' => true,
]); ]);
$this->database->connection('_pterodactyl_command_test')->getPdo(); $this->database->connection('_pterodactyl_command_test')->getPdo();

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 $versionService)
{ {
parent::__construct(); parent::__construct();
$this->config = $config;
$this->versionService = $versionService;
} }
/** /**
@ -65,7 +36,7 @@ class InfoCommand extends Command
$this->output->title('Application Configuration'); $this->output->title('Application Configuration');
$this->table([], [ $this->table([], [
['Environment', $this->formatText($this->config->get('app.env'), $this->config->get('app.env') === 'production' ?: 'bg=red')], ['Environment', $this->formatText($this->config->get('app.env'), $this->config->get('app.env') === 'production' ?: 'bg=red')],
['Debug Mode', $this->formatText($this->config->get('app.debug') ? 'Yes' : 'No', ! $this->config->get('app.debug') ?: 'bg=red')], ['Debug Mode', $this->formatText($this->config->get('app.debug') ? 'Yes' : 'No', !$this->config->get('app.debug') ?: 'bg=red')],
['Installation URL', $this->config->get('app.url')], ['Installation URL', $this->config->get('app.url')],
['Installation Directory', base_path()], ['Installation Directory', base_path()],
['Timezone', $this->config->get('app.timezone')], ['Timezone', $this->config->get('app.timezone')],
@ -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

@ -12,13 +12,13 @@ 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() ?? 0;
}
}

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) { $bar->clear();
$this->processScheduleService->handle($schedule); $this->processSchedule($schedule);
if ($this->input->isInteractive()) {
$bar->clear();
$this->line(trans('command/messages.schedule.output_line', [
'schedule' => $schedule->name,
'hash' => $schedule->hashid,
]));
}
}
$bar->advance(); $bar->advance();
$bar->display(); $bar->display();
}); }
$this->line(''); $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', [
'schedule' => $schedule->name,
'hash' => $schedule->hashid,
]));
} catch (\Throwable|\Exception $exception) {
Log::error($exception, ['schedule_id' => $schedule->id]);
$this->error("An error was encountered while processing Schedule #$schedule->id: " . $exception->getMessage());
}
} }
} }

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,74 +1,44 @@
<?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()) {
@ -78,22 +48,24 @@ class DeleteUserCommand extends Command
} }
$this->table(['User ID', 'Email', 'Name'], $tableValues); $this->table(['User ID', 'Email', 'Name'], $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();
} }
} else { } else {
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();
} }
if ($this->confirm(trans('command/messages.user.confirm_delete')) || ! $this->input->isInteractive()) { if ($this->confirm(trans('command/messages.user.confirm_delete')) || !$this->input->isInteractive()) {
$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;
} }
/** /**
@ -55,7 +33,7 @@ class MakeUserCommand extends Command
$name_first = $this->option('name-first') ?? $this->ask(trans('command/messages.user.ask_name_first')); $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')); $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'));
$this->line(trans('command/messages.user.ask_password_tip')); $this->line(trans('command/messages.user.ask_password_tip'));
$password = $this->secret(trans('command/messages.user.ask_password')); $password = $this->secret(trans('command/messages.user.ask_password'));

View File

@ -0,0 +1,33 @@
<?php
namespace Pterodactyl\Console\Commands;
use Illuminate\Console\Command;
class Love extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'n:love';
/**
* The console command description.
*
* @var string
*/
protected $description = '<3';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$this->info('Ari <3');
return Command::SUCCESS;
}
}

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;

View File

@ -2,74 +2,37 @@
namespace Pterodactyl\Contracts\Repository; namespace Pterodactyl\Contracts\Repository;
use Generator;
use Pterodactyl\Models\Node; use Pterodactyl\Models\Node;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Pterodactyl\Contracts\Repository\Attributes\SearchableInterface;
interface NodeRepositoryInterface extends RepositoryInterface, SearchableInterface interface NodeRepositoryInterface extends RepositoryInterface
{ {
const THRESHOLD_PERCENTAGE_LOW = 75; public const THRESHOLD_PERCENTAGE_LOW = 75;
const THRESHOLD_PERCENTAGE_MEDIUM = 90; public const THRESHOLD_PERCENTAGE_MEDIUM = 90;
/** /**
* Return the usage stats for a single node. * Return the usage stats for a single node.
*
* @param \Pterodactyl\Models\Node $node
* @return array
*/ */
public function getUsageStats(Node $node): array; public function getUsageStats(Node $node): array;
/** /**
* Return the usage stats for a single node. * Return the usage stats for a single node.
*
* @param \Pterodactyl\Models\Node $node
* @return array
*/ */
public function getUsageStatsRaw(Node $node): array; public function getUsageStatsRaw(Node $node): array;
/**
* Return all available nodes with a searchable interface.
*
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/
public function getNodeListingData(): LengthAwarePaginator;
/** /**
* Return a single node with location and server information. * Return a single node with location and server information.
*
* @param \Pterodactyl\Models\Node $node
* @param bool $refresh
* @return \Pterodactyl\Models\Node
*/ */
public function loadLocationAndServerCount(Node $node, bool $refresh = false): Node; public function loadLocationAndServerCount(Node $node, bool $refresh = false): Node;
/** /**
* Attach a paginated set of allocations to a node mode including * Attach a paginated set of allocations to a node mode including
* any servers that are also attached to those allocations. * any servers that are also attached to those allocations.
*
* @param \Pterodactyl\Models\Node $node
* @param bool $refresh
* @return \Pterodactyl\Models\Node
*/ */
public function loadNodeAllocations(Node $node, bool $refresh = false): Node; public function loadNodeAllocations(Node $node, bool $refresh = false): Node;
/** /**
* Return a collection of nodes for all locations to use in server creation UI. * Return a collection of nodes for all locations to use in server creation UI.
*
* @return \Illuminate\Support\Collection
*/ */
public function getNodesForServerCreation(): Collection; public function getNodesForServerCreation(): Collection;
/**
* Return the IDs of all nodes that exist in the provided locations and have the space
* available to support the additional disk and memory provided.
*
* @param array $locations
* @param int $disk
* @param int $memory
* @return \Generator
*/
public function getNodesWithResourceUse(array $locations, int $disk, int $memory): Generator;
} }

View File

@ -1,26 +0,0 @@
<?php
namespace Pterodactyl\Contracts\Repository;
use Pterodactyl\Models\Pack;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Pterodactyl\Contracts\Repository\Attributes\SearchableInterface;
interface PackRepositoryInterface extends RepositoryInterface, SearchableInterface
{
/**
* Return a pack with the associated server models attached to it.
*
* @param \Pterodactyl\Models\Pack $pack
* @param bool $refresh
* @return \Pterodactyl\Models\Pack
*/
public function loadServerData(Pack $pack, bool $refresh = false): Pack;
/**
* Return a paginated listing of packs with their associated egg and server count.
*
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/
public function paginateWithEggAndServerCount(): LengthAwarePaginator;
}

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;

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