package configuration import ( "os" "strings" "github.com/pkg/errors" "gopkg.in/yaml.v3" ) // Configuration holds a list of process names to be tracked and a listen address. type Configuration struct { ListenOn string `yaml:"listen_on"` HashSalt string `yaml:"hash_salt"` WebDir string `yaml:"web_dir"` LogDir string `yaml:"log_dir"` Uploads struct { Directory string `yaml:"directory"` Limits struct { FileSize int64 `yaml:"file_size"` KeepForHours int `yaml:"keep_for_hours"` Storage int64 `yaml:"storage"` } `yaml:"limits"` } `yaml:"uploads"` } func LoadConfiguration(path string) (*Configuration, error) { configFile, err := os.Open(path) if err != nil { return nil, errors.Wrap(err, "failed to open configuration file") } config := &Configuration{} if err := yaml.NewDecoder(configFile).Decode(config); err != nil { return nil, errors.Wrap(err, "failed to decode configuration file") } return config, nil } func (c *Configuration) SplitNetworkAddress() (n string, a string) { s := strings.Split(c.ListenOn, " ") n, a = s[0], s[1] return n, a }