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
1e52ffef64
Fix panic condition when no response is returned
2022-01-31 18:37:02 -05:00
Dane Everitt
7ee6c48fb0
Use a more efficient logging format for containers
...
JSON has a huge amount of overhead from Docker when we're trying to process large amounts of log data. It makes more sense to just use a better format.
2022-01-30 19:51:23 -05:00
Dane Everitt
c4ee82c4dc
Code cleanup, providing better commentary to decisions
2022-01-30 12:56:25 -05:00
Matthew Penner
136540111d
docker: attach to container before starting
2022-01-24 19:01:33 -07:00
Dane Everitt
34ecf20467
Re-implement ContainerInspect call in Wings to use more performant json encoder ( #119 )
...
* First pass at re-implementing the Docker inspect call to use more efficient json parser
* Improve logic
2022-01-23 14:13:49 -08: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
Noah van der Aa
13a9ee9474
Use GID from config for container ( #106 )
2022-01-19 17:05:53 -08: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
Dane Everitt
d9ebf693e0
Make uptime available in the stat output for a container
2021-10-03 12:59:03 -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
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
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
e0078eee0a
[security] enforce process limits at a per-container level to avoid abusive clients impacting other instances
2021-06-20 16:54:00 -07:00
Dane Everitt
da74ac8291
Trim "~" from container prefix; closes pterodactyl/panel#3310
2021-05-02 11:00:10 -07:00
Dane Everitt
4c3b497652
Better error handling and reporting for image pull errors
2021-04-03 12:52:32 -07:00
Dane Everitt
5f5b2bc84e
Quick little code cleanup and adding some commentary
2021-03-07 17:31:45 -08:00
Dane Everitt
37c6b85489
Don't throw back errors on termination if the container doesn't exist; closes pterodactyl/panel#3149
2021-03-07 17:24:45 -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
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
ba6cec9615
Merge branch 'dane/backup-restore' into develop
2021-01-30 18:51:35 -08:00
Dane Everitt
225f8aa904
Support some additional signal types for stopping a server; ref pterodactyl/panel#3042
2021-01-28 21:26:02 -08:00
Dane Everitt
5021ea6a86
Code cleanup unrelated to changes for backup restoration
2021-01-18 21:27:00 -08:00
Dane Everitt
05c04c4350
Update remaining logic using viper
2021-01-14 20:19:28 -08:00
Dane Everitt
044c46fc9a
Merge branch 'develop' of https://github.com/pterodactyl/wings into develop
2021-01-08 21:21:37 -08:00
Dane Everitt
c9d972d544
Revert usage of ContainerWait, return to io.Copy blocking
...
Until https://github.com/moby/moby/issues/41827 is resolved this code causes chaos to unfold on machines and causes servers to be non-terminatable.
This logic was intially changed to logical purposes, but this io.Copy logic works perfectly fine (even if not immediately intuitive).
2021-01-08 21:21:09 -08:00
Matthew Penner
0aab4b1ac2
environment(docker): re-attach to container logs after EOF
2021-01-08 08:19:33 -07:00
Matthew Penner
4f4b4fd2e6
environment(docker): cleanup code
2021-01-08 08:15:40 -07: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
Dane Everitt
1937d0366d
cleanup; fix environment stats not reporting network TX correctly
2021-01-06 20:47:44 -08:00
Dane Everitt
963a906c30
Less obtuse logic for polling resource usage when attaching a container
2021-01-06 20:36:29 -08:00
Matthew Penner
a4c8b8714b
Bump all dependencies
2020-12-27 11:49:08 -07:00
Dane Everitt
1ba3631cc1
Don't follow if there is an error
2020-12-25 17:09:35 -08:00
Dane Everitt
94d41bc1f5
Use the system.ScanReader function to replace this logic
2020-12-25 17:07:57 -08:00
Dane Everitt
a4c68eed16
Use sync.Once here to instantiate the event handler
2020-12-25 17:07:40 -08:00
Dane Everitt
59c30c2842
Fix use of atomics in codebase
2020-12-25 17:04:18 -08:00
Matthew Penner
5c78cb9ab3
Add transfer logging output ( #77 )
...
Co-authored-by: Dane Everitt <dane@daneeveritt.com>
2020-12-25 13:32:41 -08:00
Dane Everitt
c0523df696
Add a server context that gets canceled when a server is deleted
2020-12-25 11:21:09 -08:00
Dane Everitt
3495fb1c76
Less racey logic for resource usage
2020-12-16 22:03:35 -08:00
Dane Everitt
59a111de39
Invite our lord and savior emperror back to the table
2020-12-15 21:56:53 -08:00
Yannick Schinko
c253a4bac0
Explictily disable log compression
...
Log compression is only relevant when `max-file` is 2 or higher.
Older versions of docker (Docker version 19.03.14, build 5eb3275d40 for example (currently the latest version on Debian 9)) error out when compression is enabled in the ``/etc/docker/daemon.json`` file:
```
Error response from daemon: failed to initialize logging driver: compress cannot be true when max-file is less than 2 or max-size is not set
```
While newer docker versions just don't care setting this explicitly to false like in ``intsall.go``, it doesn't hurt being explicit here:
de51fd1c51/server/install.go (L481-L485)
2020-12-12 00:51:11 +01:00
Matthew Penner
de51fd1c51
Error handling improvements ( #71 )
...
* Remove `emperror.dev/errors`, remove all `errors#Wrap` and `errors#WithStack` calls
* Improve logging in `server/backup.go`
2020-11-28 16:57:10 -07:00
Dane Everitt
e2872e786e
Tiny optimization for handling string output from server console
2020-11-12 21:41:35 -08:00
Dane Everitt
672fb860ea
Don't add a stack for deadline exceeded when terminating
2020-11-12 20:50:15 -08:00
Dane Everitt
ffb6bd72ef
Don't accidentally reset a server's state when starting it after a system reboot; closes pterodactyl/panel#2695
2020-11-10 21:21:20 -08:00
Dane Everitt
34349d4b48
Don't report a context cancelation as an error
2020-11-10 20:36:40 -08:00
Dane Everitt
be9d1a3986
Replace error handling package with emperror; add better reporting for errors escaping server root
2020-11-08 13:52:20 -08:00