blocky/config/hosts_file.go

50 lines
1.3 KiB
Go

package config
import (
. "github.com/0xERR0R/blocky/config/migration"
"github.com/0xERR0R/blocky/log"
"github.com/sirupsen/logrus"
)
type HostsFile struct {
Sources []BytesSource `yaml:"sources"`
HostsTTL Duration `yaml:"hostsTTL" default:"1h"`
FilterLoopback bool `yaml:"filterLoopback"`
Loading SourceLoading `yaml:"loading"`
// Deprecated options
Deprecated struct {
RefreshPeriod *Duration `yaml:"refreshPeriod"`
Filepath *BytesSource `yaml:"filePath"`
} `yaml:",inline"`
}
func (c *HostsFile) migrate(logger *logrus.Entry) bool {
return Migrate(logger, "hostsFile", c.Deprecated, map[string]Migrator{
"refreshPeriod": Move(To("loading.refreshPeriod", &c.Loading)),
"filePath": Apply(To("sources", c), func(value BytesSource) {
c.Sources = append(c.Sources, value)
}),
})
}
// IsEnabled implements `config.Configurable`.
func (c *HostsFile) IsEnabled() bool {
return len(c.Sources) != 0
}
// LogConfig implements `config.Configurable`.
func (c *HostsFile) LogConfig(logger *logrus.Entry) {
logger.Infof("TTL: %s", c.HostsTTL)
logger.Infof("filter loopback addresses: %t", c.FilterLoopback)
logger.Info("loading:")
log.WithIndent(logger, " ", c.Loading.LogConfig)
logger.Info("sources:")
for _, source := range c.Sources {
logger.Infof(" - %s", source)
}
}