FlexDXCluster/config.go
2024-09-26 12:24:56 +07:00

75 lines
1.2 KiB
Go

package main
import (
"fmt"
"os"
"gopkg.in/yaml.v2"
)
var (
Cfg *Config
)
type Config struct {
SQLite struct {
SQLitePath string `yaml:"sqlite_path"`
Callsign string `yaml:"callsign"`
} `yaml:"sqlite"`
Cluster struct {
Server string `yaml:"server"`
Port string `yaml:"port"`
Login string `yaml:"login"`
Skimmer bool `yaml:"skimmer"`
FT8 bool `yaml:"ft8"`
} `yaml:"cluster"`
Flex struct {
IP string `yaml:"ip"`
SpotLife string `yaml:"spot_life"`
} `yaml:"flex"`
Clublog struct {
Api string `yaml:"api"`
} `yaml:"clublog"`
Telnet struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
} `yaml:"telnet"`
HTTPServer struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
} `yaml:"httpserver"`
}
func NewConfig(configPath string) error {
config := &Config{}
file, err := os.Open(configPath)
if err != nil {
return err
}
defer file.Close()
d := yaml.NewDecoder(file)
if err := d.Decode(&config); err != nil {
return err
}
Cfg = config
return nil
}
func ValidateConfigPath(path string) error {
s, err := os.Stat(path)
if err != nil {
return err
}
if s.IsDir() {
return fmt.Errorf("'%s' is a directory, not a normal file", path)
}
return nil
}