package config import ( "fmt" "os" "gopkg.in/yaml.v3" ) type ServiceConfig struct { Name string `yaml:"name"` Type string `yaml:"type"` Path *string `yaml:"path"` } type AgentConfig struct { BackendURL string `yaml:"backend_url"` GRPCURL string `yaml:"grpc_url"` RegistrationToken string `yaml:"registration_token"` Label string `yaml:"label"` CertDir string `yaml:"cert_dir"` Services []ServiceConfig `yaml:"services"` MonitorDocker bool `yaml:"monitor_docker"` MonitorKubernetes bool `yaml:"monitor_kubes"` KubernetesNamespace *string `yaml:"kubernetes_namespace"` } func Load(path string) (*AgentConfig, error) { data, err := os.ReadFile(path) if err != nil { return nil, err } var cfg AgentConfig if err := yaml.Unmarshal(data, &cfg); err != nil { return nil, err } if cfg.CertDir == "" { cfg.CertDir = "/etc/hellreign-agent/certs" } return &cfg, nil } func LoadFromString(data string) (*AgentConfig, error) { var cfg AgentConfig if err := yaml.Unmarshal([]byte(data), &cfg); err != nil { return nil, err } return &cfg, nil } func validateConfigPath(path string) error { if _, err := os.Stat(path); err != nil { return fmt.Errorf("config file not found: %w", err) } return nil }