2020-07-19 23:27:55 +00:00
|
|
|
package server
|
|
|
|
|
|
|
|
import (
|
2020-08-11 04:38:42 +00:00
|
|
|
"github.com/pterodactyl/wings/environment"
|
2020-07-19 23:27:55 +00:00
|
|
|
"sync"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Configuration struct {
|
|
|
|
mu sync.RWMutex
|
|
|
|
|
|
|
|
// The unique identifier for the server that should be used when referencing
|
|
|
|
// it against the Panel API (and internally). This will be used when naming
|
|
|
|
// docker containers as well as in log output.
|
|
|
|
Uuid string `json:"uuid"`
|
|
|
|
|
|
|
|
// Whether or not the server is in a suspended state. Suspended servers cannot
|
|
|
|
// be started or modified except in certain scenarios by an admin user.
|
|
|
|
Suspended bool `json:"suspended"`
|
|
|
|
|
|
|
|
// The command that should be used when booting up the server instance.
|
|
|
|
Invocation string `json:"invocation"`
|
|
|
|
|
2020-08-30 16:41:14 +00:00
|
|
|
// By default this is false, however if selected within the Panel while installing or re-installing a
|
|
|
|
// server, specific installation scripts will be skipped for the server process.
|
|
|
|
SkipEggScripts bool `default:"false" json:"skip_egg_scripts"`
|
|
|
|
|
2020-07-19 23:27:55 +00:00
|
|
|
// An array of environment variables that should be passed along to the running
|
|
|
|
// server process.
|
2020-08-11 04:38:42 +00:00
|
|
|
EnvVars environment.Variables `json:"environment"`
|
2020-07-19 23:27:55 +00:00
|
|
|
|
2020-08-11 04:38:42 +00:00
|
|
|
Allocations environment.Allocations `json:"allocations"`
|
|
|
|
Build environment.Limits `json:"build"`
|
|
|
|
CrashDetectionEnabled bool `default:"true" json:"enabled" yaml:"enabled"`
|
|
|
|
Mounts []Mount `json:"mounts"`
|
|
|
|
Resources ResourceUsage `json:"resources"`
|
2020-07-19 23:27:55 +00:00
|
|
|
|
|
|
|
Container struct {
|
|
|
|
// Defines the Docker image that will be used for this server
|
|
|
|
Image string `json:"image,omitempty"`
|
|
|
|
} `json:"container,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Server) Config() *Configuration {
|
|
|
|
s.cfg.mu.RLock()
|
|
|
|
defer s.cfg.mu.RUnlock()
|
|
|
|
|
|
|
|
return &s.cfg
|
|
|
|
}
|
|
|
|
|
2020-09-25 04:18:10 +00:00
|
|
|
// Returns the amount of disk space available to a server in bytes.
|
2020-08-28 04:08:33 +00:00
|
|
|
func (s *Server) DiskSpace() int64 {
|
|
|
|
s.cfg.mu.RLock()
|
|
|
|
defer s.cfg.mu.RUnlock()
|
|
|
|
|
2020-09-25 04:18:10 +00:00
|
|
|
return s.cfg.Build.DiskSpace * 1000.0 * 1000.0
|
2020-08-28 04:08:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Server) MemoryLimit() int64 {
|
|
|
|
s.cfg.mu.RLock()
|
|
|
|
defer s.cfg.mu.RUnlock()
|
|
|
|
|
|
|
|
return s.cfg.Build.MemoryLimit
|
|
|
|
}
|
|
|
|
|
2020-07-20 00:46:39 +00:00
|
|
|
func (c *Configuration) GetUuid() string {
|
|
|
|
c.mu.RLock()
|
|
|
|
defer c.mu.RUnlock()
|
|
|
|
|
|
|
|
return c.Uuid
|
|
|
|
}
|
|
|
|
|
2020-07-19 23:27:55 +00:00
|
|
|
func (c *Configuration) SetSuspended(s bool) {
|
|
|
|
c.mu.Lock()
|
|
|
|
c.Suspended = s
|
|
|
|
c.mu.Unlock()
|
|
|
|
}
|