Dane Everitt
f85509a0c7
Support a custom tmp directory location
2022-02-13 11:59:53 -05:00
Dane Everitt
5d1d3cc9e6
Fix panic conditions
2022-02-05 12:11:00 -05:00
Dane Everitt
9f985ae044
Check for error before prefix; fixes abandoned routine; closes pterodactyl/panel#3911
...
Due to the order of the previous logic in ScanReader, an error not caused by EOF would effectively get ignored since an error will always be returned with `isPrefix` equal to false, thus triggering the first break, and error checking is not performed beyond that point.
Thus, canceling an installation process for a server while this process was running would hang the routine and cause the loop to run endlessly, even with a canceled context.
2022-02-05 11:56:17 -05:00
Dane Everitt
879dcd8df5
Don't trigger a panic condition decoding event stats; closes pterodactyl/panel#3941
2022-02-05 11:06:11 -05:00
Dane Everitt
72476c61ec
Simplify the event bus system; address pterodactyl/panel#3903
...
If my debugging is correct, this should address pterodactyl/panel#3903 in its entirety by addressing a few areas where it was possible for a channel to lock up and cause everything to block
2022-02-02 21:03:53 -05:00
Dane Everitt
0f2e9fcc0b
Move the sink pool to be a shared tool
2022-02-02 19:16:34 -05:00
Dane Everitt
7051feee01
Add additional debug points to server start process
2022-01-31 19:30:07 -05:00
Dane Everitt
cd67e5fdb9
Fix logic for context based environment stopping
...
Uses dual contexts to handle stopping using a timed context, and also terminating the entire process loop if the parent context gets canceled.
2022-01-31 19:09:08 -05:00
Dane Everitt
84bbefdadc
Pass a context through to the start/stop/terminate actions
2022-01-31 18:40:15 -05:00
Dane Everitt
2b2b5200eb
Rewrite console throttling logic; drop complex timer usage and use a very simple throttle
...
This also removes server process termination logic when a server is breaching the output limits. It simply continues to efficiently throttle the console output.
2022-01-30 19:31:04 -05:00
Dane Everitt
c4ee82c4dc
Code cleanup, providing better commentary to decisions
2022-01-30 12:56:25 -05:00
Dane Everitt
0ec0fffa4d
Handle future scenarios where we forgot to add a listener
2022-01-30 11:58:53 -05:00
Dane Everitt
57daf0889a
Cleanup logic for updating stats to avoid calling mutex outside of file
2022-01-30 11:55:59 -05:00
Dane Everitt
d7c7155802
Make the powerlocker logic a little more idiomatic
2022-01-30 11:46:27 -05:00
Dane Everitt
11ae5e69ed
Improve performance of console output watcher; work directly with bytes rather than string conversions
2022-01-30 11:28:06 -05:00
Dane Everitt
fab88a380e
Use buffered channels and ring-buffer logic when processing console data
...
This change fixes pterodactyl/panel#3921 by implementing logic to drop the oldest message in a channel and push the newest message onto the channel when the channel buffer is full.
This is distinctly different than the previous implementation which just dropped the newest messages, leading to confusing behavior on the client side when a large amount of data was sent over the connection.
Up to 10ms per channel is allowed for blocking before falling back to the drop logic.
2022-01-30 10:55:45 -05:00
Dane Everitt
34c0db9dff
Replace encoding/json with goccy/go-json for cpu and memory usage improvement
...
This new package has significant better resource usage, and we do a _lot_ of JSON parsing in this application, so any amount of improvement becomes significant
2022-01-23 15:17:40 -05:00
Dane Everitt
4c8f5c21a3
Improve power lock logic ( #118 )
2022-01-23 09:49:35 -08:00
Dane Everitt
c52db4eec0
Add test coverage for sinks; prevent panic on nil channels
2022-01-23 10:41:12 -05:00
Dane Everitt
a4904365c9
Sink pool cleanup and organization; better future support when we add more sinks
2022-01-23 09:57:25 -05:00
Matthew Penner
4ba5fe2866
events: don't explode when destroying a bus
...
Only attempt to close channels once, rather than per topic
they are subscribed to.
2022-01-20 09:48:18 -07:00
Matthew Penner
649dc9663e
Server Event Optimizations ( #116 )
2022-01-17 20:23:29 -07:00
Matthew Penner
04b9ef69a1
run gofumpt
2021-11-15 10:37:56 -07:00
Matthew Penner
d8df353ce8
replace deprecated ioutil function calls
2021-11-15 10:24:52 -07:00
Dane Everitt
023d7ec1ec
Close websocket connections and allow the client to re-connect on send errors; ref pterodactyl/panel#3596
2021-10-24 16:14:00 -07:00
Dane Everitt
d9ebf693e0
Make uptime available in the stat output for a container
2021-10-03 12:59:03 -07:00
Matthew Penner
e79694d6d2
config: add ability to enable/disable server crash detection
...
fixes https://github.com/pterodactyl/panel/issues/3617
Co-authored-by: Alex <admin@softwarenoob.com>
2021-09-13 15:04:28 -06:00
Dane Everitt
09e1ba6f34
Use the request context for cancelation, not a background context
...
This also fixes an improperly written server deletion listener to look at the correct context cancelation.
Theoretically this should help address the issues in pterodactyl/panel#3596 but I'm not really sure how that happens, and theres no steps for reproduction.
2021-09-12 11:14:00 -07:00
Dane Everitt
ee91224eb6
add context timeouts to avoid hanging wings boot process if docker has a hiccup; closes pterodactyl/panel#3358
2021-09-11 14:13:19 -07:00
Matthew Penner
5cd43dd4c9
archive: keep timestamps when extracting
2021-09-01 09:54:41 -06:00
Dane Everitt
3b5e042ccc
Simplify logic when creating a new installer; no longer requires an entire server object be passed.
2021-08-29 14:08:01 -07:00
Dane Everitt
5764894a5e
Cleanup server sync logic to work in a single consistent format ( #101 )
...
* Cleanup server sync logic to work in a single consistent format
Previously we had a mess of a function trying to update server details from a patch request. This change just centralizes everything to a single Sync() call when a server needs to update itself.
We can also eventually update the panel (in V2) to not hit the patch endpoint, rather it can just be a generic endpoint that is hit after a server is updated on the Panel that tells Wings to re-sync the data to get the environment changes on the fly.
The changes I made to the patch function currently act like that, with a slightly fragile 2 second wait to let the panel persist the changes since I don't want this to be a breaking change on that end.
* Remove legacy server patch endpoint; replace with simpler sync endpoint
2021-08-29 13:37:18 -07:00
Dane Everitt
c279d28c5d
Correctly set the egg values to avoid allowing blocked files to be edited; closes pterodactyl/panel#3536
2021-08-15 17:53:54 -07:00
Dane Everitt
f7c8571f46
Fix race condition when setting app name in console output
2021-08-15 16:46:55 -07:00
Matthew Penner
25f3cb60cb
server: actually use StartOnCompletion and CrashDetectionEnabled
2021-08-03 16:26:25 -06:00
Dane Everitt
a33ac304ca
Perhaps don't break _everything_ on people.
2021-08-02 20:02:27 -07:00
Matthew Penner
3c54c1f840
break everything
...
- upgrade dependencies
- run gofmt and goimports to organize code
- fix typos
- other small tweaks
2021-08-02 15:07:00 -06:00
Matthew Penner
31ff3f8b56
server(fs): keep file mode when extracting archive
2021-07-15 15:37:38 -06:00
Matthew Penner
29b2d6826a
archive: fix socket files aborting backups
2021-07-12 10:17:56 -06:00
Matthew Penner
73570c7144
installer: support 'start_on_completion' ( #96 )
2021-07-04 15:08:05 -07:00
kaziu687
c0a487c47e
Fix environment variables with the same prefix being skipped unintentionally ( #98 )
...
If you have two env variables (for example ONE_VARIABLE and ONE_VARIABLE_NAME) ONE_VARIABLE_NAME has prefix ONE_VARIABLE and will be skipped.
Co-authored-by: Jakob <dev@schrej.net>
2021-07-04 15:07:46 -07:00
Dane Everitt
8336f6ff29
Apply container limits to install containers, defaulting to minimums if the server's resources are set too low
2021-06-20 17:21:51 -07:00
Dane Everitt
f74a74cd5e
Merge pull request #93 from JulienTant/develop
...
Add decompress tests
2021-06-05 08:46:14 -07:00
Dane Everitt
49dd1f7bde
Better support for retrying failed requests with the API
...
Also implements more logic error returns from the Get/Post functions in the client, rather than making the developer call r.Error() on responses.
2021-05-02 15:41:02 -07:00
Dane Everitt
ddfd6d9cce
Modify backup process to utilize contexts and exponential backoffs
...
If a request to upload a file part to S3 fails for any 5xx reason it will begin using an exponential backoff to keep re-trying the upload until we've reached a minute of trying to access the endpoint.
This should resolve temporary resolution issues with URLs and certain S3 compatiable systems such as B2 that sometimes return a 5xx error and just need a retry to be successful.
Also supports using the server context to ensure backups are terminated when a server is deleted, and removes the http call without a timeout, replacing it with a 2 hour timeout to account for connections as slow as 10Mbps on a huge file upload.
2021-05-02 12:28:36 -07:00
Julien Tant
35b2c420ec
add decompress tests
2021-04-25 16:44:54 -07:00
Dane Everitt
daaef5044e
Correctly determine name for archive files when decompressing; closes pterodactyl/panel#3296
2021-04-25 15:36:00 -07:00
Dane Everitt
0676a82a21
Add better error handling for filesystem
2021-04-17 13:29:18 -07:00
Dane Everitt
4b244e96fb
Fix .rar file decompression; closes pterodactyl/panel#3267
2021-04-17 13:13:37 -07:00
Dane Everitt
f57c24002e
More API response fixing
2021-04-04 10:20:27 -07:00
Dane Everitt
2e0496c1f9
Add note about handling of UTF-8 sequences in properties files.
2021-04-03 14:02:37 -07:00
Dane Everitt
76b7967fef
Merge pull request #88 from Antony1060/develop
...
Added app name
2021-04-03 11:13:29 -07:00
Dane Everitt
1b1eaa3171
Avoid expensive copies of the config for every line output
2021-04-03 11:11:36 -07:00
Dane Everitt
b448310a33
Correctly return servers installed on wings and their resource usage
2021-04-03 11:08:26 -07:00
antony1060
0c17e240f4
Added app name
2021-03-24 10:26:03 +01:00
Matthew Penner
471886dd34
internally mark if a server is restoring to restrict actions
2021-03-12 16:19:35 -07:00
Matthew Penner
0e3778ac47
transfers: use backup archiver
2021-03-07 11:04:15 -07:00
Dane Everitt
fb2dc39a47
Remove some forgotten debug
2021-03-03 21:00:58 -08:00
Dane Everitt
0919fb2da6
Improve error handling and reporting for server installation & process boot
2021-03-03 20:56:18 -08:00
Dane Everitt
2eb721bbe7
Merge branch 'dane/api-cleanup' into develop
2021-02-23 21:25:10 -08:00
Matthew Penner
5c56ddf5d6
fs: only mkdir and chown if not exists
2021-02-10 13:58:47 -07:00
Matthew Penner
683c766d0f
fs: fix potential panic when chowning a file
2021-02-05 13:30:02 -07:00
Dane Everitt
1da415c177
Revert "Don't tempt people with this public interface"
...
This reverts commit e3b0b91912
.
2021-02-01 21:43:10 -08:00
Dane Everitt
e3b0b91912
Don't tempt people with this public interface
2021-02-01 21:33:03 -08:00
Dane Everitt
bfff094216
Get wings booting properly
2021-02-01 21:32:34 -08:00
Dane Everitt
98c68142cd
Remove all of the remaining API logic and port it all to the remote.Client type
2021-02-01 21:28:46 -08:00
Dane Everitt
62cbe5e135
Migrate SFTP endpoints
2021-02-01 20:59:17 -08:00
Dane Everitt
6775c17324
Nuke more API code and begin consolidation process
2021-02-01 20:50:23 -08:00
Dane Everitt
1393937904
Fix race condition and flawed logic mis-querying panel for servers; closes pterodactyl/panel#3059
2021-02-01 20:26:15 -08:00
Matthew Penner
de9b413bc2
Call cancel function for context to not leak resources
2021-02-01 20:09:24 -07:00
Dane Everitt
ba6cec9615
Merge branch 'dane/backup-restore' into develop
2021-01-30 18:51:35 -08:00
Dane Everitt
4bd18f7dd8
Send restoration status information to the console
2021-01-30 18:49:07 -08:00
Dane Everitt
adc0732af3
Better error handling and logging for restorations
2021-01-30 18:43:35 -08:00
Dane Everitt
df721f45f8
Reset the whole build block to avoid merge issues with 0 values
2021-01-27 21:41:13 -08:00
Dane Everitt
4411493006
Merge branch 'develop' into dane/backup-restore
2021-01-25 20:32:32 -08:00
Dane Everitt
31757a68a9
Fix race condition
2021-01-25 20:29:34 -08:00
Dane Everitt
f3a6ee7a45
re-refactor code
2021-01-25 20:28:24 -08:00
Dane Everitt
ab86fb703a
Merge branch 'develop' into schrej/refactor
2021-01-25 19:31:16 -08:00
Dane Everitt
981071cda8
Merge branch 'develop' into dane/backup-restore
2021-01-25 19:17:14 -08:00
Dane Everitt
93506994a5
Ensure the root directory for a server is always create when booting wings
2021-01-23 10:45:29 -08:00
Jakob Schrettenbrunner
82f70c2755
derp: rename panelapi to remote
2021-01-22 22:38:11 +00:00
Dane Everitt
5d070cbdc5
Handle edge case where a user triggers an install when the server has no data directory
2021-01-21 20:58:52 -08:00
Dane Everitt
3f84ee694b
Get backups restoring kinda
2021-01-20 20:03:14 -08:00
Dane Everitt
63dac51692
Include a better stack here
2021-01-18 21:22:37 -08:00
Dane Everitt
6ef0bd7496
Get general concept for backup resotration using a unified interface implemented
2021-01-18 21:20:58 -08:00
Dane Everitt
66b6f40b61
Fix import cycle issue
2021-01-17 21:05:51 -08:00
Dane Everitt
7dd0acebc0
Initial untested pass at restoring from local backups
2021-01-16 18:06:22 -08:00
Dane Everitt
2968ea3498
Modify stat to embed os.FileInfo differently and update file content reader
2021-01-16 12:03:55 -08:00
Dane Everitt
67ecbd667a
Minor improvements to logic around decompression
2021-01-16 11:48:30 -08:00
Dane Everitt
05c04c4350
Update remaining logic using viper
2021-01-14 20:19:28 -08:00
Dane Everitt
80faea3286
yoink viper back out of code, simplify some config logic
2021-01-14 20:11:01 -08:00
Dane Everitt
d45a159456
Fix tests
2021-01-12 20:07:00 -08:00
Dane Everitt
e9e70b6081
Better error handling; skip file when unarchiving
2021-01-10 17:01:41 -08:00
Dane Everitt
b10e4dd437
Better error handling for access to denylist files
2021-01-10 16:43:33 -08:00
Dane Everitt
2c1b211280
Add base idea for denying write access to certain files; ref pterodactyl/panel#569
2021-01-10 16:33:39 -08:00
Dane Everitt
b0fa9619de
debug
2021-01-10 15:09:33 -08:00
Dane Everitt
c228acaafc
Massive refactor of SFTP system now that it is deeply integrated with Wings
2021-01-10 14:25:39 -08:00
Jakob Schrettenbrunner
8192244fec
replace servers.servers singleton with server.Manager
2021-01-10 02:37:02 +01:00
Jakob Schrettenbrunner
648072436f
organize imports with gopls format
2021-01-10 01:22:39 +00:00
Matthew Penner
66c9be357c
Potential fix for servers being marked as stopping after being marked as offline
2021-01-07 19:32:15 -07:00