41 lines
758 B
Go
41 lines
758 B
Go
|
|
package config
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os"
|
||
|
|
|
||
|
|
"gopkg.in/yaml.v3"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Config struct {
|
||
|
|
ServerAddress string `yaml:"server_address"`
|
||
|
|
AgentID string `yaml:"agent_id"`
|
||
|
|
HeartbeatInterval int `yaml:"heartbeat_interval"`
|
||
|
|
TLSEnabled bool `yaml:"tls_enabled"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func Load(path string) (*Config, error) {
|
||
|
|
cfg := &Config{
|
||
|
|
ServerAddress: "localhost:5001",
|
||
|
|
HeartbeatInterval: 60,
|
||
|
|
}
|
||
|
|
data, err := os.ReadFile(path)
|
||
|
|
if err != nil {
|
||
|
|
if os.IsNotExist(err) {
|
||
|
|
return cfg, nil
|
||
|
|
}
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
if err := yaml.Unmarshal(data, cfg); err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return cfg, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (c *Config) Save(path string) error {
|
||
|
|
data, err := yaml.Marshal(c)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
return os.WriteFile(path, data, 0600)
|
||
|
|
}
|