72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
/*
|
|
* AC Configuration Factory
|
|
*/
|
|
|
|
package factory
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/asaskevich/govalidator"
|
|
"github.com/davecgh/go-spew/spew"
|
|
|
|
"ac/internal/logger"
|
|
)
|
|
|
|
const (
|
|
AcDefaultConfigPath = "/usr/local/etc/ac/ac.yaml"
|
|
CapwapDefaultPort = 5246
|
|
MqttDefaultPort = 5247
|
|
)
|
|
|
|
type Config struct {
|
|
DebugLevel string `yaml:"debugLevel" valid:"required,in(trace|debug|info|warn|error|fatal|panic)"`
|
|
CapwapAddr string `yaml:"capwapAddr,omitempty" valid:"required,host"`
|
|
sync.RWMutex
|
|
}
|
|
|
|
func (c *Config) Validate() (bool, error) {
|
|
if _, err := govalidator.ValidateStruct(c); err != nil {
|
|
return false, appendInvalid(err)
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
func appendInvalid(err error) error {
|
|
var errs govalidator.Errors
|
|
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
|
|
es := err.(govalidator.Errors).Errors()
|
|
for _, e := range es {
|
|
errs = append(errs, fmt.Errorf("Invalid %w", e))
|
|
}
|
|
|
|
return error(errs)
|
|
}
|
|
|
|
func (c *Config) Print() {
|
|
spew.Config.Indent = "\t"
|
|
str := spew.Sdump(c)
|
|
logger.CfgLog.Infof("==================================================")
|
|
logger.CfgLog.Infof("%s", str)
|
|
logger.CfgLog.Infof("==================================================")
|
|
}
|
|
|
|
func (c *Config) SetLogLevel(level string) {
|
|
c.Lock()
|
|
defer c.Unlock()
|
|
|
|
c.DebugLevel = level
|
|
}
|
|
|
|
func (c *Config) GetLogLevel() string {
|
|
c.RLock()
|
|
defer c.RUnlock()
|
|
return c.DebugLevel
|
|
}
|